diff --git a/.github/workflows/cd-prod.yml b/.github/workflows/cd-prod.yml new file mode 100644 index 00000000..50aedc76 --- /dev/null +++ b/.github/workflows/cd-prod.yml @@ -0,0 +1,71 @@ +name: Push Prod Image to GHCR +permissions: + contents: read + packages: write + +on: + push: + branches: + - main + +jobs: + publish-docker-image: + name: Build and Push + runs-on: ubuntu-latest + + strategy: + fail-fast: true + matrix: + include: + - dockerfile: ./.docker/web.Dockerfile + image: ghcr.io/sparcs/biseo-web + - dockerfile: ./.docker/api.Dockerfile + image: ghcr.io/sparcs/biseo-api + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Cache Docker Layers + uses: actions/cache@v3 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + + - name: Log in to Github Container Registry + uses: docker/login-action@v3 + with: + registry: "ghcr.io" + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract Metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ matrix.image }} + tags: | + type=raw,value=latest + type=sha,format=long + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + file: ${{ matrix.dockerfile }} + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache-new + + - name: Move cache + run: | + rm -rf /tmp/.buildx-cache + mv /tmp/.buildx-cache-new /tmp/.buildx-cache + diff --git a/.github/workflows/push_image_ecr.yml b/.github/workflows/push_image_ecr.yml deleted file mode 100644 index 474cd556..00000000 --- a/.github/workflows/push_image_ecr.yml +++ /dev/null @@ -1,64 +0,0 @@ -name: Push Prod Image to Amazon ECR - -# when tagging action success -on: - pull_request: - types: - - closed - branches: - - main - -env: - AWS_REGION: ap-northeast-2 - -jobs: - image-build-and-push: - name: Build and Push - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Cache Docker layers - uses: actions/cache@v3 - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx- - - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: ${{ env.AWS_REGION }} - - - name: Login to AWS ECR - id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 - - - name: Build Image and Push to AWS ECR - id: build_image_and_push - uses: docker/build-push-action@v5 - env: - ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} - ECR_REPOSITORY: biseo-server - with: - file: .docker/api.Dockerfile - push: true - tags: | - "${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:latest" - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache-new - - - name: Remove old cache - run: | - rm -rf /tmp/.buildx-cache - mv /tmp/.buildx-cache-new /tmp/.buildx-cache