1+ name : ODG-Backend CI/CD v2
2+
3+ on :
4+ push :
5+ branches : [ "main", "develop" ]
6+
7+ jobs :
8+ build-and-deploy :
9+ runs-on : ubuntu-latest
10+
11+ steps :
12+ - name : Checkout
13+ uses : actions/checkout@v3
14+
15+ - name : Login to Docker Hub
16+ uses : docker/login-action@v2
17+ with :
18+ username : ${{ secrets.DOCKERHUB_USERNAME }}
19+ password : ${{ secrets.DOCKERHUB_TOKEN }}
20+
21+ - name : Build and push Docker image
22+ uses : docker/build-push-action@v4
23+ with :
24+ context : .
25+ push : true
26+ tags : ${{ secrets.DOCKERHUB_USERNAME }}/team-b-25-1-be:latest
27+
28+ - name : Copy deployment files to EC2
29+ uses : appleboy/scp-action@master
30+ with :
31+ host : ${{ secrets.AWS_EC2_HOST }}
32+ username : ${{ secrets.AWS_EC2_USERNAME }}
33+ key : ${{ secrets.AWS_EC2_SSH_KEY }}
34+ source : " deploy/*"
35+ target : " /home/ubuntu/app"
36+
37+ - name : Deploy on EC2
38+ uses : appleboy/ssh-action@master
39+ with :
40+ host : ${{ secrets.AWS_EC2_HOST }}
41+ username : ${{ secrets.AWS_EC2_USERNAME }}
42+ key : ${{ secrets.AWS_EC2_SSH_KEY }}
43+ script : |
44+ export DOCKERHUB_USERNAME=${{ secrets.DOCKERHUB_USERNAME }}
45+ export DB_URL="${{ secrets.DB_URL }}"
46+ export DB_USERNAME=${{ secrets.DB_USERNAME }}
47+ export DB_PASSWORD=${{ secrets.DB_PASSWORD }}
48+ export GOOGLE_API_KEY=${{ secrets.GOOGLE_API_KEY }}
49+
50+ cd /home/ubuntu/app/deploy
51+
52+ cat << EOF > .env
53+ DB_URL=${{ secrets.DB_URL }}
54+ DB_USERNAME=${{ secrets.DB_USERNAME }}
55+ DB_PASSWORD=${{ secrets.DB_PASSWORD }}
56+ GOOGLE_API_KEY=${{ secrets.GOOGLE_API_KEY }}
57+ DOCKERHUB_USERNAME=${{ secrets.DOCKERHUB_USERNAME }}
58+ EOF
59+
60+ echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
61+
62+ # docker-compose로 실행
63+ docker-compose -f docker-compose.yml pull
64+ docker-compose -f docker-compose.yml up -d --remove-orphans
65+
66+ docker image prune -af
0 commit comments