diff --git a/.github/workflows/release-blue-green.yml b/.github/workflows/release-blue-green.yml index 8760794..abbc02b 100644 --- a/.github/workflows/release-blue-green.yml +++ b/.github/workflows/release-blue-green.yml @@ -5,6 +5,11 @@ on: branches: - main +env: + AWS_REGION: ap-northeast-2 + ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY }} + GITHUB_SHA: ${{ github.sha }} + jobs: build: # ubuntu 버전 지정 @@ -47,12 +52,30 @@ jobs: - name: BootJar with Gradle run: ./gradlew clean bootJar -Dspring.profiles.active=release - # Docker Image Push - - name: Docker Image push + # Configure AWS Credentials by using IAM inform + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ env.AWS_REGION }} + + # Login to ECR + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v1 + + # Docker Image Push to ECR and Run container with Image pull from ECR + - name: Build, tag, and push image to Amazon ECR + id: build-image + env: + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + IMAGE_TAG: ${{ env.GITHUB_SHA }} run: | - docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_PASSWORD }} - docker build -t ${{ secrets.DOCKERHUB_USERNAME}}/${{ secrets.DOCKERHUB_REPOSITORY}} ./ - docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPOSITORY}} + # Build a docker container and push it to ECR so that it can be deployed to ECS. + docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . + docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG + echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" # Docker Compose - name: Docker Compose @@ -62,9 +85,9 @@ jobs: username: ${{ secrets.SSH_USERNAME }} key: ${{ secrets.SSH_PRIVATE_KEY }} script: | - sudo docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_PASSWORD }} + aws ecr get-login-password --region ${{ env.AWS_REGION }} | docker login --username AWS --password-stdin ${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }} sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPOSITORY}} sudo docker tag ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPOSITORY}} ${{ secrets.DOCKER_IMAGE_NAME }} cd ~ sudo chmod +x deploy.sh - ./deploy.sh + ./deploy.sh \ No newline at end of file