@@ -50,54 +50,62 @@ jobs:
50
50
51
51
# 빌드 및 테스트 단계.
52
52
- name : Grant execute permission for gradlew
53
- run : chmod +x gradlew
53
+ run : chmod +x ./ gradlew
54
54
55
55
# gradle build
56
56
- name : Build with Gradle
57
- run : ./gradlew build -x test
57
+ run : ./gradlew clean build -x test
58
58
59
- # push 하기 위해 로그인
60
- - name : Docker Hub 로그인
61
- uses : docker/login-action@v3
59
+ - name : Configure AWS credentials
60
+ uses : aws-actions/configure-aws-credentials@v1
62
61
with :
63
- username : ${{ secrets.DOCKER_USERNAME }}
64
- password : ${{ secrets.DOCKER_PASSWORD }}
62
+ aws-access-key-id : ${{ secrets.AWS_ACTION_ACCESS_KEY_ID }}
63
+ aws-secret-access-key : ${{ secrets.AWS_ACTION_SECRET_ACCESS_KEY }}
64
+ aws-region : ap-northeast-2
65
65
66
- # 도커 빌드 & 이미지 push
67
- - name : Docker build & Push
66
+ - name : Login to Amazon ECR
67
+ id : login-ecr
68
+ uses : aws-actions/amazon-ecr-login@v1
69
+
70
+ - name : Build, tag, and push image to Amazon ECR
71
+ id : build-image
72
+ env :
73
+ ECR_REGISTRY : ${{ steps.login-ecr.outputs.registry }}
74
+ ECR_REPOSITORY : beanstalk
75
+ IMAGE_TAG : latest
76
+ run : |
77
+ docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
78
+ docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
79
+ echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"
80
+
81
+
82
+ - name : Get current time
83
+ uses : 1466587594/get-current-time@v2
84
+ id : current-time
85
+ with :
86
+ format : YYYY-MM-DDTHH-mm-ss
87
+ utcOffset : " +09:00"
88
+
89
+ - name : Show Current Time
90
+ run : echo "CurrentTime=${{ steps.current-time.outputs.formattedTime }}"
91
+ shell : bash
92
+
93
+ - name : Generate deployment package
68
94
run : |
69
- docker build -f Dockerfile -t ${{ secrets.DOCKER_USERNAME }}/sponus-docker .
70
- docker push ${{ secrets.DOCKER_USERNAME }}/sponus-docker
95
+ mkdir -p deploy
96
+ cp -r .ebextensions-dev deploy/.ebextensions
97
+ cp -r .platform deploy/.platform
98
+ cp Dockerrun.aws.json deploy/Dockerrun.aws.json
99
+ cd deploy && zip -r deploy.zip .
71
100
72
- # Docker 파일을 EC2 서버에 배포
73
- - name : Deploy to Prod
74
- uses : appleboy/ssh-action@master
75
- id : deploy-prod
101
+ - name : Beanstalk Deploy
102
+ uses : einaregilsson/beanstalk-deploy@v20
76
103
with :
77
- host : ${{ secrets.HOST }}
78
- username : ec2-user
79
- key : ${{ secrets.PRIVATE_KEY }}
80
- port : 22
81
- script : |
82
- if [ ! -z "$(docker ps -q)" ]; then
83
- docker stop $(docker ps -q)
84
- fi
85
-
86
- if [ ! -z "$(docker ps -aq)" ]; then
87
- docker rm $(docker ps -aq)
88
- fi
89
-
90
- if [ ! -z "$(docker network ls -qf name=my-network)" ]; then
91
- docker network rm my-network
92
- fi
93
-
94
- echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
95
-
96
- docker pull ${{ secrets.DOCKER_USERNAME }}/sponus-docker
97
- docker pull redis
98
- docker network create my-network
99
-
100
- docker run --name my-redis --network my-network -d redis
101
- docker run -e SPRING_PROFILES_ACTIVE=prod -it -d -p 8080:8080 --name sponus-docker -e TZ=Asia/Seoul --network my-network ${{ secrets.DOCKER_USERNAME }}/sponus-docker
102
-
103
- docker system prune -f
104
+ aws_access_key : ${{ secrets.AWS_ACTION_ACCESS_KEY_ID }}
105
+ aws_secret_key : ${{ secrets.AWS_ACTION_SECRET_ACCESS_KEY }}
106
+ application_name : project-prod-study
107
+ environment_name : Project-prod-study-env
108
+ version_label : github-action-${{ steps.current-time.outputs.formattedTime }}
109
+ region : ap-northeast-2
110
+ deployment_package : deploy/deploy.zip
111
+ wait_for_deployment : false
0 commit comments