[drone] DRONE_
and CI_
variable references must convert to a Harness expressions
#117
Labels
backlog
Investigate at a later date
drone
Drone conversion target
enhancement
New feature or request
Drone provides many variables that can be referenced in pipelines, see https://docs.drone.io/pipeline/environment/reference/ and https://github.com/drone/runner-go/blob/master/environ/environ.go
Harness CI does not support environment variables outside of shell command execution, so we must convert them to expressions.
Here is an example Drone pipeline:
This should convert to this v1 yaml:
Relevant Harness documentation:
We should convert
DRONE_
andCI_
variables surrounded by{}
and without.Where possible, we should reference
codebase.*
values, since they are always available to pipelines with a codebase defined.trigger.*
values are not available for manual pipeline executions.We need to make an effort to support Drone's substitution logic https://docs.drone.io/pipeline/environment/substitution/#string-operations
Drone variables can be escaped, see https://docs.drone.io/pipeline/environment/substitution/#escaping. This conversion should detect these escaped variables as well.
This table shows all
DRONE_
variables, the associated deprecatedCI_
variable (if applicable) and the equivalent Harness expression (if it is known).DRONE_
variableCI_
variableDRONE_BRANCH
n/a
<+codebase.branch>
DRONE_BUILD_ACTION
n/a
?
DRONE_BUILD_CREATED
CI_BUILD_CREATED
?
DRONE_BUILD_EVENT
CI_BUILD_EVENT
?
DRONE_BUILD_FINISHED
CI_BUILD_FINISHED
?
DRONE_BUILD_LINK
CI_BUILD_LINK
?
DRONE_BUILD_NUMBER
CI_BUILD_NUMBER
<+pipeline.sequenceId>
DRONE_BUILD_PARENT
n/a
?
DRONE_BUILD_STARTED
CI_BUILD_STARTED
?
DRONE_BUILD_STATUS
CI_BUILD_STATUS
?
DRONE_BUILD_TRIGGER
n/a
?
DRONE_CALVER
n/a
?
DRONE_COMMIT
n/a
?
DRONE_COMMIT_AFTER
n/a
?
DRONE_COMMIT_AUTHOR
CI_COMMIT_AUTHOR
<+codebase.gitUserId>
DRONE_COMMIT_AUTHOR_AVATAR
CI_COMMIT_AUTHOR_AVATAR
?
DRONE_COMMIT_AUTHOR_EMAIL
CI_COMMIT_AUTHOR_EMAIL
?
DRONE_COMMIT_AUTHOR_NAME
CI_COMMIT_AUTHOR_NAME
?
DRONE_COMMIT_BEFORE
n/a
?
DRONE_COMMIT_BRANCH
CI_COMMIT_BRANCH
<+codebase.branch>
DRONE_COMMIT_LINK
n/a
?
DRONE_COMMIT_MESSAGE
CI_COMMIT_MESSAGE
?
DRONE_COMMIT_REF
CI_COMMIT_REF
?
DRONE_COMMIT_SHA
CI_COMMIT_SHA
<+codebase.commitSha>
DRONE_DEPLOY_TO
n/a
?
DRONE_FAILED_STAGES
n/a
?
DRONE_FAILED_STEPS
n/a
?
DRONE_GIT_HTTP_URL
n/a
?
DRONE_GIT_SSH_URL
n/a
?
DRONE_PULL_REQUEST
n/a
<+codebase.prNumber>
DRONE_PULL_REQUEST_TITLE
n/a
<+codebase.prTitle>
DRONE_REMOTE_URL
CI_REMOTE_URL
<+codebase.repoUrl>
DRONE_REPO
CI_REPO
?
DRONE_REPO_BRANCH
n/a
?
DRONE_REPO_LINK
CI_REPO_LINK
?
DRONE_REPO_NAME
CI_REPO_NAME
<+<+codebase.repoUrl>.substring(<+codebase.repoUrl>.lastIndexOf('/') + 1)>"
DRONE_REPO_NAMESPACE
n/a
?
DRONE_REPO_OWNER
n/a
?
DRONE_REPO_PRIVATE
CI_REPO_PRIVATE
?
DRONE_REPO_SCM
n/a
?
DRONE_REPO_VISIBILITY
n/a
?
DRONE_SEMVER
n/a
?
DRONE_SEMVER_BUILD
n/a
?
DRONE_SEMVER_ERROR
n/a
?
DRONE_SEMVER_MAJOR
n/a
?
DRONE_SEMVER_MINOR
n/a
?
DRONE_SEMVER_PATCH
n/a
?
DRONE_SEMVER_PRERELEASE
n/a
?
DRONE_SEMVER_SHORT
n/a
?
DRONE_SOURCE_BRANCH
n/a
?
DRONE_STAGE_ARCH
n/a
?
DRONE_STAGE_DEPENDS_ON
n/a
?
DRONE_STAGE_FINISHED
n/a
?
DRONE_STAGE_KIND
n/a
?
DRONE_STAGE_MACHINE
n/a
?
DRONE_STAGE_NAME
n/a
?
DRONE_STAGE_NUMBER
n/a
?
DRONE_STAGE_OS
n/a
?
DRONE_STAGE_STARTED
n/a
?
DRONE_STAGE_STATUS
n/a
?
DRONE_STAGE_TYPE
n/a
?
DRONE_STAGE_VARIANT
n/a
?
DRONE_STEP_NAME
n/a
?
DRONE_STEP_NUMBER
n/a
?
DRONE_SYSTEM_HOST
n/a
?
DRONE_SYSTEM_HOSTNAME
n/a
?
DRONE_SYSTEM_PROTO
n/a
?
DRONE_SYSTEM_VERSION
n/a
?
DRONE_TAG
n/a
?
DRONE_TARGET_BRANCH
n/a
?
DRONE_WORKSPACE
n/a
?
The text was updated successfully, but these errors were encountered: