@@ -2,70 +2,63 @@ name: CI/CD Pipeline
22
33on :
44 push :
5- branches : [ main, develop, feat/CICD ]
6-
7- env :
8- AWS_REGION : ${{ secrets.AWS_REGION }}
9- AWS_ECR_IAM_ROLE : ${{ secrets.AWS_ECR_IAM_ROLE }}
10- AWS_ECR_URL : ${{ secrets.AWS_ECR_URL }}
11- AWS_ECR_REPOSITORY : ${{ secrets.AWS_ECR_REPOSITORY }}
5+ branches : [ develop, feat/CICD ]
126
137jobs :
14- build-and-deploy :
8+ build :
9+ name : Build and push Docker image
1510 runs-on : ubuntu-latest
1611
17- permissions :
18- id-token : write
19- contents : write
20-
2112 steps :
22- # code checkout
2313 - name : Checkout code
2414 uses : actions/checkout@v3
2515
26- # JAVA 17 for build
16+ - uses : actions/checkout@v3
2717 - name : Set up JDK 17
28- uses : actions/setup-java@v4
18+ uses : actions/setup-java@v3
2919 with :
30- distribution : ' temurin'
3120 java-version : ' 17'
21+ distribution : ' adopt'
3222
33- # build project
3423 - name : Build with Gradle
3524 run : |
36- ./gradlew build
25+ chmod +x ./gradlew
26+ ./gradlew clean build -x test
3727
38- # aws auth
39- - name : Configure AWS credentials
40- uses : aws-actions/configure-aws-credentials@v4
28+ - name : Login to Docker Hub
29+ uses : docker/login-action@v2
4130 with :
42- role-to-assume : ${{ env.AWS_ECR_IAM_ROLE }}
43- aws-region : ${{ env.AWS_REGION }}
44- mask-aws-account-id : ' no'
45-
46- # login ECR
47- - name : Login to Amazon ECR
48- id : login-ecr
49- uses : aws-actions/amazon-ecr-login@v2
31+ username : ${{ secrets.DOCKER_USERNAME }}
32+ password : ${{ secrets.DOCKER_PASSWORD }}
5033
51- # set docker buildx
52- - name : Set up Docker Buildx
53- uses : docker/setup-buildx-action@v3
34+ - name : Build Docker image
35+ run : docker build -t devsolfe/server:latest .
5436
55- # make docker image tag
56- - name : Extract metadata tags for Docker
57- id : meta
58- uses : docker/metadata-action@v4
59- with :
60- images : ${{ env.AWS_ECR_URL }}/${{ env.AWS_ECR_REPOSITORY }}
61- tags : |
62- type=sha,prefix=${{ github.run_id }},format=short
37+ - name : Push Docker image to Docker Hub
38+ run : docker push devsolfe/server:latest
6339
64- # docker build&push
65- - name : Build and push
66- uses : docker/build-push-action@v4
40+ deploy :
41+ name : Deploy
42+ needs : build
43+ runs-on : ubuntu-latest
44+ steps :
45+ - name : executing remote ssh commands using ssh key
46+ uses : appleboy/ssh-action@master
6747 with :
68- context : .
69- tags : ${{ steps.meta.outputs.tags }}
70- provenance : false
71- push : true
48+ host : ${{ secrets.SERVER_HOST }}
49+ username : ${{ secrets.SSH_USERNAME }}
50+ key : ${{ secrets.SSH_KEY }}
51+ port : ${{ secrets.PORT }}
52+ script : |
53+ docker pull devsolfe/server:latest
54+
55+ if [ "$(docker ps -aq -f name=server)" ]
56+ then
57+ echo "[ spring is running ]"
58+ docker stop server
59+ docker rm server
60+ else
61+ echo "[ spring is not running ]"
62+ fi
63+
64+ docker run -d --name server -p 80:8080 devsolfe/server
0 commit comments