Github Actions 맛보기 (이전 완료)
git hub actions는 github에서 제공해주는 CI/CD 툴이다.
이를 이용하여 파이프라인등을 설계하여 CI / CD 환경을 구축할 수 있다.

1. 설정 방법
설정을 위해서는 github 레포지토리의 .github/workflows/ 디렉토리에 .yml 파일을 추가해주면 된다.

2. 구성 요소
2.1 workflows
workflow는 한 레포지토리 내에서 이루어지는 모든 일의 흐름이며 최상위 단위이다.
workflow는 하나의 yml파일 단위이며
하나의 레포지토리는 여러개의 workflow를 가질 수 있고
하나의 workflow는 여러개의 job을 가질 수 있다.
2.2 jobs
job은 파이프라인의 기본적인 구성요소로써 그림1의 API_Test, DB_Test등의 요소들이 각각 하나의 job이다.
2.3 steps
step은 작업들의 집합으로 여러 작업들이 모여 하나의 step을 구성한다.
2.4 actions
action은 가장 작은 단위의 작업으로, 기존에 존재하는 action을 가져다 사용할 수 있고, 나의 action을 공개하여 다른 사람이 쓸 수도 있다.
2.5 events
이벤트는 해당 workflow를 트리거할 규칙이다. 만약 push만 했을때 workflows가 동작하거나, 특정 브랜치가 commit되었을때 동작하게 하고 싶다면, 이 event를 손봐 어떨때 어떤 workflow가 동작하도록 설정하면 된다.
3. example
name: GIT ACTIONS TEST
on:
push:
branches: [master]
jobs:
API_Test:
runs-on: ubuntu-latest
steps:
- name: api_test1
run: ls
- name: api_test2
run: ls
DB_Test:
runs-on: ubuntu-latest
steps:
- name: db_test1
run: ls
- name: db_test2
run: ls
build:
runs-on: ubuntu-latest
needs: [API_Test, DB_Test]
steps:
- name: API BUILD
run: echo ${{secrets.DOCKERHUB_USERNAME}}
- name: DB BUILD
run: echo ${{secrets.DOCKERHUB_USERNAME}}
deploy:
runs-on: ubuntu-latest
needs: [build]
steps:
- name: deploy
run: git clone https://github.com/jhkim31/gittest.git
위 파일은 그림1 에서의 workflow를 설정한 yml파일이다. (아무 의미없는 workflowe다)
3.1 name
name은 workflow의 이름을 의미한다.
3.2 on
이 workflow가 수행될 규칙 즉 event를 정의한다.
이 이벤트에는, PR, push, merged등 다양한 이벤트 들이 있다.
3.3 jobs
job들을 정의한다. 해당 파일에서는 API_Test, DB_Test, build, deploy job이 존재한다.
또한 job들간에는 의존 관계를 설정해줄 수 있다. build job은 두개의 Test job에 대해 의존 관계가 있고, deploy job은 build job에 대해 의존 관계가 있다.
3.4 API_Test job
API_Test, DB_Test, build, deploy job중 하나에 대해 다뤄본다.
3.4.1 API_Test.runs-on
runs-on은 해당 job이 실행될 [컨테이너 / OS] 를 설정한다.
3.4.2 API_Test.steps
steps는 해당 job 내에서 이루어질 작업들을 정의한다
3.4.3 API_Test.name
여기서의 name은 하나의 job 내부에서 일어날 작업의 이름을 의미한다. api_test1이라는 step에서는 ls 명령을 실행한다.

4. secret 변수
외부로 공개되지 않아야할 정보 (ex 키값) 등을 설정할 수 있는 변수로써 설정과 사용은 다음과 같이 한다.
레포지토리의 settings => secrets => Actions에 가면 다음과 같이 비밀 변수를 설정할 수 있다.

new repository secret여기서 new repository secret 버튼을 눌러 새로운 secret을 만듭니다.


생성된 secret은 {workflow}.yml 파일 내에서 ${{Secrets.FOO}} 로 사용되게 되며 실제 workflow가 진행되면 BAR이라는 값으로 치환되게 된다.