-
Github Action 로컬에서 돌리기 (running GA locally)컴퓨터 2023. 11. 5. 19:02728x90반응형
Github Action을 만들고 업로드 전에 로컬에서 잘 작동하는지 확인하고 싶었다.
act라는 툴이 Docker를 이용해서 로컬에서 GA를 돌릴 수 있게 해 준다.
Docker를 설치했다면
로컬 github project에 .githhub/workflows/이름.yml 을 만들어준다.
${{ secrets.API_ADDRESS }} 처럼 비밀 값을 이용하기 위해 .env 파일을 만들어서 KEY=VALUE로 만들어준다.
이 예제에서는 Swagger API 문서를 html로 만들어서 api-ref 라는 폴더에 매주 월요일에 업로드하는 것이다.
1. 설치
있는 툴로 선택해서 깔아준다.
winget install nektos.act scoop install act choco install act-cli
2. 예제 yaml
main 브랜치에 있는 GA 밖에 dispatch를 못해서 일단 workflow_dispatch로 강제로 실행할 수 있음을 알려준다.
my 라는 브랜치에 있는 폴더로 작업하고 업로드하고 싶어서 checkout ref에 브랜치를 지정했다.
그리고 Spring Boot openapi json을 받기 위해 curl이 필요한데 안 깔려있길래 깔아줬다.
( if: ${{ env.ACT }} 를 통해 act에서 실행할 때만 실행하라고 지정한다)
name: Generate API Documentation on: schedule: # Runs at 00:00 every Monday - cron: '0 0 * * 1' workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: ref: my # Specify the branch here - name: Install curl (for nektos/act local CI testing) if: ${{ env.ACT }} run: apt-get update && apt-get install build-essential curl pkg-config openssl -y - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: '18' - name: Generate Swagger JSON run: curl -o openapi.json ${{ secrets.API_ADDRESS }} - name: Generate Swagger HTML run: npx @redocly/cli@latest build-docs openapi.json -o ./java/api-ref/index.html - name: Prepare documentation file run: mv ./java/api-ref/index.html ./java/api-ref/API-$(date +\%Y\%m\%d).html - name: List contents of api-ref directory if: ${{ env.ACT }} run: ls -l ./java/api-ref/ - name: Commit and Push documentation if: ${{ !env.ACT }} run: | git config --local user.email "action@github.com" git config --local user.name "GitHub Action" git add ./java/api-ref/API-*.html git commit -m "📚 API doc $(date +'%Y-%m-%d')" || echo "No changes to commit" git push origin my
3. act 실행
기본 --network 가 host인데 오류가 나서
docker network create my-act-network
위 커맨드를 통해 도커 네트워크를 만들고 아래처럼 act 를 실행한다.
(Medium 사이즈 도커 + ubuntu 최신 버전 이미지를 -P 로 강제로 설정하고 비밀키 값 파일을 넘겼다.
act -P catthehacker/ubuntu:act-latest -j build --secret-file .github/workflows/.env --network my-act-network
본인의 action이 잘 실행했다면 Job succeeded 처럼 나오고 잘 종료된다.
728x90'컴퓨터' 카테고리의 다른 글
AWS EC2 가비아 HTTPS 도메인 503 (1) 2023.12.05 Github Action: 카카오톡 CI 봇 (0) 2023.04.26 Ubuntu/Zorin OS 설치 파티션 설정 (0) 2023.04.16