diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 0333f5a..842ca9d 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,21 +1,18 @@ name: CI/CD Pipeline - on: push: branches: - "**" env: - DOCKER_IMAGE: ${{ secrets.DOCKER_HUB_USERNAME }}/weather_planner_app - + DOCKER_IMAGE: ${{ secrets.DOCKER_HUB_USERNAME }}/weather_planner_app jobs: - #1) Test Job test: runs-on: ubuntu-latest steps: - name: Checkout Repository - uses: actions/Checkout@v3 + uses: actions/checkout@v3 - name: Setup Python uses: actions/setup-python@v4 @@ -37,16 +34,47 @@ jobs: steps: - name: Checkout Repository - uses: actions/Checkout@v3 + uses: actions/checkout@v3 - name: Login to Docker Hub uses: docker/login-action@v3 with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - name: Build Docker Image - run: docker build -t $DOCKER_IMAGE . + run: docker build -t ${{ env.DOCKER_IMAGE }}:latest . - name: Push Image to Docker Hub - run: docker push $DOCKER_IMAGE + run: docker push ${{ env.DOCKER_IMAGE }}:latest + + #3) Deploy to AWS + deploy: + runs-on: ubuntu-latest + needs: build + environment: devtest + + steps: + - name: Deploy Image + uses: appleboy/ssh-action@v1.2.4 + with: + host: ${{ secrets.AWS_ADDRESS }} + username: ${{ secrets.AWS_USERNAME }} + key: ${{ secrets.AWS_PEM }} + script: | + + sudo apt-get update -y + sudo apt-get install docker.io -y + + sudo systemctl start docker + + sudo docker stop weather_planner_app || True + sudo docker rm weather_planner_app || True + sudo docker rmi ${{ env.DOCKER_IMAGE }} || True + + sudo docker pull ${{ env.DOCKER_IMAGE }}:latest + + sudo docker run -d -e DOPPLER_TOKEN=${{ secrets.DOPPLER_TOKEN }} -p 80:8000 --name weather_planner_app ${{ env.DOCKER_IMAGE }}:latest + + sudo systemctl stop docker + sudo systemctl stop docker.socket \ No newline at end of file