runner라고 불리운다.
작성한 코드는 runner에서 구동된다.
즉, 새로 push한 코드가 runner에 들어올 때, 해당 코드들로 원하는 자동화 툴을 만들 수 있다는 뜻이다.
action이란?
github에서 발생하는 event 기반으로 작동(action)하는 기능을 의미한다.
우선, Actions 카테고리로 가면 하단의 여러 보일러플레이트가 제공된다. yml코드를 처음부터 작성하는 것은 귀찮기 때문에 필요한 보일러플레이트를 사용하는 것도 좋은 방법이다.
노란색 형광표를 친 set up a workflow yourself를 누르면 직접 action을 생성할 수 있다.
yml파일 기반으로 작동한다.
name: action name
on:
push:
branches: [master, develop]
pull:
branches: [master]
jobs:
build:
runs-on: ubuntu-latest
steps:
#- uses: actions/checkout@v2
- name: Run pwd
run: pwd
- name: Run ls -al
run: ls -al
name: action의 이름을 붙이는 필드이다.
on: event Trigger이다.
> Event types Docs
jobs
build:
uses: 다른사람이 만들어둔 action(라이브러리)를 실행하고 싶을 때 사용
actions/checkout 추가하면 저장소를 clone 및 checkout하여 이후 step에서 사용할 수 있게 해줌.
runs-on: action이 구동되는 환경을 설정한다. ubuntu, mac os, window 등 사용 가능
steps: 실제로 벌어지는 일들은 steps에 작성
step은 name(step 이름)과 run(실제 동작 코드)로 구성된다.
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: "context"
env:
COMMIT_ID: ${{ github.sha }}
run: echo "Commit id => $COMMIT_ID"
name: Context testing
on: push
jobs:
dump_contexts_to_log:
runs-on: ubuntu-latest
steps:
- name: Dump GitHub context
id: github_context_step
run: echo '${{ toJSON(github) }}'
- name: Dump job context
run: echo '${{ toJSON(job) }}'
- name: Dump steps context
run: echo '${{ toJSON(steps) }}'
- name: Dump runner context
run: echo '${{ toJSON(runner) }}'
- name: Dump strategy context
run: echo '${{ toJSON(strategy) }}'
- name: Dump matrix context
run: echo '${{ toJSON(matrix) }}'
{
"token": "***",
"job": "dump_contexts_to_log",
"ref": "refs/heads/my_branch",
"sha": "c27d339ee6075c1f744c5d4b200f7901aad2c369",
"repository": "octocat/hello-world",
"repository_owner": "octocat",
"repositoryUrl": "git://github.com/octocat/hello-world.git",
"run_id": "1536140711",
"run_number": "314",
"retention_days": "90",
"run_attempt": "1",
"actor": "octocat",
"workflow": "Context testing",
"head_ref": "",
"base_ref": "",
"event_name": "push",
"event": {
...
},
"server_url": "https://github.com",
"api_url": "https://api.github.com",
"graphql_url": "https://api.github.com/graphql",
"ref_name": "my_branch",
"ref_protected": false,
"ref_type": "branch",
"secret_source": "Actions",
"workspace": "/home/runner/work/hello-world/hello-world",
"action": "github_step",
"event_path": "/home/runner/work/_temp/_github_workflow/event.json",
"action_repository": "",
"action_ref": "",
"path": "/home/runner/work/_temp/_runner_file_commands/add_path_b037e7b5-1c88-48e2-bf78-eaaab5e02602",
"env": "/home/runner/work/_temp/_runner_file_commands/set_env_b037e7b5-1c88-48e2-bf78-eaaab5e02602"
}