GitHub Actions란?
일반적으로 개발 업무를 마무리하기 위해 순차적으로 수행하는 작업들을 워크플로우(Workflow)라고 합니다.[1] 예를 들어서 테스트, 빌드, 배포 작업을 묶어서 워크플로우라고 부를 수 있습니다.
GitHub Actions란 Github 저장소에서 이러한 소프트웨어 개발 워크플로우를 자동화, 사용자 지정, 실행하는 도구입니다.[2]
사용하면 뭐가 좋나요?
개발 업무를 마무리하기 위해서 개발자는 작업 브랜치를 메인 브랜치에 올린 뒤, 테스트, 빌드, 배포 작업을 일일이 수행합니다. 하지만 이 작업은 반복적이고 시간이 걸리기 때문에 개발 리소스를 잡아먹는 요인이 됩니다. Github Actions를 사용하면 이러한 반복적인 작업들을 자동화할 수 있어서 개발 시간을 절약할 수 있습니다.
또한 여러 개발자가 빌드 및 배포 업무를 수행하는 경우, 배포 버전 관리가 어려운 점이 있습니다. Github Actions로 빌드 및 배포 작업을 일원화하면 배포되는 소프트웨어의 버전을 안정적으로 관리할 수 있습니다.
왜 우리 회사에서는 Github Action를 사용하고 있나요?
부족한 내용을 보충해주세요.
회사의 주력 개발 도구 중 하나가 Github이고, 다른 워크플로우 툴에 비해 사용이 편리하며, 다양한 플러그인을 지원하기 때문에 Github Actions를 사용하는 것이 아닌가 싶습니다.
GitHub Actions, 빠르게 시작하기
GitHub Actions는 저장소에 영향을 주는 어떤 이벤트(push 등)가 발생하면 관련된 스크립트(*.yml)에 설정된 작업(jobs)을 수행합니다.
yml 파일 위치
<root>/.github/workflows/*.yml
- git 저장소에 .github 폴더를 만듭니다.
- .github 폴더에 workflow 폴더를 만듭니다.
- workflows 폴더에
*.yml
파일들을 추가합니다.
yml 파일 구조
name: ... # 작업 이름 on: ... # 이벤트 발생 조건 jobs: ... # 이벤트 발생 시 수행할 세부 작업들
yml 파일 예시
GitHub Actions를 로컬에서 돌려보자, act
act
nektos • Updated Oct 25, 2023
GitHub Actions를 로컬에서 실행할 수 있는 도구입니다. 이 도구를 사용하면 깃허브 저장소에
commit
이나 push
를 하지 않아도 GitHub Actions의 동작을 로컬에서 테스트해볼 수 있습니다. 그래서 Github Actions 스크립트나 동작 오류 문제를 빠르게 찾아서 해결할 수 있습니다.설치
# Mac brew install act # Windows # [주의] 설치된 이후 환경 변수에 act.exe를 추가해야 PowerShell 또는 cmd에서 바로 사용할 수 있습니다. winget install nektos.act
실행
# 명령어 구조 act [<event>] [options] # 라이브러리 문제로 인해 Apple silicon Mac에서 amd64로 도커 컨테이너를 # 돌려야 하는 경우 아래와 같은 옵션을 사용합니다. # [주의] 속도가 매우 느립니다 act --container-architecture linux/amd64
secrets 설정
GitHub Actions는 워크플로우 수행에 필요한 보안에 민감한 정보들을 secrets로 관리하는 기능을 제공합니다.
act
의 경우 명령어 옵션 또는 파일에 저장된 secrets 정보를 사용할 수 있습니다.# MY_SECRET이라는 secret 값을 somevalue로 지정하여 사용 $ act -s MY_SECRET=somevalue # MY_SECRET이라는 secret 값이 존재하는 지 여부만 활용할 때 사용법 $ act -s MY_SECRET # secret 정보가 저장된 my.secrets라는 파일을 사용. 이 파일은 내부적으로 env 파일과 같은 형식. $ act --secret-file my.secrets
주의사항
- act는 yml 파일의
runs-on
옵션 중에서ubuntu
만 지원합니다.windows
나macos
는 지원하지 않습니다.
참고자료
[1] Workflow, TechTarget (link)
[2] Github Actions 이해, Github Docs (link)