이 글은 공식문서를 참고하여 작성한 글입니다!
이번 글은 이전 글들에 이어서, 워크플로우 구현을 위한 yml파일의 문법에 대해서 알아보고, 이를 응용한 간단한 또 다른 예제를 하나 만들어보도록 하겠다.
바~로 레츠기릿 🔥
먼저 이 글은 공식문서의 Create an example workflow 에서 시작한다. ㅎㅎ
사실 내 글보다는 공식문서가 더 낫긴하...지만, 내 글도 같이 봐주면 좋을 것 같다 🤭
아무튼 공식문서가 매~우 잘 되어 있으니 꼭 공식문서를 한번쯤 읽어보면 좋을 것 같다.
name: learn-github-actions
run-name: ${{ github.actor }} is learning GitHub Actions
on: [push]
jobs:
check-bats-version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '14'
- run: npm install -g bats
- run: bats -v
먼저 이 내용으로 워크플로우를 하나 새롭게 생성하자.
워크플로우는 Github 레포지토리의 Actions
탭 > New workflow
버튼 > set up a workflow yourself
버튼을 클릭하면 만들 수 있다.
요로코롬 만들어주면 된다.
그리고 저장을 하면 커밋이 하나 찍히면서 Actions탭에 아래와 같이 워크플로우 하나가 추가된 것을 확인할 수 있다.
name: learn-github-actions
run-name: ${{ github.actor }} is learning GitHub Actions
on: [push]
jobs:
check-bats-version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '14'
- run: npm install -g bats
- run: bats -v
자! 이제 가장 중요한 부분이다 ㅎㅎ
아까 생성했던 이 yml파일이 어떤 의미들을 담고 있는지 하나 하나 뜯어보도록 하자 🔥
만약 Github action에 대해서 잘 모른다면, 이 글이 속한 시리즈의 이전 글들을 꼭 보고 오도록 하자.
name: learn-github-actions
run-name: ${{ github.actor }} is learning GitHub Actions
이 두 값은 Optional한 값이다. name
은 워크플로우의 이름이고, run-name
은 아래에 표시한 부분에 보여지는 이름이다.
on: [push]
on
에 나의 워크플로우가 어떤 이벤트들을 리스닝할 것인지를 입력할 수 있다.
예제 yml파일에서는 코드 push
가 발생했을 때, 실행되도록 설정한 상황이다.
예제처럼 브랜치에 대한 정보를 같이 입력하지 않으면, 모든 브랜치의 코드 push
를 리스닝하게 된다.
특정 브랜치에 대해서만 리스닝하는 것은 이따가 알아보도록하겠다 ㅎㅎ
push뿐만 아니라 다양한 이벤트를 물론 리스닝할 수 있다. fork
, label
이 생성됐을 때등등의 다양한 이벤트에 대한 리스닝 설정은 공식문서에서 자세히 확인할 수 있다.
jobs:
check-bats-version:
jobs는 말 그대로 워크플로우에서 실행될 Job들을 작성하는 부분이다.
예제에서는 check-bats-version
이라는 이름을 갖는 하나의 Job만을 작성한 상황이다.
runs-on: ubuntu-latest
Ubuntu, windows, mac 중에서 선택할 수 있고, 예제는 Ubuntu 최신버전에서 작업들을 실행하도록 설정했다.
찾아보니 이렇게 Runner들을 제공하고 있다.
개인적으로는 latest
보다는 사용하고자 하는 특정 버전을 직접 입력하는 것이 더 나을 것 같다 ㅎㅎ
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '14'
예제에서는 하나의 스텝이 Action과 명령어로 구성되어 있는데, 이 부분은 Action에 해당하는 부분이다.
처음 봤을 때, '잉? 이게 머지?' 했던 부분인데, 왜냐하면, actions/checkout@v3
같은 Action을 실행하는 구문을 이해를 못했기 때문이다 🤭
actions/cheout@v3
는 checkout
이라는 액션의 3
버전을 Action으로써 실행하겠다는 의미를 갖는다.
그렇다면, checkout
액션이 뭔지 궁금하니 마켓플레이스에서 검색해보자.
검색해보니 npm과 유사한 화면이 보여진다 ㅎㅎ
이런식으로 어떠한 동작을 수행하는 것들을 Action이라고 부르며, 누구나 이러한 Action을 만들어서 나눔(?)을 할 수 있다.
- run: npm install -g bats
- run: bats -v
1번에서 5번까지 오면서 뭔가를 실행할 준비가 모두 완료가 됐고, 이제 실제로 뭔가를 실행하는 부분이다.
예제에서는 bats
라는 js 패키지를 설치하고, bats
의 버전을 찍는 동작을 수행한다.
그렇다면, 실제로 버전이 잘 찍혔는지 한번 확인해보자 ㅎㅎ
호오 ~ 아주 신기하게도 bats
의 버전이 정상적으로 출력된 것을 확인할 수 있다.
이제 사용법을 마스터했으니 나마의 워크플로우를 하나 만들어보겠다.
음~~~ 내가 만들 워크플로우의 기능은 이렇게 하겠다.
production
브랜치와 release
하위의 브랜치에 코드가 push됐을 때 동작한다.ubuntu
에서 워크플로우를 실행한다.name: Build with Gradle
run-name: Go Go
on:
push:
branches:
- production
- 'releases/**'
jobs:
build-with-gradle:
runs-on: ubuntu-22.04
steps:
- name: Checkout production branch
uses: actions/checkout@v3
with:
ref: production
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'corretto'
- name: Where is here
run: pwd
- name: Executable Gradle
run: chmod +x ./gradlew
- name: Build with Gradle
run: ./gradlew build
글에서는 바로 하나의 섹션이 지났지만, 이 yml파일을 작성하기 위해서 영겁(?)의 시간을 보냈다 ㅎㅎ
그리고 당연하게도 많은 글들을 참고했는데, 필요하다면 참고하길 바란다. 🙏
자 이제 yml파일을 실행해보도록 하겠다 ㅎㅎ
짜잔!!! 정상적으로 빌드가 된 것을 확인할 수 있다 🤭
다음 글에서는 실전에 가까운 예시로 도전을 해보도록 하겠다 ㅎㅎ
그럼 이만