diff --git a/.github/workflows/production.yaml b/.github/workflows/production.yaml index 6c778c6b..38aae047 100644 --- a/.github/workflows/production.yaml +++ b/.github/workflows/production.yaml @@ -5,34 +5,27 @@ on: types: - released +env: + REGISTRY: ghcr.io + REPOSITORY: ${{ github.repository }} + IMAGE_TAG: prod${{ github.run_number }} + jobs: build: runs-on: ubuntu-latest + permissions: + contents: read + packages: write deployments: write + environment: name: production url: https://ziggle.gistory.me - outputs: - ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} - ECR_REPOSITORY: ziggle-frontend - IMAGE_TAG: prod${{ github.run_number }} - steps: - - uses: actions/checkout@v4 - - - 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: ap-northeast-2 - - - name: Login to Amazon ECR - id: login-ecr - uses: aws-actions/amazon-ecr-login@v2 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + steps: + - name: Checkout Repository + uses: actions/checkout@v4 - name: setup environment run: | @@ -42,18 +35,34 @@ jobs: echo "NEXT_PUBLIC_GA_TRACKING_ID=${{ secrets.GA_TRACKING_ID }}" >> .env.production echo "NEXT_PUBLIC_AMPLITUDE_API_KEY=${{ secrets.AMPLITUDE_API_KEY }}" >> .env.production - - name: Build, tag, and push image to Amazon ECR - uses: docker/build-push-action@v5 - env: - ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} - ECR_REPOSITORY: ziggle-frontend - IMAGE_TAG: prod${{ github.run_number }} # Use run number as image tag + - name: Login to the Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) from the Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.REPOSITORY }} + tags: ${{ env.IMAGE_TAG }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build and push Docker image + id: push + uses: docker/build-push-action@v6 with: context: . push: true - tags: ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max + deploy: name: Update Git Repository needs: build @@ -67,17 +76,10 @@ jobs: fetch-depth: 0 - name: Update Kubernetes Manifest - env: - ECR_REGISTRY: ${{ needs.build.outputs.ECR_REGISTRY }} - ECR_REPOSITORY: ${{ needs.build.outputs.ECR_REPOSITORY }} - IMAGE_TAG: ${{ needs.build.outputs.IMAGE_TAG }} run: | sed -i "s|image:.*|image: $ECR_REGISTRY\/$ECR_REPOSITORY:$IMAGE_TAG|g" infoteam/service/ziggle/next.prod.yaml - name: Commit and Push - env: - ECR_REPOSITORY: ${{ needs.build.outputs.ECR_REPOSITORY }} - IMAGE_TAG: ${{ needs.build.outputs.IMAGE_TAG }} run: | git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" git config --global user.name "GitHub Actions"