Skip to content

fix: fix syntax error #8

fix: fix syntax error

fix: fix syntax error #8

Workflow file for this run

name: Deploy hollang x weeks52 API Server
on:
workflow_dispatch:
push:
branches:
- 'stage'
paths-ignore:
- 'src/main/resources/static/initData.xlsx'
- 'deploy-prod.yml'
- 'deploy-dev.yml'
- 'Dockerfile-prod'
- 'Dockerfile-dev'
- 'docker-compose.prod.yml'
- 'docker-compose.dev.yml'
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
ECR_API_SERVER_REPOSITORY: hollang-weeks52-api-server-stage
ECR_INFERRING_SERVER_REPOSITORY: hollang-weeks52-inferring-server-stage
S3_DEPLOY_BUCKET: ${{ secrets.AWS_DEPLOY_BUCKET }}
S3_DEPLOY_BUCKET_DESTINATION_DIRECTORY: stage
CODE_DEPLOY_GROUP_NAME: stage
IMAGE_TAG: ${{ github.sha }}
jobs:
test-and-build:
environment: test
runs-on: ubuntu-latest
steps:
# Configure to AWS
- name: aws configure
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ env.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ env.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-northeast-2
# Login to ECR
- name: Login to ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
# Pull inferring server and run
- name: Pull inferring server image and run
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
run: |
docker pull $ECR_REGISTRY/$ECR_INFERRING_SERVER_REPOSITORY:latest
docker run -d -p 5000:5000 --name hollang-weeks52-inferring-server $ECR_REGISTRY/$ECR_INFERRING_SERVER_REPOSITORY:latest
# Checkout source code
- name: Checkout code
uses: actions/checkout@v3
# Setting JDK 17
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'corretto'
# Cache gradle
- name: Gradle Caching
id: cache
uses: actions/cache@v3
with:
path: |
./.gradle/caches
./.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
# Build and test
- name: Build and Test with Gradle
if: steps.cache.outputs.cache-hit != 'true'
run: ./gradlew clean build
shell: bash
# Build docker image and push to AWS ECR
- name: Build docker image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
run: docker build -t $ECR_REGISTRY/$ECR_API_SERVER_REPOSITORY:$IMAGE_TAG -f Dockerfile-stage .
# Push docker image to AWS ECR
- name: Push docker image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
run: docker push $ECR_REGISTRY/$ECR_API_SERVER_REPOSITORY:$IMAGE_TAG
deploy:
needs: test-and-build
environment: stage
runs-on: ubuntu-latest
steps:
# Checkout source code
- name: Checkout code
uses: actions/checkout@v3
# Configure to AWS
- name: aws configure
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ env.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ env.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-northeast-2
# Login to ECR
- name: Login to ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
# Set AWS Codedeploy script files
- name: Set AWS Codedeploy script files
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
run: |
mkdir scripts
echo "docker stop $(docker ps -aq)" > scripts/stop_services.sh
echo "docker rm $(docker ps -aq)" >> scripts/stop_services.sh
echo "docker rmi -f $(docker images -aq)" >> scripts/stop_services.sh
echo "aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin $ECR_REGISTRY" > scripts/config_services.sh
echo "docker pull $ECR_REGISTRY/$ECR_INFERRING_SERVER_REPOSITORY:latest" >> scripts/config_services.sh
echo "docker pull $ECR_REGISTRY/$ECR_API_SERVER_REPOSITORY:$IMAGE_TAG" >> scripts/config_services.sh
echo "ECR_REGISTRY=$ECR_REGISTRY IMAGE_TAG=$IMAGE_TAG docker-compose -f /home/ec2-user/app/docker-compose.stage.yml up -d" > scripts/start_services.sh
# Setting environment file
- name: Setting env files
run: echo "${{ secrets.ENV }}" > .env
shell: bash
# Zip deploy files
- name: Zip deploy files
run: |
zip -r hollang-weeks52-deploy-$IMAGE_TAG.zip ./scripts docker-compose.stage.yml .env appspec.yml
# Upload deploy files to AWS S3
- name: Upload deploy files to AWS S3
uses: hkusu/s3-upload-action@v2
with:
aws-access-key-id: ${{ env.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ env.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-northeast-2
aws-bucket: ${{ env.S3_DEPLOY_BUCKET }}
bucket-root: /
destination-dir: ${{ env.S3_DEPLOY_BUCKET_DESTINATION_DIRECTORY }}
file-path: ./hollang-weeks52-deploy-${{ env.IMAGE_TAG }}.zip
# Deploy application
- name: Deploy application
run: |
aws deploy create-deployment --application-name HollangWeeks52Application \
--deployment-config-name CodeDeployDefault.OneAtATime \
--deployment-group-name $CODE_DEPLOY_GROUP_NAME \
--s3-location bucket=$S3_DEPLOY_BUCKET,bundleType=zip,key=$S3_DEPLOY_BUCKET_DESTINATION_DIRECTORY/hollang-weeks52-deploy-$IMAGE_TAG.zip