알림 실패 시 재시도하는 스케줄러 및 기능 추가 (#138) #85
This file contains 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: CI/CD | |
on: | |
push: | |
branches: [ "develop" ] | |
jobs: | |
CI-CD: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Gradle 캐싱 | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.gradle/caches | |
~/.gradle/wrapper | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
restore-keys: ${{ runner.os }}-gradle- | |
- uses: actions/checkout@v3 | |
- name: java코드 빌드 jdk 11 설정 | |
uses: actions/setup-java@v3 | |
with: | |
java-version: '11' | |
distribution: 'temurin' | |
- name: application.yml && firebase-key 생성 | |
run: | | |
cd ./meongcare/src/main/resources | |
touch ./application.yml | |
echo "$APPLICATION_DEV" > ./application.yml | |
mkdir firebase | |
cd ./firebase | |
touch ./meongcare-firebase-key.json | |
echo "$MEONGCARE_FIREBASE_KEY" > ./meongcare-firebase-key.json | |
env: | |
APPLICATION_DEV: ${{ secrets.APPLICATION_DEV }} | |
MEONGCARE_FIREBASE_KEY: ${{ secrets.MEONGCARE_FIREBASE_KEY }} | |
- name: Gradle 셋업 | |
uses: gradle/gradle-build-action@v2 | |
- name: Gradle 빌드 | |
run: | | |
cd ./meongcare | |
./gradlew build | |
- name: AWS Configure 설정 | |
uses: aws-actions/configure-aws-credentials@v4 | |
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: ECR 로그인 | |
id: login-ecr | |
uses: aws-actions/amazon-ecr-login@v2 | |
- name: docker 빌드 및 ECR push | |
id: build-image | |
env: | |
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} | |
ECR_REPOSITORY: meongcare | |
IMAGE_TAG: ${{ github.sha }} | |
run: | | |
cd ./meongcare | |
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . | |
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG | |
echo "IMAGE_NAME=$ECR_REGISTRY/$ECR_REPOSITORY" >> $GITHUB_OUTPUT | |
echo "IMAGE_TAG=$IMAGE_TAG" >> $GITHUB_OUTPUT | |
- name: ECR image pull & blue-green 배포 스크립트 실행 | |
uses: appleboy/ssh-action@master | |
env: | |
IMAGE_NAME : ${{ steps.build-image.outputs.IMAGE_NAME}} | |
IMAGE_TAG : ${{ steps.build-image.outputs.IMAGE_TAG}} | |
AWS_ACCOUNT: ${{ secrets.AWS_ACCOUNT }} | |
with: | |
host: ${{ secrets.EC2_DEV_HOST }} | |
username: ubuntu | |
key: ${{ secrets.EC2_DEV_KEY }} | |
envs: IMAGE_NAME, IMAGE_TAG, AWS_ACCOUNT | |
script: | | |
aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin $AWS_ACCOUNT | |
docker pull $IMAGE_NAME:$IMAGE_TAG | |
docker image tag $IMAGE_NAME:$IMAGE_TAG meongcare/dev | |
chmod 777 ./deploy.sh | |
./deploy.sh | |
docker image prune -f | |
- name: CI/CD 결과 Slack 알림 | |
uses: 8398a7/action-slack@v3 | |
with: | |
status: ${{ job.status }} | |
author_name: Github Action Bot | |
fields: repo,message,commit,author,action,eventName,ref,workflow,job,took | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
if: always() |