Ctrl K
ComunidadGuías…

docs/registry-publish.md

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
[Table of contents](README.md#table-of-contents)

# Apps registry publication

## Automate publication

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](https://github.com/travis-ci/travis.rb#installation) to
encrypt its value.

```sh
$ 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`](https://docs.travis-ci.com/user/customizing-the-build#The-Build-Lifecycle)
script.

It contains environment variables that you can adapt as your need:

-   `COZY_APP_VERSION`: the version string of the deployed version
-   `COZY_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 application
-   `COZY_BUILD_BRANCH`: the name of the build branch from which the script
    creates dev releases

```bash
#!/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"
```

## Access to our official apps registry

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 support@twake.app 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.