DevOps.

GitHub Actions Workflow 명령어 정리

코라채 2024. 9. 9. 18:23
728x90
반응형

GitHub Actions Workflow 명령어 정리

매번 복붙하지말구 GitHub Actions Workflows .yml 용어를 정리 해보았다.

전체 스크립트

스크립트에 관한 설명은 아래 url 을 통해 확인할 수 있다.
https://velog.io/@xiu_8/github-action%EC%9C%BC%EB%A1%9C-cicd-feat.-aws-s3-cloudfront

name: DEV CI

on:
  push:
    branches: ["dev"]
  pull_request:
    branches: ["dev"]

jobs:
  build:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [20.x]

    steps:
      - uses: actions/checkout@v4

      - name: Create dotenv file
        run: |
          touch .env
          echo "VITE_BASE_URL=${{secrets.VITE_BASE_URL}}" >> .env
          echo "VITE_FIREBASE_API_KEY=${{secrets.VITE_FIREBASE_API_KEY}}" >> .env
          echo "VITE_FIREBASE_APP_ID=${{secrets.VITE_FIREBASE_APP_ID}}" >> .env
# ... env 파일에 생성할 객체 echo 명령어로 추가하기
          cat .env

      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
          cache: yarn # yarn으로 설정

      - name: Yarn install
        run: yarn

      - name: Yarn build
        run: yarn build

      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ${{ secrets.AWS_DEFAULT_REGION }}

      - name: Deploy to S3
        uses: jakejarvis/s3-sync-action@master
        with:
          args: --delete
        env:
          AWS_S3_BUCKET: ${{ secrets.DEV_AWS_S3_BUCKET_NAME }}
          SOURCE_DIR: "dist"

      - name: Invalidate CloudFront Cache
        run: aws cloudfront create-invalidation --distribution-id ${{ secrets.DEV_AWS_DISTRIBUTION_ID }} --paths "/*"

1. name

  • 워크플로우의 이름을 정의한다. name으로 이름을 지정하면, GitHub Actions 대시보드에서 해당 이름이 작업단계로 표시된다.
 name: DEV CI

2. on

  • 워크플로우가 실행될 트리거 이벤트를 지정한다. 예를 들어, 작성된 브랜치에 코드가 푸시되거나 PR이 열렸을 때 워크플로우를 실행할 수 있다. 아래 코드는 dev 브랜치 기준으로 작성된 내용이다.
on: 
    push:
        branches: ["dev"]
    pull_request:
        branches: ["dev"]

3. jobs

  • 워크플로우에서 실행할 작업(Job)을 정의한다. 하나의 워크플로우 내에 여러 작업이 있을 수 있다.
jobs:
  build:
    runs-on: ubuntu-latest

4. runs-on

  • Job이 실행될 환경을 설정한다. 여기서는 Ubuntu 최신 버전에서 실행되도록 설정한다.
runs-on: ubuntu-latest

5. strategy.matrix

  • 여러 버전의 Node.js 등 특정 설정을 동시에 테스트하고 싶을 때 사용하는 매트릭스 전략이다. 아래 예시 20.x 버전의 Node.js를 사용하도록 설정되어 있다.
strategy: matrix: node-version: [20.x]

6. steps

  • Job에서 수행할 작업 단계들을 정의한다. 각 step은 명령어를 실행하거나 특정 액션을 사용할 수 있다. run부분에는 리눅스 명령어를 통해 작성할 수 있다.
steps:
    - name: Create dotenv file
        run: |
            touch .env
            echo "VITE_BASE_URL=${{secrets.VITE_BASE_URL}}" >> .env
            cat .env

7. run

  • 셸 명령어를 실행하는 데 사용된다. 여러 줄의 명령어를 실행할 때는 파이프(|)를 사용하여 명령어를 나열할 수 있다.
    ```yaml
  • name: Create dotenv file
    run: |
    touch .env
    echo "VITE_BASE_URL=${{secrets.VITE_BASE_URL}}" >> .env
    
    

8. uses

  • GitHub Actions의 특정 액션을 사용하도록 지정한다. actions/checkout@v4에 관한 자세한 설명은 actions/checkout@v4 깃허브에서 확인할 수 있다. Git이라는 버전 관리 시스템에서 체크아웃(Checkout)이란 Git에서 체크아웃이라는 행위는 일반적으로 코드 저장소(repository)에서 특정 브랜치(branch)로 전환하는 작업을 뜻한다.
- uses: actions/checkout@v4

9. with

  • 특정 액션(uses)에 인수를 전달할 때 사용된다. 예를 들어 setup-node 액션에서 Node.js 버전과 캐시 옵션을 설정하는 경우 with를 사용할 수 있다.
- uses: actions/setup-node@v4
  with:
    node-version: ${{ matrix.node-version }}
    cache: yarn

10. env

  • 환경 변수를 설정한다. 각 단계에서 사용할 수 있는 환경 변수를 정의할 수 있으며, 보통 AWS 자격 증명이나 프로젝트 설정 값에 사용된다.
    env:
    AWS_S3_BUCKET: ${{ secrets.DEV_AWS_S3_BUCKET_NAME }}
    SOURCE_DIR: "dist"

추가적으로 알아두면 좋은 명령어들

11. secrets

  • GitHub에 저장된 비밀 값을 참조할 수 있는 키워드. 보안이 중요한 정보(예: API 키, 비밀번호)를 관리할 때 사용한다.
echo "VITE_FIREBASE_API_KEY=${{secrets.VITE_FIREBASE_API_KEY}}" >> .env

12. if

  • 조건부로 단계나 작업을 실행할 수 있도록 해주는 명령어. 주로 브랜치, 결과 상태 등에 따라 실행 여부를 제어할 때 사용한다.
- name: Deploy to production  
    if: github.ref == 'refs/heads/main'  
    run: yarn deploy    

13. needs

  • 다른 Job이 완료된 후 실행되어야 하는 Job을 정의할 때 사용한다. Job 간의 의존성을 설정하는 데 유용하다.
    jobs:
    build:
        runs-on: ubuntu-latest
    deploy:
        runs-on: ubuntu-latest
        needs: build
        steps:
            - run: yarn deploy

14. continue-on-error

  • 해당 단계에서 오류가 발생하더라도 워크플로우를 중단하지 않고 계속 실행할 수 있도록 설정한다.
- name: Lint code
  run: yarn lint
  continue-on-error: true

15. timeout-minutes

  • 특정 Job 또는 단계가 일정 시간이 지나면 자동으로 실패하도록 제한할 수 있다.
    jobs:
    build:
        runs-on: ubuntu-latest
        timeout-minutes: 10

마무리

GitHub Actions의 workflows.yml 파일에서 사용되는 주요 명령어들을 정리해보았다. name, on, jobs, steps와 같은 기본적인 명령어 외에도, 조건부 실행(if), 의존성 설정(needs), 오류 처리(continue-on-error) 등을 활용하면 더욱 자유로운 워크플로우를 구축할 수 있다.

참고글

https://www.daleseo.com/github-actions-checkout/

728x90
반응형

'DevOps.' 카테고리의 다른 글

fatal: the remote end hung up unexpectedly 오류 해결  (0) 2024.09.09