Using Script Commands
This document introduces how to execute shell commands, call scripts in the repository, set environment variables, write output parameters, and mask sensitive information through run in steps.
When you need to execute shell commands, call scripts in the repository, set environment variables, or write output parameters in a step.
Prerequisites
runs-onis configured and you are familiar with the pre-installed tools on the Runner.- If executing scripts in the repository, you need to checkout the code first.
Quick Example
jobs:
build:
name: Build
runs-on: [ubuntu-latest, x64, small]
steps:
- uses: checkout
- name: Run build script
run: bash ./scripts/build.sh
Configuration Description
Execute Scripts in the Repository
Execute existing script files in the repository:
steps:
- uses: checkout
- name: Run build script
run: bash ./scripts/build.sh
Note: The script file may not have execution permissions. It is recommended to use
bash script.shor first runchmod +x script.sh.
Set Execution Permissions
steps:
- uses: checkout
- run: chmod +x ./scripts/build.sh
- run: ./scripts/build.sh
Write Step Output
Use the ATOMGIT_OUTPUT environment variable to write step output parameters:
steps:
- id: version
run: echo "version=1.0.0" >> "$ATOMGIT_OUTPUT"
- name: Use output
run: echo "${{ steps.version.outputs.version }}"
Set Environment Variables
Use the ATOMGIT_ENV environment variable to set environment variables visible to subsequent steps:
steps:
- name: Set env
run: echo "APP_VERSION=1.0.0" >> "$ATOMGIT_ENV"
- name: Use env
run: echo "version=$APP_VERSION"
Add PATH
Use ATOMGIT_PATH to add a path to the system PATH:
steps:
- name: Add custom tool to PATH
run: echo "/opt/custom-tools" >> "$ATOMGIT_PATH"
- name: Use custom tool
run: custom-tool --version
Mask Commands
Use ::add-mask:: to mask sensitive information in logs:
steps:
- name: Mask secret
run: |
echo "::add-mask::$MY_SECRET"
echo "The secret value is $MY_SECRET"
The value of $MY_SECRET in the log will be displayed as ***.
Multi-line Output
Use a delimiter when writing multi-line values to output or environment variables:
steps:
- id: multiline
run: |
EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
echo "content<<$EOF" >> "$ATOMGIT_OUTPUT"
echo "line1" >> "$ATOMGIT_OUTPUT"
echo "line2" >> "$ATOMGIT_OUTPUT"
echo "$EOF" >> "$ATOMGIT_OUTPUT"