Github actions?
# Workflows name
name: learn-github-actions
# 워크플로 실행의 이름으로, 레포지토리 "Actions" 탭에 있는 워크플로 실행 목록에 표시.
run-name: $ is learning GitHub Actions
# Trigger Event
on: [push]
# (...실행될 jobs...)
Workflows
- 레포지토리의 .github/workflows 디렉터리에 정의되어 있으며, 여러 워크플로가 있을 수 있으며 각 워크플로는 서로 다른 작업을 수행할 수 있음
- 워크플로에는 순차적 또는 병렬로 실행될 수 있는 작업이 하나 이상 포함 되어야 함
- 이벤트에 의해 트리거될 때 실행되거나 수동으로 또는 정의된 일정에 따라 실행됨
- 다른 워크플로 내에서 워크플로를 참조 가능
Workflows trigger
- 워크플로의 레포지토리에서 발생하는 이벤트
- GitHub 외부에서 발생하고 GitHub에서 repository_dispatch 이벤트를 트리거하는 이벤트
- 예약된 시간
- 수동
Reusing workflows
- 최대 4개 수준의 워크플로를 연결할 수 있음
- 호출자 워크플로의 워크플로 수준에서 정의된 env 컨텍스트에서 설정된 환경 변수는 호출된 워크플로로 전파되지 않음.
- 대신 재사용 가능한 워크플로의 출력을 사용해야 함
# 호출될 워크플로
name: called-workflows
# 트리거 조건 / 워크플로 호출
on:
workflow_call:
# 호출자 워크플로에서 받을 값들
inputs:
caller-name:
required: true
type: string
# 호출자 워크플로
name: caller-workflows
on:
push:
branches:
- main
jobs:
call-workflow:
runs-on: ubuntu-latest
steps:
# 워크플로 호출
- name: Call Workflow
# 호출할 워크플로 path
uses: ./.github/workflows/called-workflows.yml
# 필요한 입력값 전달
with:
caller-name: 'caller-workflows'
Events
- 워크플로 실행을 트리거하는 활동
- Trigger Events
Jobs
- 같은 runner 에서 실행되는 워크플로 내의 각각의 단계
- 기본적으로 작업은 종속성이 없으며 서로 병렬로 실행, 작업이 다른 작업에 종속되면 종속 작업이 완료될 때까지 기다렸다가 실행
- 동일한 runner에서 실행되므로 데이터를 공유가능
변수 사용
name: Greeting on variable day
on:
workflow_dispatch
env:
DAY_OF_WEEK: Monday
jobs:
greeting_job:
runs-on: ubuntu-latest
env:
Greeting: Hello
steps:
- name: "Say Hello Mona it's Monday"run: echo "$Greeting $First_Name. Today is $DAY_OF_WEEK!"
env:
First_Name: Mona
Github Actions Secrets 사용
- 레포지토리에서 만든 변수를 워크플로에서 사용
jobs:
example-job:
runs-on: ubuntu-latest
steps:
- name: Retrieve secret
env:
super_secret: $
run: |
example-command "$super_secret"
종속 작업 만들기
needs
키워드를 사용하여 이 종속성 생성- 작업 중 하나가 실패하면 모든 종속 작업은 건너뜀
- 작업을 계속해야 하는 경우
if
조건문을 사용
jobs:
setup:
runs-on: ubuntu-latest
steps:
- run: ./setup_server.sh
build:
needs: setup
runs-on: ubuntu-latest
steps:
- run: ./build_server.sh
test:
needs: build
runs-on: ubuntu-latest
steps:
- run: ./test_server.sh
Actions
- 자주 사용되는 작업들을 제공해주는 애플리케이션
- GitHub Marketplace 에서 탐색 가능
steps:
- uses: actions/javascript-action@v1
Runners
- 워크플로가 트리거될 때 워크플로를 실행하는 서버
- GitHub는 워크플로를 실행하기 위한 Ubuntu Linux, Microsoft Windows 및 macOS 실행기를 제공
- 자체 실행기를 호스팅할 수 있음