Search
Duplicate

github action

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Scrap
태그
9 more properties
공식 사이트
공식 문서
설정파일에 맞춰 workflow를 자동화 해줍니다.
workflow란? test code 실행 혹은 배포 등…
요렇게 Actions 탭에 들어가 시작할 수 있습니다.
Workflow 파일은 yml 확장자로 작성되며,
해당 레포지토리의 .github/workflows 폴더 아래에 저장됩니다.
Simple workflow의 Configure를 누르면 자동으로 주어지는 예시 파일
예시로 주어진 파일만 간단하게 분석해보기~!
설정 가능한 것들 (키워드):
name: CI # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the "main" branch push: branches: [ "main" ] pull_request: branches: [ "main" ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3 # Runs a single command using the runners shell - name: Run a one-line script run:
YAML
복사
더 많은 문서는 →→ "Configuring workflows."

workflow가 실행 될 조건 설정:

1.
push
main 및 release/* 브랜치에 push했을 때 실행될 workflow 설정
on: push: branches: - main # 브랜치 이름 - release/*
YAML
복사
2.
pull request
main 브랜치에 pull request했을 때 실행되게 할 workflow 설정
on: pull_request: branches: - main
YAML
복사
3.
schedule: 특정 시간마다 반복해 동작할 workflow 설정 (cron)
월요일부터 금요일까지 매일 2:00 (UTC)에 workflow가 실행되도록 설정
on: schedule: - cron: "0 2 * * 1-5"
YAML
복사
추가로 아래와 같이 TZ라는 env를 설정하면 시간대를 변경할 수 있다.
on: schedule: - cron: "0 2 * * 1-5" env: TZ: Asia/Seoul jobs: ...
YAML
복사
For more information, see "Events that trigger workflows."

수동 트리거

위 처럼 설정하면 push, pr, 혹은 특정 시간마다 job을 실행시킬 수 있지만, 수동으로 테스트가 필요한 경우도 있다.
workflow_dispatch
For more information, see "Manually running a workflow."

JOB!

여러 step으로 구성되어있으며, 의존 관계를 설정할 수 있습니다.
runs-on: 원하는 운영체제 위에서 실행시키기
Linux, Windows, macOS를 지원합니다.
jobs: my_job: name: deploy to staging runs-on: ubuntu-18.04
YAML
복사
가능한 종류:
ubuntu-latestubuntu-18.04, or ubuntu-16.04
windows-latest or windows-2019
macos-latest or macos-10.15
For more information, see "Virtual environments for GitHub Actions."
needs: 의존관계를 설정합니다.
jobs: build1: ~~ build2: needs: build1
YAML
복사
build2는 build1이 완료될때까지 기다립니다.

steps

task들의 집합입니다.
jobs: buildAndTest: name: CI Pipeline runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install Node.js uses: actions/setup-node@v3 - name: Install dependencies run: npm install
YAML
복사

run

env를 설정하거나 command를 실행합니다.
name: Install Dependencies run: npm install
YAML
복사
For more information, see "Workflow syntax for GitHub Actions."

Action

다양한 유저들이 만들고 배포할 수 있는 (재사용 가능한) 코드 단위입니다.
개인적으로 만든 Action을 사용할 수도 있고, Marketplace에 있는 Action을 사용할 수도 있습니다.
사용할 action이 저장되어있는 레포지토리를 uses에 지정해야합니다.
- name: Setup Node uses: actions/setup-node@v1 #레포지토리 설정 with: node-version: '10.x'
YAML
복사
For more information, see "Workflow syntax for GitHub Actions."

다시 예제 코드 읽어보기!

#CI라는 이름의 Workflow name: CI #이 Workflow가 트리거 되기 위한 조건 지정 on: push: #main브랜치에 push하거나 branches: [ "main" ] pull_request: #main브랜치에 pull request를 할 때 작동합니다. branches: [ "main" ] #앞으로 할 작업들을 그룹화 합니다. jobs: #build라는 이름의 job을 추가합니다. build: #build가 실행되는 운영체제를 설정합니다. runs-on: ubuntu-latest #build에서 실행되는 steps를 그룹화 합니다. steps: #actions/checkout@v3을 실행합니다. - uses: actions/checkout@v3 #step의 이름 - name: Run a one-line script #env를 설정합니다. env: secret_key: ${{ secrets.KEY }} #command를 실행합니다. run: make
YAML
복사