1- name : cd-prod
1+ name : cd-dev
22
33on :
44 workflow_dispatch :
55 push :
66 branches : [ main ]
77
88jobs :
9- build-and-push-and-deploy :
9+ build-and-push :
1010 runs-on : ubuntu-22.04
1111
1212 steps :
13- - name : Checkout
13+ - name : ✅ Checkout
1414 uses : actions/checkout@v3
1515
16- - name : Set up JDK 17
16+ - name : ⚙️ Set up JDK 17
1717 uses : actions/setup-java@v3
1818 with :
1919 java-version : 17
@@ -27,55 +27,56 @@ jobs:
2727 aws-secret-access-key : ${{ secrets.AWS_SECRET_KEY }}
2828 aws-region : ${{ secrets.AWS_REGION }}
2929
30- - name : Grant execute permission for gradlew
31- run : chmod +x ./gradlew
32- shell : bash
33-
34- - name : Create Property
35- run : |
36- touch ./operation-api/src/main/resources/application-prod.yml
37- echo "${{ secrets.APPLICATION_PROD }}" >> ./operation-api/src/main/resources/application-prod.yml
38-
39- mkdir -p ./operation-api/src/main/resources/static
40- echo "${{ secrets.APPLE_KEY }}" | base64 --decode > ./operation-api/src/main/resources/static/${{ secrets.APPLE_KEY_NAME }}
41-
4230 - name : 🧱 Build Image and Push to ECR
4331 env :
4432 AWS_ACCOUNT_ID : ${{ secrets.AWS_ACCOUNT_ID }}
4533 AWS_ECR_REPO : ${{ secrets.AWS_ECR_REPO_PROD }}
4634 run : |
4735 aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
48- docker build -t $AWS_ECR_REPO .
36+ docker build -t $AWS_ECR_REPO --build-arg PROFILE=prod .
4937 docker tag $AWS_ECR_REPO:latest public.ecr.aws/$AWS_ACCOUNT_ID/$AWS_ECR_REPO:latest
5038 docker push public.ecr.aws/$AWS_ACCOUNT_ID/$AWS_ECR_REPO:latest
5139
52- - name : 📝 Copy Script File
40+ deploy :
41+ needs : build-and-push
42+ runs-on : ubuntu-latest
43+
44+ steps :
45+ - name : ✅ Checkout
46+ uses : actions/checkout@v3
47+
48+ - name : 🔒 Configure AWS credentials
49+ uses : aws-actions/configure-aws-credentials@v1
50+ with :
51+ aws-access-key-id : ${{ secrets.AWS_ACCESS_KEY }}
52+ aws-secret-access-key : ${{ secrets.AWS_SECRET_KEY }}
53+ aws-region : ${{ secrets.AWS_REGION }}
54+
55+ - name : 📝 Copy Files from S3
5356 env :
5457 REGION : ${{ secrets.AWS_REGION }}
5558 S3_BUCKET : ${{ secrets.AWS_BUCKET_NAME }}
5659 run : |
57- mkdir script
5860 aws s3 cp --region $REGION \
59- s3://$S3_BUCKET/prod/script/deploy.sh script/deploy.sh
60- aws s3 cp --region $REGION \
61- s3://$S3_BUCKET/prod/script/switch.sh script/switch.sh
62- aws s3 cp --region $REGION \
63- s3://$S3_BUCKET/prod/script/valid.sh script/valid.sh
61+ s3://$S3_BUCKET/prod/prod.env ./application.env
6462
65- - name : Make zip file
66- run : zip -r ./$GITHUB_SHA.zip ./script
67- shell : bash
63+ - name : 🔄 Transfer Files to Server
64+ uses : appleboy/scp-action@master
65+ with :
66+ host : ${{ secrets.HOST_PROD }}
67+ username : ec2-user
68+ key : ${{ secrets.PEM_KEY_PROD }}
69+ port : 22
70+ source : " application.env"
71+ target : /home/ubuntu/operation/env
72+ overwrite : true
6873
69- - name : Upload Property Zip to S3 and Create Code Deploy
70- env :
71- REGION : ${{ secrets.AWS_REGION }}
72- DEPLOY_APPLICATION : ${{ secrets.AWS_DEPLOY_APPLICATION }}
73- DEPLOY_GROUP : ${{ secrets.AWS_DEPLOY_GROUP_PROD }}
74- S3_BUCKET : ${{ secrets.AWS_BUCKET_NAME }}
75- run : |
76- aws s3 cp --region $REGION ./$GITHUB_SHA.zip s3://$S3_BUCKET/prod/deploy/$GITHUB_SHA.zip
77-
78- aws deploy create-deployment --application-name $AWS_DEPLOY_APPLICATION_NAME
79- --deployment-config-name CodeDeployDefault.AllAtOnce
80- --deployment-group-name $DEPLOY_GROUP
81- --s3-location bucket=$S3_BUCKET,bundleType=zip,key=prod/deploy/$GITHUB_SHA.zip
74+ - name : 🚀SSH command deploy
75+ uses : appleboy/ssh-action@master
76+ with :
77+ host : ${{ secrets.HOST_PROD }}
78+ username : ubuntu
79+ key : ${{ secrets.PEM_KEY_PROD }}
80+ port : 22
81+ script : |
82+ /home/ubuntu/operation/scripts/deploy.sh
0 commit comments