GitHub Actions은 GitHub에서 제공하는 CI/CD(Continuous Integration/Continuous Deployment) 툴입니다.
이를 사용하여 소스 코드에 대한 자동화된 테스트, 빌드 및 배포 작업을 수행할 수 있습니다.
GitHub Actions의 장점
- GitHub과 연동되어 있어서 편리하게 사용 가능합니다.
- 다양한 언어와 프레임워크를 지원합니다.
- 커뮤니티에서 개발한 다양한 작업(Action)을 사용할 수 있습니다.
- 도커(Docker)와 연동이 용이합니다.
GitHub Actions 사용 방법
1. 작업(Action) 작성하기
먼저 GitHub Actions에서 수행할 작업을 작성해야 합니다. 작업은 YAML 파일 형식으로 작성됩니다. 이 파일은 작업 이름, 실행 환경, 실행할 명령어 등의 정보를 포함합니다.
예를 들어, Python으로 작성된 웹 어플리케이션을 배포하는 작업을 만든다면 다음과 같은 YAML 파일을 작성할 수 있습니다.
name: Deploy Application
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: '3.9'
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Build Application
run: python manage.py collectstatic
- name: Deploy to Server
uses: easingthemes/ssh-deploy@v2.2.2
with:
server: ${{ secrets.SERVER }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
source: .
target: /var/www/html
2. 작업(Action) 실행하기
작업 파일을 작성한 후, 해당 파일을 저장하고 GitHub에 푸시합니다. 이후 GitHub Actions이 자동으로 작업을 수행합니다.
또한, 특정 이벤트에 대해서만 작업을 수행하도록 지정할 수도 있습니다. 위에서 작성한 예시에서는 push 이벤트가 발생하고, 브랜치가 main일 때 작업이 실행됩니다.
3. 작업(Action) 재사용하기
GitHub Actions 커뮤니티에서는 다양한 작업(Action)을 제공하고 있습니다. 이러한 작업들은 이미 작성된 YAML 파일을 포함하고 있기 때문에, 간단한 설정만으로 사용할 수 있습니다.
예를 들어, actions/checkout@v2 작업은 GitHub에서 제공하는 기본 작업 중 하나로, Git 리포지토리에서 로컬에 체크아웃하는 작업을 수행합니다. 이 작업을 사용하여 로컬에서 작업한 변경사항을 GitHub에 푸시하기 전에 테스트할 수 있습니다.
작업을 사용하는 방법은 간단합니다. 작업 이름과 버전을 YAML 파일에 추가하면 됩니다.
steps:
- uses: actions/checkout@v2
위와 같이 작업을 추가하면 됩니다.
4. Secrets 관리하기
GitHub Actions에서 사용하는 중요한 정보(비밀번호, API 키 등)는 Secrets로 관리됩니다. 이를 통해 보안성을 강화할 수 있습니다.
Secrets는 프로젝트의 설정 탭에서 관리할 수 있습니다. Secrets를 사용하려면, YAML 파일에서 ${{ secrets.SECRET_NAME }}와 같이 사용하면 됩니다.
예를 들어, 위의 예시에서는 SSH 연결을 위해 다음과 같은 Secrets를 사용합니다.
secrets:
SERVER: ${{ secrets.SERVER }}
USERNAME: ${{ secrets.USERNAME }}
PASSWORD: ${{ secrets.PASSWORD }}
PORT: ${{ secrets.PORT }}
5. Workflow 작성하기
Workflow는 작업(Action)을 실행하는 일련의 단계입니다. 여러 작업을 조합하여 원하는 Workflow를 만들 수 있습니다.
Workflow는 YAML 파일로 작성되며, 다음과 같은 구조를 가집니다.
name: Workflow Name
on:
push:
branches:
- main
jobs:
job-name:
runs-on: ubuntu-latest
steps:
- name: Step Name
uses: action-name@version
with:
arg1: value1
arg2: value2
위의 예시에서는 push 이벤트가 발생하고, 브랜치가 main일 때 job-name이라는 작업이 실행됩니다.
6. GitHub Marketplace에서 Action 찾기
GitHub Marketplace에는 다양한 작업(Action)이 등록되어 있습니다. 이를 활용하여 편리하게 Workflow를 작성할 수 있습니다.
예를 들어, AWS S3에 파일을 업로드하는 작업을 수행하려면, s3-sync-action이라는 작업을 사용할 수 있습니다.
steps:
- uses: jakejarvis/s3-sync-action@master
with:
args: --exclude '.git/*' --delete
env:
AWS_S3_BUCKET: my-bucket
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
위와 같이 작성하면, 지정된 버킷에 파일을 업로드합니다.
결론
GitHub Actions는 소프트웨어 개발에서 필요한 자동화 작업을 수행하는 데 큰 도움이 됩니다. 간단한 YAML 파일을 작성하고, GitHub에 푸시하면 자동으로 작업이 수행되어 빌드, 테스트, 배포 등의 작업을 자동화할 수 있습니다. 이를 통해 개발자는 더 많은 시간을 코드 작성에 집중할 수 있으며, CI/CD 파이프라인을 구축하는 데 필요한 복잡한 작업들을 GitHub Actions가 대신 수행해줍니다.
또한, GitHub Actions는 다양한 프로그래밍 언어 및 프레임워크에 대한 지원을 제공하므로, 다양한 프로젝트에 적용할 수 있습니다. GitHub Marketplace에서 다양한 작업(Action)을 찾아 사용할 수 있으며, 필요한 작업을 직접 작성하여 사용할 수도 있습니다.
마지막으로, GitHub Actions는 무료로 제공되는 서비스입니다. 따라서, 비용을 지불하지 않고도 CI/CD 파이프라인을 구축할 수 있습니다. 이를 통해 소규모 프로젝트부터 대규모 프로젝트까지 모두 GitHub Actions를 활용하여 개발 생산성을 향상시킬 수 있습니다.
참고 자료
'💻dev > ⚙️Git+Github' 카테고리의 다른 글
Git Convention | Git으로 팀프로젝트 협업하기 (0) | 2023.08.04 |
---|---|
Gihub Actions | cron 설정 방법과 유용한 웹사이트 (0) | 2023.04.27 |
Git/GitHub | 깃과 깃허브 알아두면 유용한 명령어들 (0) | 2023.03.15 |