Skip to content

Develop -> Main

Develop -> Main #135

Workflow file for this run

name: DeepValley server CI/CD
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
env:
DEPLOY_S3_BUCKET_NAME: deep-valley-back-deploy
IMAGE_S3_BUCKET_NAME: deep-valley-image
AWS_REGION: ap-northeast-2
CODE_DEPLOY_APPLICATION_NAME: deep-valley
CODE_DEPLOY_DEPLOYMENT_GROUP_NAME: deep-valley-server
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew clean build -Pprofile=prod --exclude-task test
- name: Display current commit
run: git log -1
- name: Save commit hash
run: git rev-parse HEAD > commit_hash.txt
# 디렉토리 생성
- name: Make Directory
run: mkdir -p deploy
# Jar 파일 복사
- name: Copy Jar
run: cp ./build/libs/*.jar ./deploy
# appspec.yml 파일 복사
- name: Copy appspec.yml
run: cp appspec.yml ./deploy
# Grant permission for deploy.sh
- name: Grant execute permission for deploy.sh
run: chmod +x ./scripts/deploy.sh
# script files 복사
- name: Copy script
run: cp ./scripts/*.sh ./deploy
# commit hash 파일 복사
- name: Copy commit hash
run: cp commit_hash.txt ./deploy
# Secret key 복사
- name: Setup environment variables
run: |
touch ./deploy/secrets.yml
echo "CLOUD_AWS_REGION_STATIC: ${{ env.AWS_REGION }}" >> ./deploy/secrets.yml
echo "CLOUD_AWS_CREDENTIALS_ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY }}" >> ./deploy/secrets.yml
echo "CLOUD_AWS_CREDENTIALS_SECRET_KEY: ${{ secrets.AWS_SECRET_KEY }}" >> ./deploy/secrets.yml
echo "CLOUD_AWS_S3_BUCKET: ${{ env.IMAGE_S3_BUCKET_NAME }}" >> ./deploy/secrets.yml
echo "JWT_SECRETKEY: ${{ secrets.JWT_SECRETKEY }}" >> ./deploy/secrets.yml
echo "JWT_EXPIRETIME: ${{ secrets.JWT_EXPIRETIME }}" >> ./deploy/secrets.yml
echo "KAKAO_CLIENT_ID: ${{ secrets.KAKAO_CLIENT_ID }}" >> ./deploy/secrets.yml
echo "KAKAO_REDIRECT_URI: ${{ secrets.KAKAO_REDIRECT_URI }}" >> ./deploy/secrets.yml
echo "MYSQL_URL: ${{ secrets.MYSQL_URL }}" >> ./deploy/secrets.yml
echo "MYSQL_USERNAME: ${{ secrets.MYSQL_USERNAME }}" >> ./deploy/secrets.yml
echo "MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }}" >> ./deploy/secrets.yml
echo "SWAGGER_PRODUCTION_URL: ${{ secrets.SWAGGER_PRODUCTION_URL }}" >> ./deploy/secrets.yml
echo "SWAGGER_DEVELOPMENT_URL: ${{ secrets.SWAGGER_DEVELOPMENT_URL }}" >> ./deploy/secrets.yml
- name: Make zip file
run: zip -r ./deepvalley.zip ./deploy
shell: bash
- 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_KEY }}
aws-region: ${{ env.AWS_REGION }}
- name: Upload to S3
run: aws s3 cp --region ${{ env.AWS_REGION }} ./deepvalley.zip s3://${{ env.DEPLOY_S3_BUCKET_NAME }}/
# Deploy
- name: Deploy to AWS EC2 from S3
run: |
aws deploy create-deployment \
--application-name ${{ env.CODE_DEPLOY_APPLICATION_NAME }} \
--deployment-config-name CodeDeployDefault.AllAtOnce \
--deployment-group-name ${{ env.CODE_DEPLOY_DEPLOYMENT_GROUP_NAME }} \
--s3-location bucket=${{ env.DEPLOY_S3_BUCKET_NAME }},key=deepvalley.zip,bundleType=zip