A GitLab CI ready image to upgrade services in Rancher. See the whole story on our blog at code.kiwi.com!
RANCHER_ACCESS_KEY
and RANCHER_SECRET_KEY
.RANCHER_URL
and RANCHER_ENV_ID
,
preferably in secret variables, or in .gitlab-ci.yml
.
(In the example URL https://rancher.example.com/env/1a81/apps/stacks/1e551/services/1s1456/containers
the environment ID is 1a81
. This ID always starts with 1a
.)Add something like this to your .gitlab-ci.yml
:
stages:
# [...]
- deploy
deploy-production:
stage: deploy
image: kiwicom/crane:3.2.1
script:
- crane --stack my-app --service api --service worker
environment:
name: production
url: https://my-app.example.com/
when: manual
CLI flag | Environment variable | Required | Default |
---|---|---|---|
--url |
RANCHER_URL |
Yes | |
--access-key |
RANCHER_ACCESS_KEY |
Yes | |
--secret-key |
RANCHER_SECRET_KEY |
Yes | |
--env |
RANCHER_ENV_ID |
Yes | |
--stack |
RANCHER_STACK_NAME |
Yes | |
--new-commit |
CRANE_NEW_COMMIT |
No | HEAD |
--new-image |
CRANE_NEW_IMAGE |
No | None |
--service |
RANCHER_SERVICE_NAME |
No | app |
--sidekick |
RANCHER_SIDEKICK_NAME |
No | None |
--batch-size |
CRANE_BATCH_SIZE |
No | 1 |
--batch-interval |
CRANE_BATCH_INTERVAL |
No | 2 |
--start-first |
CRANE_START_FIRST |
No | False |
--sleep-after-upgrade |
CRANE_SLEEP_AFTER_UPGRADE |
No | 0 |
--manual-finish |
CRANE_MANUAL_FINISH |
No | False |
When --slack-token
is set,
crane can post an announcement to --slack-channel
with details about the ongoing deployment.
You can use --slack-link
to add useful URLs to this announcements
such as Datadog dashboards, Sentry issues, or the project repository.
You can set --slack-channel
multiple times;
all channels will have the same annnouncement posted to them.
If you're setting the channel names via the environment variable,
separate them with a space.
CLI flag | Environment variable | Details |
---|---|---|
--slack-token |
CRANE_SLACK_TOKEN |
Slack API token |
--slack-channel |
CRANE_SLACK_CHANNEL |
Slack channels to announce in |
--slack-link |
CRANE_SLACK_LINK |
links to mention in Slack |
With --sentry-webhook
, crane can post release details to Sentry.
Release tracking is useful
to provide additional context to errors tracked in Sentry.
CLI flag | Environment variable | Details |
---|---|---|
--sentry-webhook |
CRANE_SENTRY_WEBHOOK |
Sentry release webhook URL |
If you set an API key with --datadog-key
,
Crane will post successful and failed releases to your Datadog event feed.
These events can then be marked on charts and displayed on dashboards.
CLI flag | Environment variable | Details |
---|---|---|
--datadog-key |
CRANE_DATADOG_KEY |
URLs to post release info to |
With the --webhook-url
option,
you can specify URLs that crane will send release info to,
in its own format.
One use for this is for analytics;
if somebody sets up a listener for these events,
they'll have the data needed to identify correlations
between releases and changes in user behavior or sales numbers.
CLI flag | Environment variable | Details |
---|---|---|
--webhook-url |
CRANE_WEBHOOK_URL |
URLs to post release info to |
--webhook-token |
CRANE_WEBHOOK_TOKEN |
Auth token for webhooks |