From 61dc7d130dd419d94134541890ca952d223ffbd1 Mon Sep 17 00:00:00 2001 From: yxhwxn Date: Thu, 11 Jul 2024 00:19:46 +0900 Subject: [PATCH] =?UTF-8?q?CI/CD:=20Docker=20EB=20=EB=B0=B0=ED=8F=AC=20pip?= =?UTF-8?q?eline=20=EA=B5=AC=EC=B6=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/dev_deploy_DEB.yml | 92 ++++++++++++++++++++++++++++ Dockerfile | 9 +++ Dockerrun.aws.json | 12 ++++ 3 files changed, 113 insertions(+) create mode 100644 .github/workflows/dev_deploy_DEB.yml create mode 100644 Dockerfile create mode 100644 Dockerrun.aws.json diff --git a/.github/workflows/dev_deploy_DEB.yml b/.github/workflows/dev_deploy_DEB.yml new file mode 100644 index 0000000..ced92b4 --- /dev/null +++ b/.github/workflows/dev_deploy_DEB.yml @@ -0,0 +1,92 @@ +name: suppin dev Docker Beanstalk CI/CD # Workflow 이름 + +on: + push: + branches: + - dev + pull_request: + branches: + - dev + types: [closed] + workflow_dispatch: # (2).수동 실행도 가능하도록 + +jobs: + build: + runs-on: ubuntu-latest # (3).OS환경 + if: github.ref == 'refs/heads/main' || (github.event_name == 'pull_request' && github.event.pull_request.merged == true) + + + steps: + - name: Checkout current repository + uses: actions/checkout@v2 + + - name: Set up JDK 17 + uses: actions/setup-java@v1 + with: + java-version: 17 + + - name: Grant execute permission for gradlew + run: chmod +x ./gradlew + shell: bash + + - name: Build with Gradle + run: ./gradlew clean build + shell: bash + + - 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: ap-northeast-2 + + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v1 + + - name: Build, tag, and push image to Amazon ECR + id: build-image + env: + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + ECR_REPOSITORY: tree-dev + IMAGE_TAG: latest + run: | + # Docker 이미지 빌드 + docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . + + # 빌드한 이미지를 Amazon ECR로 푸시 + docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG + + # 빌드된 이미지의 정보 출력 + echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" + + - name: Get current time + uses: 1466587594/get-current-time@v2 + id: current-time + with: + format: YYYYMMDD_HH-mm-ss + utcOffset: "+09:00" + + - name: Generate deployment package + run: | + mkdir -p deploy + cp -r .ebextensions deploy/.ebextensions + cp Dockerrun.aws.json deploy/Dockerrun.aws.json + cp -r .platform deploy/.platform + cd deploy && zip -r deploy.zip . + + - name: Beanstalk Deploy + uses: einaregilsson/beanstalk-deploy@v14 + with: + aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + application_name: suppin-dev + environment_name: suppin-dev-env + version_label: github-action-${{ steps.current-time.outputs.formattedTime }} + region: ap-northeast-2 + deployment_package: deploy/deploy.zip + wait_for_deployment: false + + + + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..528cc30 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM adoptopenjdk:17-jdk-hotspot + +ARG JAR_FILE=build/libs/*.jar + +COPY ${JAR_FILE} app.jar + +EXPOSE 8080 + +ENTRYPOINT ["java", "-jar", "/app.jar"] diff --git a/Dockerrun.aws.json b/Dockerrun.aws.json new file mode 100644 index 0000000..1c0c630 --- /dev/null +++ b/Dockerrun.aws.json @@ -0,0 +1,12 @@ +{ + "AWSEBDockerrunVersion": "1", + "Image": { + "Name": "730335324790.dkr.ecr.ap-northeast-2.amazonaws.com/suppin:latest", + "Update": "true" + }, + "Ports": [ + { + "ContainerPort": "8080" + } + ] +}