Workflow syntax

syntax 설명
name 워크플로우 이름
on Required . 워크플로우가 트리거될 조건
on.<event_name>.types 워크플로우가 트리거되는 이벤트의 이름과 세부 타입
예: <pre> on:
release:
- types: [published, created, edited] </pre>
on.<push \| pull_request>.<branches \| tags> pushpull_reques 이벤트에 대해 적용할 브랜치와 tag 설정
<pre> on:
push:
branches:
- main
- ‘mona/octocat’
- ‘releases/**’
tags:
- v1
- v1.* </pre> - branches-ignore: 제외할 브랜치
- tags-ignore: 제외할 tag
- 브랜치와 tag이름에 **사용, ‘!’ negative 패턴 <pre> - branches:
- ‘releases/**’
- ‘!releases/**-alpha’ </pre>
on.<push\|pull_request>.paths paths/paths-ignore : 적용할 패스와 제외할 패스
on.schedule 워크 플로우 트리거 스케쥴지정 (cron)
env 워크플로우 내 모든 job들에서 사용 가능한 환경 변수
defaults 워크플로우 내 모든 job들에 적용할 default 세팅
defaults.run 디폴트로 사용할 shellworking-directory 설정 <pre> default:
run:
shell: bash
working-directory: scripts </pre>
concurrency 같은 concurrency 그룹을 사용하는 워크플로우나 job이 동시에 하나만 실행
<pre>- concurrency: ci-$
- concurrency: staging_environment
- concurrency:
group: $
cancel-in-progress: true </pre>
jobs.<job_id>.needs 워크 플로우내 job들은 기본적으로 동시에 실행되나, ‘needs’를 이용해 순차적으로 실행
jobs.runs-on Required 실행될 러너
jobs.environment Job이 참조하는 environment. ‘environment protection rule’에 의해 보호되기 위해 지정하는 environment
jobs.<job_id>.concurrency 동일한 concurrency group에 있는 job은 동시에 하나의 job만 수행되도록 함
jobs.<job_id>.outputs Job의 아웃풋. needs 키워드로 이 Job에 의존하는 모든 다운스트림 job들이 사용가능 <pre> jobs:
job1:
runs-on: ubuntu-latest
# Map a step output to a job output
outputs:
output1: $
output2: $
steps:
- id: step1
run: echo “::set-output name=test::hello”
- id: step2
run: echo “::set-output name=test::world”
job2:
runs-on: ubuntu-latest
needs: job1
steps:
- run: echo $ $
jobs.<job_id>.env job내에 모든 step들에 사용가능한 환경변수
jobs.<job_id>.defaults job내에 모든 step들에 적용되는 default 세팅
jobs.<job_id>.defaults.run ‘run’ 스텝에 디폴트 shellworking-directory 설정
jobs.<job_id>.if if 컨디션을 통해 조건이 충족되지 못할 경우 job의 실행을 방지
if조건의 표현식에서 연산자가 없다면 $ 사용하지 않아도 됨.
jobs.<job_id>.uses step에서 실행할 action
- {owner}/{repo}@{ref}
- {owner}/{repo}/{path}@{ref}
- ./path/to/dir
- docker://{image}:{tag}
- docker://{host}/{image}:{tag}
jobs.<job_id>.steps job내에 순차적으로 실행되는 steps
jobs.<job_id>.steps[*].if if 컨디션을 통해 조건이 충족되지 못할 경우 step의 실행을 방지
if조건의 표현식에서 연산자가 없다면 $ 사용하지 않아도 됨. <pre> steps:
- name: My first step
if: $
run: echo This event is a pull request that had an assignee removed.
jobs.<job_id>.steps[*].run - \| : 멀티라인 명령어
- working-directory:
- shell: 사용할 특정 shell 지정
jobs.<job_id>.steps[*].with 환경 변수로 정의된 인풋 파라미터의 사용. 각 인풋 파라미터는 key/value pair <pre> jobs:
my_first_job:
steps:
- name: My first step
uses: actions/hello_world@main
with:
first_name: Mona
middle_name: The
last_name: Octocat </pre>
jobs.<job_id>.steps[*].with.args 도커 컨테이너를 위한 인풋을 정의하는 string. GitHub은 args를 컨테이너 시작시 ENTRYPOINT로 전달. <pre> steps:
- name: Explain why this job ran
uses: monacorp/action-name@main
with:
entrypoint: /bin/echo
args: The $ event triggered this step.</pre>
jobs.<job_id>.steps[*].with.entrypoint Dokerfile내에 ENTRYPOINT를 덮어씀, 또는 ENTRYPOINT로 설정되지 않았으면 설정.
jobs.<job_id>.steps[*].env 러너 환경에서 사용할 수 있도록 step을 위한 환경변수 설정
jobs.<job_id>.steps[*].continue-on-error step이 실패해도 job이 계속 실행하도록 설정 : true
jobs.<job_id>.steps[*].timeout-minutes 프로세스를 kill하기 전에 step을 실행할 최대 시간 (분)
jobs.<job_id>.timeout-minutes 취소될 때 까지 job을 실행할 최대 시간 (분) Default: 360분
jobs.<job_id>.strategy job에 대한 build matrix 지정
jobs.<job_id>.strategy.matrix job에 대한 다양한 조합의 build matrix. <pre>strategy:
matrix:
node: [10, 12, 14]
steps:
# Configures the node version used on GitHub-hosted runners
- uses: actions/setup-node@v2
with:
# The Node.js version to configure
node-version: $ </pre>
jobs.<job_id>.strategy.fail-fast matrix job중에 어느 하나가 fail되면 모든 진행중인 job을 취소: Default true
jobs.<job_id>.strategy.max-parallel matrix job을 동시에 실행할 수 있는 최대 job수
jobs.<job_id>.continue-on-error job이 fail되어도 워크플로우 계속 실행.
예를 들어, 실험적인 job이 node: 15 에서 fail되어도 워크플로우는 계속 실행되도록 설정하려면 <pre>runs-on: $
continue-on-error: $
strategy:
fail-fast: false
matrix:
node: [13, 14]
os: [macos-latest, ubuntu-18.04]
experimental: [false]
include:
- node: 15
os: ubuntu-18.04
experimental: true </pre>
jobs.<job_id>.container job에서 step들을 실행할 컨테이너 설정. container를 설정하지 않으면 모든 step들은 runs-on에서 설정된 러너 환경에서 실행됨.
If you have steps that use both script and container actions, the container actions will run as sibling containers on the same network with the same volume mounts. <pre>jobs:
my_job:
container:
image: node:14.16
env:
NODE_ENV: development
ports:
- 80
volumes:
- my_docker_volume:/volume_mount
options: –cpus 1 </pre>
jobs.<job_id>.container.image 컨테이너 이미지
jobs.<job_id>.container.credentials 컨테이너 이미지의 레지스트리가 인증이 필요하다면 사용할 credential : username, password
jobs.<job_id>.container.env 컨테이너 환경변수
jobs.<job_id>.container.ports 컨테이너 포트
jobs.<job_id>.container.volumes 컨테이너 볼륨 array
jobs.<job_id>.container.options 추가적인 도커 컨테이너 리소스 옵션
jobs.<job_id>.services ‘Service container’를 host하기 위한 선언 * 만약, 워크플로우가 도커 컨테이너 Action, 또는 service 컨테이너 action을 사용한다면, Linux러너를 사용해야 함
jobs.<job_id>.services.<service_id>.image 서비스 컨테이너로 사용할 도커 컨테이너 이미지
jobs.<job_id>.services.<service_id>.credentials 이미지 컨테이너 레지스트의 인증을 위한 credential : username, password
jobs.<job_id>.services.<service_id>.env 서비스 컨테이너에 환경변수
jobs.<job_id>.services.<service_id>.ports 서비스 컨테이너에 노출되는 포트 array
jobs.<job_id>.services.<service_id>.volumes 서비스 컨테이너가 사용할 볼륨 array
jobs.<job_id>.services.<service_id>.options 추가적인 도커 컨테이너 리소스 옵션

GitHub Enterprise의 다양한 기능설명을 위한 웹페이지입니다.

Last Modified Date: $LAST_MODIFIED_DATE$