Skip to content

Environment variables

General

Environment variables can be specified for pipeline steps using the environment: section:

steps:
  - name: 'step name'
    image: registry/repo/image:tag
    environment:
      MY_ENV_VAR: 'my_value'
    commands:
      - echo "$MY_ENV_VAR"

The environment section is not able to expand variables. If this is needed (e.g., to alter $PATH), the variable should be defined (and exported) in the commands section:

steps:
  - name: 'step name'
    image: registry/repo/image:tag
    commands:
      - export PATH=$PATH:/go

Info

${<variable>} expressions are subject to pre-processing of the YAML parser. If this is not desired, the variable must be escaped via $$, resulting in $${<variable>}.

String Substitution

String Operations

Bash string operations are supported to manipulate env vars. The manipulation happens before the variable substitution.

The table below lists supported actions including examples:

Variables:

  • VAR: VALUE
  • bar: bar
  • FOO: foo
  • VERSION: v1.0.0
  • FILE_TYPE: .tar.gz
Action Description Original lue Manipulated value
${VAR,} lowercase first character VALUE vALUE
${VAR,,} lowercase all characters VALUE value
${bar^} uppercase first character bar Bar
${bar^^} uppercase all characters bar BAR
${VAR:3} extract substring from position 3 to end VALUE LUE
${VAR:2:3} extract 3 characters starting from position 2 VALUE AL
${VAR=FOO} set default value if VAR is unset VALUE foo
${VERSION##v} remove longest matching prefix pattern `v1.0.0 1.0.0
${FILE_TYPE%%.gz} remove shortest matching suffix pattern .tar.gz .tar
${VAR/UE/AA} replace first occurrence of UE with II VALUE VALAA

Default environment variables

General

NAME Description Example
CI CI environment name crow
CI_WORKSPACE Workspace path where source code gets cloned to /crow/src/git.example.com/john-doe/my-repo
CI_REPO repo full name: <owner>/<name> john-doe/my-repo
CI_REPO_OWNER repo owner john-doe
CI_REPO_NAME repo name my-repo
CI_REPO_REMOTE_ID repo remote ID (= UID from forge) 82
CI_REPO_URL repo web URL https://git.example.com/john-doe/my-repo
CI_REPO_CLONE_URL repo clone URL https://git.example.com/john-doe/my-repo.git
CI_REPO_CLONE_SSH_URL repo SSH clone URL git@git.example.com:john-doe/my-repo.git
CI_REPO_DEFAULT_BRANCH repo default branch main
CI_REPO_PRIVATE repo is private true
CI_REPO_TRUSTED_NETWORK repo "trusted network access" false
CI_REPO_TRUSTED_VOLUMES repo "trusted volumes access" false
CI_REPO_TRUSTED_SECURITY repo "trusted security access" false

Current Commit

NAME Description Example
CI_COMMIT_SHA commit SHA eba09b46064473a1d345da7abf28b477468e8dbd
CI_COMMIT_REF commit ref refs/heads/main
CI_COMMIT_REFSPEC commit ref spec issue-branch:main
CI_COMMIT_BRANCH commit branch (equals target branch (CI_COMMIT_TARGET_BRANCH) for pull requests) main
CI_COMMIT_SOURCE_BRANCH commit source branch (set only for pull_request and pull_request_closed events) issue-branch
CI_COMMIT_TARGET_BRANCH commit target branch (set only for pull_request and pull_request_closed events) main
CI_COMMIT_TAG commit tag name (empty if event != tag) v1.10.3
CI_COMMIT_PULL_REQUEST commit pull request number (set only for pull_request and pull_request_closed events) 1
CI_COMMIT_PULL_REQUEST_LABELS labels assigned to pull request (set only for pull_request and pull_request_closed events) server
CI_COMMIT_MESSAGE commit message Initial commit
CI_COMMIT_AUTHOR commit author username john-doe
CI_COMMIT_AUTHOR_EMAIL commit author email address john-doe@example.com
CI_COMMIT_AUTHOR_AVATAR commit author avatar https://git.example.com/avatars/5dcbcadbce6f87f8abef
CI_COMMIT_PRERELEASE release is a pre-release (empty if event is not release) false

Current pipeline

NAME Description Example
CI_PIPELINE_NUMBER pipeline number 8
CI_PIPELINE_PARENT number of parent pipeline 0
CI_PIPELINE_EVENT pipeline event (see event) push, pull_request, pull_request_closed, tag, release, manual, cron
CI_PIPELINE_URL link to the web UI for the pipeline https://ci.example.com/repos/7/pipeline/8
CI_PIPELINE_FORGE_URL link to the forge's web UI for the commit(s) or tag that triggered the pipeline https://git.example.com/john-doe/my-repo/commit/eba09b46064473a1d345da7abf28b477468e8dbd
CI_PIPELINE_DEPLOY_TARGET pipeline deploy target for deployment events production
CI_PIPELINE_DEPLOY_TASK pipeline deploy task for deployment events migration
CI_PIPELINE_CREATED pipeline created UNIX timestamp 1722617519
CI_PIPELINE_STARTED pipeline started UNIX timestamp 1722617519
CI_PIPELINE_FILES changed files (empty if event is not push or pull_request), it is undefined if more than 500 files are touched [], [".crow.yml","README.md"]

Current workflow

NAME Description Example
CI_WORKFLOW_NAME workflow name release

Current step

NAME Description Example
CI_STEP_NAME step name build package
CI_STEP_NUMBER step number 0
CI_STEP_STARTED step started UNIX timestamp 1722617519
CI_STEP_URL UI URL for step https://ci.example.com/repos/7/pipeline/8

Previous commit

NAME Description Example
CI_PREV_COMMIT_SHA previous commit SHA 15784117e4e103f36cba75a9e29da48046eb82c4
CI_PREV_COMMIT_REF previous commit ref refs/heads/main
CI_PREV_COMMIT_REFSPEC previous commit ref spec issue-branch:main
CI_PREV_COMMIT_BRANCH previous commit branch main
CI_PREV_COMMIT_SOURCE_BRANCH previous commit source branch (set only for pull_request and pull_request_closed events) issue-branch
CI_PREV_COMMIT_TARGET_BRANCH previous commit target branch (set only for pull_request and pull_request_closed events) main
CI_PREV_COMMIT_URL previous commit link in forge https://git.example.com/john-doe/my-repo/commit/15784117e4e103f36cba75a9e29da48046eb82c4
CI_PREV_COMMIT_MESSAGE previous commit message test
CI_PREV_COMMIT_AUTHOR previous commit author username john-doe
CI_PREV_COMMIT_AUTHOR_EMAIL previous commit author email address john-doe@example.com
CI_PREV_COMMIT_AUTHOR_AVATAR previous commit author avatar https://git.example.com/avatars/12

Previous pipeline

NAME Description Example
CI_PREV_PIPELINE_NUMBER previous pipeline number 7
CI_PREV_PIPELINE_PARENT previous pipeline number of parent pipeline 0
CI_PREV_PIPELINE_EVENT previous pipeline event (see event) push, pull_request, pull_request_closed, tag, release, manual, cron
CI_PREV_PIPELINE_URL previous pipeline link in CI https://ci.example.com/repos/7/pipeline/7
CI_PREV_PIPELINE_FORGE_URL previous pipeline link to event in forge https://git.example.com/john-doe/my-repo/commit/15784117e4e103f36cba75a9e29da48046eb82c4
CI_PREV_PIPELINE_DEPLOY_TARGET previous pipeline deploy target for deployment events production
CI_PREV_PIPELINE_DEPLOY_TASK previous pipeline deploy task for deployment events migration
CI_PREV_PIPELINE_STATUS previous pipeline status success, failure
CI_PREV_PIPELINE_CREATED previous pipeline created UNIX timestamp 1722610173
CI_PREV_PIPELINE_STARTED previous pipeline started UNIX timestamp 1722610173
CI_PREV_PIPELINE_FINISHED previous pipeline finished UNIX timestamp 1722610383

System

NAME Description Example
CI_SYSTEM_NAME name of the CI system crow
CI_SYSTEM_URL link to CI system https://ci.example.com
CI_SYSTEM_HOST hostname of CI server ci.example.com
CI_SYSTEM_VERSION version of the server 2.7.0

Forge

NAME Description Example
CI_FORGE_TYPE name of forge bitbucket , bitbucket_dc , forgejo , gitea , github , gitlab
CI_FORGE_URL root URL of configured forge https://git.example.com

Internal

Important

Reserved for internal use. Do not use or overwrite!

NAME Description
CI_SCRIPT Internal script path. Used to call pipeline step commands.
CI_NETRC_USERNAME Credentials for private repos to be able to clone data. (Only available for specific images)
CI_NETRC_PASSWORD Credentials for private repos to be able to clone data. (Only available for specific images)
CI_NETRC_MACHINE Credentials for private repos to be able to clone data. (Only available for specific images)