Skip to content

Commit

Permalink
Refacotr(*): gradle, docker build job 통합
Browse files Browse the repository at this point in the history
  • Loading branch information
InHyeok-J committed Jun 23, 2024
1 parent 2bdc777 commit ac9127a
Showing 1 changed file with 79 additions and 93 deletions.
172 changes: 79 additions & 93 deletions .github/workflows/devcd.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
on:
push:
branches: [ "develop" ,"feature/*"]
branches: [ "develop" ,"feature/*" ]

workflow_dispatch:

Expand All @@ -12,11 +12,12 @@ env:


jobs:
checkout:
gradle-docker-build:
runs-on: ubuntu-20.04
outputs:
COMMIT_MESSAGE: ${{steps.valueSetting.outputs.COMMIT_MESSAGE}}
AUTHOR: ${{steps.valueSetting.outputs.AUTHOR}}
DOCKER_TAG: ${{steps.setUpDockerTag.outputs.DOCKER_TAG}}
steps:
- uses: actions/checkout@v3
- name: set environtment
Expand Down Expand Up @@ -44,11 +45,6 @@ jobs:
AUTHOR: ${{env.AUTHOR}}
DOCKER_IMAGE: "Before build"

gradle-build:
needs: checkout
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
java-version: "17"
Expand All @@ -69,67 +65,61 @@ jobs:
./gradlew jabiseo-api:clean
./gradlew jabiseo-api:build
docker-build-push:
needs: gradle-build
runs-on: ubuntu-20.04
outputs:
DOCKER_TAG: ${{steps.setUpDockerTag.outputs.DOCKER_TAG}}
steps:
- name: setup dockerImage name
id: setUpDockerTag
run: |
git fetch --tags
GIT_TAG=$(git tag --sort=committerdate | tail -1 )
if [ -z "$GIT_TAG" ]; then
GIT_TAG="v0.0.0"
fi
DATE=$(date +'%Y%m%d')
COMMIT_SHA=$(git rev-parse --short HEAD)
DOCKER_TAG="${GIT_TAG}-${DATE}-${COMMIT_SHA}"
DOCKER_IMAGE="${{env.ECR_URI}}:${DOCKER_TAG}"
echo "dockerTag=${DOCKER_TAG}"
echo "DOCKER_IMAGE=${DOCKER_IMAGE}"
echo "DOCKER_TAG=${DOCKER_TAG}" >> $GITHUB_ENV
echo "DOCKER_TAG=${DOCKER_TAG}" >> $GITHUB_OUTPUT
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ECR_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_ECR_SECRET_KEY }}
aws-region: ap-northeast-2

- name: Set Up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2
- name: Cache Docker Layer
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache # cache의 대상을 정한다.
key: "${{runner.os}}-buildx-${{env.version}}"
restore-keys: |
${{ runner.os }}-buildx-
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2

- name: build and push
uses: docker/build-push-action@v4
with:
context: ./jabiseo-api/
builder: ${{steps.buildx.outputs.name}}
push: true
tags: "${{env.ECR_URI}}:${{env.DOCKER_TAG}}"
- name: setup dockerImage name
id: setUpDockerTag
run: |
git fetch --tags
GIT_TAG=$(git tag --sort=committerdate | tail -1 )
if [ -z "$GIT_TAG" ]; then
GIT_TAG="v0.0.0"
fi
DATE=$(date +'%Y%m%d')
COMMIT_SHA=$(git rev-parse --short HEAD)
DOCKER_TAG="${GIT_TAG}-${DATE}-${COMMIT_SHA}"
DOCKER_IMAGE="${{env.ECR_URI}}:${DOCKER_TAG}"
echo "dockerTag=${DOCKER_TAG}"
echo "DOCKER_IMAGE=${DOCKER_IMAGE}"
echo "DOCKER_TAG=${DOCKER_TAG}" >> $GITHUB_ENV
echo "DOCKER_TAG=${DOCKER_TAG}" >> $GITHUB_OUTPUT
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ECR_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_ECR_SECRET_KEY }}
aws-region: ap-northeast-2

- name: Set Up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2
- name: Cache Docker Layer
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache # cache의 대상을 정한다.
key: "${{runner.os}}-buildx-${{env.version}}"
restore-keys: |
${{ runner.os }}-buildx-
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2

- name: build and push
uses: docker/build-push-action@v4
with:
context: ./jabiseo-api/
builder: ${{steps.buildx.outputs.name}}
push: true
tags: "${{env.ECR_URI}}:${{env.DOCKER_TAG}}"

deploy:
needs:
- docker-build-push
- gradle-docker-build
name: Deploy
runs-on: [ self-hosted, dev-server ]
env:
DOCKER_TAG: ${{needs.docker-build-push.outputs.DOCKER_TAG}}
DOCKER_TAG: ${{needs.gradle-docker-build.outputs.DOCKER_TAG}}
steps:
- name: checkout
uses: actions/checkout@v3
Expand All @@ -153,15 +143,13 @@ jobs:
result-send-sucess:
needs:
- gradle-build
- docker-build-push
- gradle-docker-build
- deploy
- checkout
runs-on: ubuntu-20.04
env:
DOCKER_TAG: ${{needs.docker-build-push.outputs.DOCKER_TAG}}
AUTHOR: ${{needs.checkout.outputs.AUTHOR}}
COMMIT_MESSAGE: ${{needs.checkout.outputs.COMMIT_MESSAGE}}
DOCKER_TAG: ${{needs.gradle-docker-build.outputs.DOCKER_TAG}}
AUTHOR: ${{needs.gradle-docker-build.outputs.AUTHOR}}
COMMIT_MESSAGE: ${{needs.gradle-docker-build.outputs.COMMIT_MESSAGE}}
if: success()
steps:
- name: send result when success
Expand All @@ -179,29 +167,27 @@ jobs:
DOCKER_IMAGE: ${{env.DOCKER_TAG}}

result-send-failure:
needs:
- gradle-build
- docker-build-push
- deploy
- checkout
runs-on: ubuntu-20.04
env:
DOCKER_TAG: ${{needs.docker-build-push.outputs.DOCKER_TAG}}
AUTHOR: ${{needs.checkout.outputs.AUTHOR}}
COMMIT_MESSAGE: ${{needs.checkout.outputs.COMMIT_MESSAGE}}
if: failure()
steps:
- name: send result when failure
uses: jabiseo/slack-custom-bot@main
with:
mode: DEPLOY
channelId: "${{ secrets.NOTI_CHANNEL_ID }}"
text: "Deploy 배포 실패"
statusColor: "#eb3434"
env:
SLACK_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
SHA: ${{env.VERSION}}
COMMIT_MESSAGE: ${{env.COMMIT_MESSAGE}}
AUTHOR: ${{env.AUTHOR}}
DOCKER_IMAGE: ${{env.DOCKER_TAG}}
needs:
- gradle-docker-build
- deploy
runs-on: ubuntu-20.04
env:
DOCKER_TAG: ${{needs.gradle-docker-build.outputs.DOCKER_TAG}}
AUTHOR: ${{needs.gradle-docker-build.outputs.AUTHOR}}
COMMIT_MESSAGE: ${{needs.gradle-docker-build.outputs.COMMIT_MESSAGE}}
if: failure()
steps:
- name: send result when failure
uses: jabiseo/slack-custom-bot@main
with:
mode: DEPLOY
channelId: "${{ secrets.NOTI_CHANNEL_ID }}"
text: "Deploy 배포 실패"
statusColor: "#eb3434"
env:
SLACK_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
SHA: ${{env.VERSION}}
COMMIT_MESSAGE: ${{env.COMMIT_MESSAGE}}
AUTHOR: ${{env.AUTHOR}}
DOCKER_IMAGE: ${{env.DOCKER_TAG}}

0 comments on commit ac9127a

Please sign in to comment.