The following tutorial explains how to connect your continuous integration based on Travis to automatically publish new versions on the apps registry.
In this tutorial, we assume:
- you have a token allowing you to publish applications for your
editor
:AbCdEf
- you are working on a repository plugged on travis and named on github
cozy/cozy-example
You first need to add the token to your travis configuration file .travis.yml
.
To do so, you need the
travis
utility to
encrypt its value.
$ travis encrypt REGISTRY_TOKEN=AbCdEf --add -r cozy/cozy-example
Please add the following to your .travis.yml file:
secure: "jUAjkXNXfGIXyx2MKnnJ5HwCzhrQ29SaWBTmRpU6Rwi2XRieCnb2+MKZtjVcmEjfvJO38VjPozW2F4MYIxRXf9cD+ZRAEroZRcRSNHpoi/FJ6Ra767H7AbFDGpSSUSx7UDeZbSRNazCXJ55F/JaCq6F3XGeurrJbJ/tvMoIEvjg4qcOJpBgSxXEeyEnx5L3zbDoIqDo8hx9UtZoisiTC3TGq1CGFPe35VXnv/g23Uwg2Wux1drXXnMVghoVM8SDuoE9gf4LfppVHbYmowm25tylsvNKESbYiwJIkvPciPl2rABplJLJ4nuVpeWKHx1g+bChzlR5rhgXVJidua//yFD28xWS1+j+FhCGcYuPttYTntBVTiif0DVKS3gC1FFbf2ktgJVT7nYN2z0arhdPeK7Wtv8R+0SqlXUfBA/nam1pAS1xg2MTekVKxw+FmW0r6Ct4/Dta4d4XWsYiPMBrUOaCAqo+TkxBrVvM/LcM91ua33GKzMRLmKgbDY2k7lQpt3xA0Se02p4yiWcpN+3JzwVNRkuAQfw79ItJzhBP7ZTaQMwDByD/sN4ybhICWxTOLRh6kgfw+Xxv86aADvMVwfPcLljfk5Ot3kfLyaIyqrkIF9ePGSblt7RGzHiOECFr8qUtoGQAfekM+NmKzFSkeJU8t0EvHMen1NOsZhTemx9Q="
Like said, you need to add this block of ciphered data in the .travis.yml
.
This will allow you to use the REGISTRY_TOKEN
variable in your deployment
script.
Then you can adapt this script as your
after_deploy
or after_success
script.
It contains environment variables that you can adapt as your need:
COZY_APP_VERSION
: the version string of the deployed versionCOZY_APP_PARAMETERS
: an optional JSON object (string, object or array) that will parameterize the application on its execution.COZY_BUILD_URL
: the URL of the deployed tarball for your applicationCOZY_BUILD_BRANCH
: the name of the build branch from which the script creates dev releases
#!/bin/bash
set -e
# Environnment variables:
# COZY_APP_VERSION: the version string of the deployed version
# COZY_BUILD_URL: the URL of the deployed tarball for your application
# COZY_BUILD_BRANCH: the name of the build branch from which the script
# creates dev releases
[ -z "${COZY_BUILD_BRANCH}" ] && COZY_BUILD_BRANCH="master"
[ -z "${COZY_APP_PARAMETERS}" ] && COZY_APP_PARAMETERS="null"
if [ "${TRAVIS_PULL_REQUEST}" != "false" ]; then
echo "No deployment: in pull-request"
exit 0
fi
if [ "${TRAVIS_BRANCH}" != "${COZY_BUILD_BRANCH}" ] && [ -z "${TRAVIS_TAG}" ]; then
printf 'No deployment: not in %s branch nor tag (TRAVIS_BRANCH=%s TRAVIS_TAG=%s)\n' "${COZY_BUILD_BRANCH}" "${TRAVIS_BRANCH}" "${TRAVIS_TAG}"
exit 0
fi
if ! jq <<< "${COZY_APP_PARAMETERS}" > /dev/null; then
printf "Could not parse COZY_APP_PARAMETERS=%s as JSON\n" "${COZY_APP_PARAMETERS}"
exit 1
fi
if [ -z "${COZY_APP_VERSION}" ]; then
if [ -n "${TRAVIS_TAG}" ]; then
COZY_APP_VERSION="${TRAVIS_TAG}"
else
manfile=$(find "${TRAVIS_BUILD_DIR}" \( -name "manifest.webapp" -o -name "manifest.konnector" \) | head -n1)
COZY_APP_VERSION="$(jq -r '.version' < "${manfile}")-dev.${TRAVIS_COMMIT}"
fi
fi
if [ -z "${COZY_BUILD_URL}" ]; then
url="https://github.com/${TRAVIS_REPO_SLUG}/archive"
if [ -n "${TRAVIS_TAG}" ]; then
COZY_BUILD_URL="${url}/${TRAVIS_TAG}.tar.gz"
else
COZY_BUILD_URL="${url}/${TRAVIS_COMMIT}.tar.gz"
fi
fi
shasum=$(curl -sSL --fail "${COZY_BUILD_URL}" | shasum -a 256 | cut -d" " -f1)
printf 'Publishing version "%s" from "%s" (%s)\n' "${COZY_APP_VERSION}" "${COZY_BUILD_URL}\n" "${shasum}"
curl -sS --fail -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Token ${REGISTRY_TOKEN}" \
-d "{\"version\": \"${COZY_APP_VERSION}\", \"url\": \"${COZY_BUILD_URL}\", \"sha256\": \"${shasum}\", \"parameters\": ${COZY_APP_PARAMETERS}}" \
"https://registry.cozy.io/registry/versions"
In order to access to our official repository, you need a token for a specific
editor. To do so, concact us directly at the address contact@cozycloud.cc with a
mail using the following title prefix: [registry]
and precising the name of
the editor of your application.
We will provide you with the correct token.