GitHub 리포지토리의 Actions 탭에서 CI/CD 플랫폼을 이용해 빌드, 테스트, 배포 등을 자동화할 수 있다. 공식 문서
이 GitHub Actions를 이용해 특정 브랜치에 push 이벤트가 발생할 때 설정된 서버로 자동 배포를 구현해보기로 한다.
1. GitHub Actions 설정
리포지토리의 Actions 탭을 클릭하면 자동화된 워크플로우를 설정할 수 있다.
"Set up a workflow yourself" 옵션을 선택하여 직접 작성할 수 있다.
GitHub Actions의 워크플로우는 YAML 파일로 작성되며, 공식 문서를 참고하여 문법을 확인할 수 있다.
예시 워크플로우 설정
아래는 main 브랜치에 push 이벤트가 발생할 때 서버에 자동으로 배포하는 간단한 예시이다.
name: GitHub Actions - Test
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Executing remote SSH commands using password
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
script: |
cd ${{ secrets.PATH }}
git pull origin main
- on: 워크플로를 트리거하기 위한 이벤트를 정의
main 브랜치에 push 이벤트가 발생할 때 워크플로우가 실행된다. - jobs: 이벤트가 발생했을 경우 수행할 작업을 정의
build라는 이름의 작업이 정의했고, GitHub가 호스팅하는 최신 Ubuntu 머신에서 실행된다. - steps: 실행할 명령, 설정 작업
서버에 자동 배포하는 명령을 수행한다. SSH 접근 후 git pull 명령어를 실행하는 식으로 구현했고 SSH 접근은 appleboy/ssh-action 을 사용하였다.
해당 yml 파일을 레포에 추가한 후 이벤트가 발생하면 자동 배포가 된다.
2. Actions Secrets 설정
위 YAML 파일에서 ${{ secret.~~~ }} 으로 되어있는 부분은 원래라면 내 서버와 게정 정보들이 들어갈텐데 그렇게 되면 내 서버의 계정 정보가 노출되는 문제가 발생한다. 이를 방지하기 위해 Actions Secrets이라는 기능을 이용한다.
Actions Secrets 설정 방법
1. 리포지토리의 Settings로 이동한다.
2. Security 섹션에서 Secrets and variables > Actions로 이동한다.
3. New repository secret을 클릭한다.
4. 아래와 같이 필요한 정보를 입력한다.
- HOST: 서버의 IP 주소
- USERNAME: SSH 사용자명
- PASSWORD: SSH 비밀번호
- PORT: SSH 포트 번호
- PATH: 배포할 서버 경로
이렇게 설정하면, YAML 파일 내에서 ${{ secrets.HOST }} 같은 형태로 해당 정보를 안전하게 호출할 수 있다.
3. 자동 배포 테스트
설정이 완료되면, main 브랜치에 임의의 push를 발생시켜 자동 배포가 정상적으로 작동하는지 테스트한다.
서버에 있던 README.md 파일도 수정된 것을 확인할 수 있다.
'Server' 카테고리의 다른 글
SFTP Chroot 감옥 사용자 생성 (0) | 2024.04.01 |
---|---|
아파치 HTTP 인증(Basic/Digest authentication) 적용 (0) | 2022.04.28 |
MYSQL 외부접근 허용하기 (0) | 2019.04.11 |
아파치 보안 설정 (0) | 2018.04.11 |