개발지식

Github actions workflow에 관한 예제

weaklion 2023. 6. 14. 11:03

Github actions에 관한 포스팅은 한 적이 있는데 예제가 좀 부족한 거 같아서 임시로 만든 workflow.yaml을 올려봅니다.

저장소에서 사용하기 위해선 루트 폴더에 .github/workflow 폴더를 생성해야만 사용할 수 있습니다.

 

aws s3 에 배포, cloudfront에 무효화까지 하는 과정까지 jobs에 포함되어 있습니다.

on:
  push:
    branches:
      - 들어갈 브랜치
  라는 브랜치에 push할 시 workflow가 실행

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [16.x]
    # 사용할 노드 버전 추가 ex)[14, 16]

    env:
      AWS_BUCKET_NAME: aws bucket 
      # build라는 job에서 사용할 환경변수 build job 내부에서만 사용가능.
    
    steps:
      - uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}
          cache: 'yarn'

      - name: Cache Node_Modules
        uses: actions/cache@v3
        with:
					## cache의 대상. 여기선 node_modules
          path: '**/node_modules'
          key: ${{ runner.os }}-build-${{ hashFiles('**/package-lock.json') }}
					#key를 통해 캐싱된 파일을 찾는다. key가 없으면 restore-keys로 찾는다. 순서는 아래에서부터. 
          restore-keys: |
            ${{ runner.os }}-build-${{ env.cache-name }}-
            ${{ runner.os }}-build-
            ${{ runner.os }}-

      - name: Install dependencies
        run: |
          yarn install

      - name: Build
        run: |
          yarn build  
          ## 여기엔 빌드 쓰세요.

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v2
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ap-northeast-2
        # 시크릿키는 github 저장소에서 세팅
      - name: Upload to S3 (Deploy)
        run: |
          aws s3 sync dist s3://$AWS_BUCKET_NAME 
      
      - name: Invalidate CloudFront
        run: |
          aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} --paths "/*"

 

 

example.yaml