SkillAgentSearch skills...

Crane

⬆ A GitLab CI ready image to upgrade services in Rancher

Install / Use

/learn @kiwicom/Crane
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

crane

crane logo - an origami crane

A GitLab CI ready image to upgrade services in Rancher. See the whole story on our blog at code.kiwi.com!

Python: 3.7 Code style: black Gitlab pipeline status (branch)

Usage

  1. Deploy your application on Rancher manually, with an image tagged with a git reference (our recommendation is to use the commit SHA, but you can also use git tags.)

  2. Get a Rancher Environment API key and add the API keypair as secret variables in the project, named RANCHER_ACCESS_KEY and RANCHER_SECRET_KEY.

  3. Also add 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.)

  4. 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
    

Settings

| 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 |

Integrations & Extensions

Slack

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 |

Sentry

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 |

Datadog

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 |

Generic webhooks

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 |

View on GitHub
GitHub Stars96
CategoryDevelopment
Updated4mo ago
Forks12

Languages

Python

Security Score

97/100

Audited on Nov 20, 2025

No findings