Merge pull request #12 from AcneLog/hotfix #20
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CD with Gradle | |
| on: | |
| push: | |
| branches: | |
| - main | |
| permissions: write-all | |
| env: | |
| AWS_REGION: ${{ secrets.AWS_REGION }} | |
| ECR_REPOSITORY: ${{ secrets.AWS_ECR_REPOSITORY }} | |
| GITHUB_SHA: ${{ github.sha }} | |
| jobs: | |
| build: | |
| # ubuntu 버전 지정 | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| # Checkout 진행 | |
| - uses: actions/checkout@v3 | |
| # JDK 11 설치 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v3 | |
| with: | |
| java-version: '17' | |
| distribution: 'corretto' | |
| # Gradle 캐싱 | |
| - name: Gradle Caching | |
| uses: actions/cache@v3 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
| restore-keys: | | |
| ${{ runner.os }}-gradle- | |
| # Gradle 권한 부여 | |
| - name: Grant execute permission for gradlew | |
| run: chmod +x gradlew | |
| # api yml 반영 | |
| - name: Make application.yml | |
| run: | | |
| cd ./api-module/src/main/resources | |
| touch ./application.yml | |
| echo "${{ secrets.APPLICATION_SECRET }}" > ./application.yml | |
| shell: bash | |
| # common yml 반영 | |
| - name: Make application-common.yml | |
| run: | | |
| cd ./common-module/src/main/resources | |
| touch ./application-common.yml | |
| echo "${{ secrets.APPLICATION_COMMON }}" > ./application-common.yml | |
| shell: bash | |
| # domain yml 반영 | |
| - name: Make application-domain.yml | |
| run: | | |
| cd ./domain-module/src/main/resources | |
| touch ./application-domain.yml | |
| echo "${{ secrets.APPLICATION_DOMAIN }}" > ./application-domain.yml | |
| shell: bash | |
| # infra yml 반영 | |
| - name: Make application-infra.yml | |
| run: | | |
| cd ./infra-module/src/main/resources | |
| touch ./application-infra.yml | |
| echo "${{ secrets.APPLICATION_INFRA }}" > ./application-infra.yml | |
| shell: bash | |
| # Gradle clean bootJar | |
| - name: Build with Gradle | |
| run: ./gradlew clean api-module:bootJar | |
| # Configure AWS Credentials by using IAM inform | |
| - name: Configure AWS credentials | |
| uses: aws-actions/configure-aws-credentials@v5.0.0 | |
| with: | |
| aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
| 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@v2 | |
| with: | |
| mask-password: 'false' | |
| # 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 }} | |
| ECR_REPOSITORY: ${{ env.ECR_REPOSITORY }} | |
| IMAGE_TAG: ${{ env.GITHUB_SHA }} | |
| run: | | |
| docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . | |
| docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG | |
| # Docker Container Deploy to EC2 | |
| - name: Docker Compose | |
| uses: appleboy/ssh-action@master | |
| with: | |
| host: ${{ secrets.AWS_EC2_SERVER_IP }} | |
| username: ${{ secrets.SSH_USERNAME }} | |
| key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| script: | | |
| aws ecr get-login-password --region ${{ env.AWS_REGION }} | docker login --username AWS --password-stdin ${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }} | |
| docker pull ${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:${{ env.GITHUB_SHA }} | |
| docker tag ${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:${{ env.GITHUB_SHA }} ${{ secrets.DOCKER_IMAGE_NAME }} | |
| docker stop acnelog-server || true | |
| docker rm acnelog-server || true | |
| docker run -d --name acnelog-server -p 8080:8080 ${{ secrets.DOCKER_IMAGE_NAME }} |