GitHub Actions는 GitHub에서 제공하는 CI/CD(Continuous Integration / Continuous Deployment) 플랫폼으로, 소프트웨어 개발 및 배포 프로세스를 자동화하는 강력한 도구입니다. 이를 통해 코드 변경 사항을 검증하고 배포하는 일련의 작업을 간편하게 관리할 수 있습니다.
GitHub Actions에서는 다양한 작업이 가능한데 도커로 이미지 빌드, 저장소 푸시 등이 가능하며 slack과 연동하거나 aws, gcp와 연결하는 등 다양한 작업이 가능합니다.
GitHub Actions를 사용하기 위해서는 다음과 같은 과정이 필요합니다.
GitHub Repository로 이동 - GitHub Actions를 활용하려면 먼저 해당 Repository로 이동합니다.
GitHub Workflow 생성 - GitHub Repository에서 "Actions" 탭을 선택하고, "Set up a workflow yourself" 옵션을 선택하여 GitHub Workflow를 생성합니다.
Workflow 파일 작성 - Workflow 파일을 작성하여 자동화 작업을 정의합니다. 이 파일은 .github/workflows
디렉토리에 저장됩니다. 아래는 예시 Workflow 파일입니다.
name: show github action
on: [workflow_dispatch]
env:
NAME: "github friends"
jobs:
first:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: execute first
run: |
echo "execute first!!!"
echo "actor: ${{ github.actor }}"
- name: execute second
run: |
echo "execute second!!!"
second:
needs: first
runs-on: ubuntu-latest
steps:
- name: execute third
run: |
echo "third job!!!"
echo "name: $NAME"
GitHub Actions에서는 YAML 파일을 사용하여 워크플로우를 정의하고 구성합니다.
위의 예시 YAML 파일을 간단히 설명하면
name
: Workflow의 이름을 설정합니다.
on
: 언제 Workflow를 실행할지를 지정합니다. 위의 예시에서는 workflow_dispatch
이벤트를 사용하여 수동으로 실행할 수 있게 했습니다.
위의 이벤트외에도 push, commit, issue 등 다양한 이벤트에 대해서도 정의할 수 있습니다.
env
: 환경 변수를 설정합니다. 여기서는 NAME
환경 변수를 정의하고 값을 할당했습니다. env의 경우 해당 워크플로우에서만 사용할 수 있는 변수입니다.
jobs
: Workflow에 포함된 작업을 정의합니다. 하나의 워크 플로우에는 여러개의 job을 가질 수 있습니다.
runs-on
: 작업을 실행할 환경(예: 운영 체제)을 설정합니다. 일반적으로는 ubuntu를 사용하지만 경우에 따라서는 mac, window등을 설정할 수도 있으며 stragey를 사용한다면 여러 환경에 대해서 작업이 가능합니다.
steps
: 작업의 단계를 정의합니다. 각 단계는 이름(name
)과 해당 단계에서 실행할 명령(run
)을 포함합니다.
${{ github.actor }}
: github 내에서 미리 정의한 변수들이 있습니다. 이를 이용하기 위해서는 ${{ }}
로 원하는 값을 넣어주시면 됩니다.(제공하는 변수가 매우 많으므로 github action doc을 참고하시면 될 것 같습니다.)
참고
- 하나의 job은 여러개의 step을 가지며 각 step은 순차적으로 진행이 됩니다.
- 하나의 workflow는 여러개의 job을 가지며 각 job은 병렬로 실행이 됩니다.
위의 yml파일의 경우 needs를 통해 first가 끝나고 나서 진행이 되도록 만들었습니다.
Workflow 실행 - 설정한 Workflow를 실행하기 위해 "Run workflow"를 선택하고 원하는 파라미터를 입력한 후 실행합니다. (여기서는 input을 설정하지 않았기에 파라미터를 설정할 필요는 없습니다.)
Workflow 실행 결과 확인 - Workflow가 실행되면 진행 상황을 모니터링할 수 있으며 성공 또는 실패 여부를 확인할 수 있습니다. (push,commit에 걸어 놓았다면 해당 이벤트가 발생하면 자동으로 Workflow가 실행이 됩니다.)
실행 중
실행 성공
출력 결과
출력 결과는 현재 second job의 결과를 출력하고 있습니다. 보시면 name의 경우 env에서 설정한 값이 나온 것을 알 수 있습니다.