GitHub Action plugin step settings
GitHub Actions is a GitHub feature that enables you to automate various event-driven activities in GitHub, such as cloning a repository, generating Docker images, and testing scripts. You can find over 10,000 GitHub Actions on the GitHub Marketplace or create your own Actions.
You can use the GitHub Action plugin step to run GitHub Actions in your Harness CI pipelines.
Currently, the GitHub Action plugin step is supported for the Harness Cloud build infrastructure only.
For other build infrastructures, you can use the generic Plugin step with the GitHub Actions Drone Plugin, as explained in Run GitHub Actions in CI pipelines.
Usage examples
In the following YAML examples, GitHub Action plugin steps are used to set up Node.js, Go, Java, and Ruby environments.
- Setup Node.js
- Setup Golang
- Setup Java
- Setup Ruby
This Action step uses the actions/setup-node
GitHub Action to set up a Node.js environment that the subsequent steps in the stage can use.
- step:
type: Action
name: setup nodejs
identifier: setup_nodejs
spec:
uses: actions/setup-[email protected]
with:
node-version: '16'
This Action step uses the actions/setup-go
GitHub Action to set up a Go environment that the subsequent steps in the stage can use. It specifies Go 1.17.
- step:
type: Action
name: setup golang
identifier: setup_go
spec:
uses: actions/setup-[email protected]
with:
go-version: '1.17'
This Action step uses the actions/setup-java
GitHub Action to set up a Java environment that the subsequent steps in the stage can use. It specifies Java 17.
- step:
type: Action
name: setup java
identifier: setup_java
spec:
uses: actions/setup-[email protected]
with:
java-version: '17'
This Action step uses the ruby/setup-ruby
GitHub Action to set up a Ruby environment that the subsequent steps in the stage can use. It specifies Ruby 2.7.2.
- step:
type: Action
name: setup ruby
identifier: setup_ruby
spec:
uses: ruby/setup-[email protected]
with:
ruby-version: '2.7.2'
Settings and specifications
- YAML editor
- Visual editor
To add a GitHub Action plugin step to your pipeline YAML, add an Action
step, for example:
- step:
type: Action
name: setup golang
identifier: setup_go
spec:
uses: actions/setup-[email protected]
with:
go-version: '1.17'
The spec
parameters define which Action to use, the Action settings, and environment variables that you need to pass to the Action. These are configured according to the GitHub Action's usage specifications.
uses:
Specify the Action's repo, along with a branch or tag, such asactions/[email protected]
.with:
If required by the Action, provide a mapping of key-value pairs representing Action settings, such asgo-version: '1.17'
.env:
If required by the Action, provide a mapping of environment variables to pass to the Action.
If you already configured GitHub Actions elsewhere, you can quickly transfer GitHub Actions into Harness CI by copying the spec
details from your existing GitHub Actions YAML.
You can use variable expressions in the with
and env
settings. For example, credentials: <+stage.variables.[TOKEN_SECRET]>
uses a stage variable.
YAML Example: Pipeline with an Action step
This pipeline uses a GitHub Action plugin step to install golang version 1.19.5. It then compiles the golang application and runs tests.
pipeline:
name: Build and test golang application
identifier: Build_test_golang
projectIdentifier: default
orgIdentifier: default
tags: {}
properties:
ci:
codebase:
connectorRef: Github_connector
build: <+input>
stages:
- stage:
name: Build golang application
identifier: Build_golang_application
description: ""
type: CI
spec:
cloneCodebase: true
platform:
os: Linux
arch: Amd64
runtime:
type: Cloud
spec: {}
execution:
steps:
- step:
type: Action
name: setup golang
identifier: setup_go
spec:
uses: actions/setup-[email protected]
with:
go-version: 1.19.5
- step:
type: Run
name: Build and test
identifier: Build_and_test
spec:
shell: Bash
command: |-
go build .
go test -v ./...
In the Visual editor, add the GitHub Action plugin step to your pipeline's Build stage, and then populate the settings. The Name and Uses fields are required.
Name
Enter a name summarizing the step's purpose. Harness automatically assigns an Id (Entity Identifier Reference) based on the Name. You can change the Id.
Description
Optional text string describing the step's purpose.
Uses
Specify the repo and branch or tag of the GitHub Action that you want to use, for example actions/[email protected]
. Refer to the GitHub Action's repo for information about branches and tags.
Settings
Found under Optional Configuration. If required by the Action, add key-value pairs representing GitHub Action settings. For example, you would specify go-version: '>=1.17.0'
by entering go-version
in the key field and >=1.17.0
in the value field.
Refer to the GitHub Action's with
usage specifications for details about specific settings available for the Action that you want to use.
Settings as a whole can be supplied as fixed values or runtime input, and individual setting values can be supplied as fixed values, runtime input, or expressions. Select the Thumbtack to change input types.
Environment Variables
Found under Optional Configuration. If required by the Action, add key-value pairs representing environment variables that you want to pass to the GitHub Action. For example, you would specify GITHUB_TOKEN: <+secrets.getValue("github_pat")>
by entering GITHUB_TOKEN
in the key field and <+secrets.getValue("github_pat")>
in the value field.
Refer to the GitHub Action's env
usage specifications for details about specific settings available for the Action that you want to use. Note that env
specifies incoming environment variables, which are separate from outgoing environment variables that may be output by the Action.
You can use fixed values, runtime input, or variable expressions for environment variable values. For example, <+stage.variables.[TOKEN_SECRET]>
is a stage variable. Select the Thumbtack to change input types.
Timeout
Found under Optional Configuration. Set the timeout limit for the step. Once the timeout limit is reached, the step fails and pipeline execution continues. To set skip conditions or failure handling for steps, go to:
Transfer GitHub Actions into Harness CI
If you already configured GitHub Actions elsewhere, you can copy the uses
, with
and env
lines from your GitHub Action YAML into the Action
step's spec
in your Harness CI pipeline YAML.
If you're using the Visual editor, you can transfer the data into the Uses, Settings, and Environment Variables fields.
The following table compares GitHub Action YAML with Harness CI Action step YAML. Notice the consistency of uses
, with
, and env
.
Github Action YAML | Harness CI Action step YAML |
|
|