From 7066500d344cf4d67c75ecb89cb7fcb909eae9d4 Mon Sep 17 00:00:00 2001 From: sethreec <112038379+sethreec@users.noreply.github.com> Date: Wed, 3 Dec 2025 00:29:57 -0700 Subject: [PATCH 1/9] Update deploy.yml testing update for deploy job in the .yaml --- .github/workflows/deploy.yml | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 0333f5a..bdda608 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,34 @@ 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 + + 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: | + docker pull ${{ env.DOCKER_IMAGE }}:latest + docker stop weather_planner_app || true + docker rm weather_planner_app || true + docker run -d -e DOPPLER_TOKEN=${{ secrets.DOPPLER_TOKEN }} -p 8000:8000 --name weather_planner_app ${{ env.DOCKER_IMAGE }}:latest \ No newline at end of file From 600f4f538439a2d0f31db47b3e8752b6d4b0729b Mon Sep 17 00:00:00 2001 From: sethreec <112038379+sethreec@users.noreply.github.com> Date: Wed, 3 Dec 2025 00:47:12 -0700 Subject: [PATCH 2/9] Update deploy.yml made devtest environment to hold AWS secrets for testing --- .github/workflows/deploy.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index bdda608..48c6040 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -31,6 +31,7 @@ jobs: build: runs-on: ubuntu-latest needs: test + environment: devtest steps: - name: Checkout Repository From c9f1637cbf81188b5b8a4607f8945c900bcdc07c Mon Sep 17 00:00:00 2001 From: sethreec <112038379+sethreec@users.noreply.github.com> Date: Wed, 3 Dec 2025 00:50:32 -0700 Subject: [PATCH 3/9] Update deploy.yml changed wrong job to devtest environment. corrected --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 48c6040..c33dc19 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -31,7 +31,6 @@ jobs: build: runs-on: ubuntu-latest needs: test - environment: devtest steps: - name: Checkout Repository @@ -53,6 +52,7 @@ jobs: deploy: runs-on: ubuntu-latest needs: build + environment: devtest steps: - name: Deploy Image From bde404e8bda04a44791ac7929f2a396a9bb08197 Mon Sep 17 00:00:00 2001 From: sethreec <112038379+sethreec@users.noreply.github.com> Date: Wed, 3 Dec 2025 01:34:03 -0700 Subject: [PATCH 4/9] Update deploy.yml had error with docker not being installed on the aws server. got instructions on how to install docker on ubuntu from docker website and included in script changed 8000:8000 to 80:8000 to match online examples, will need reexamined included command to stop docker after successfully running the container because I don't understand AWS and am worried about racking up a bill, but this will have to be removed before the aws deployment is functional --- .github/workflows/deploy.yml | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c33dc19..911b0d8 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -62,7 +62,31 @@ jobs: username: ${{ secrets.AWS_USERNAME }} key: ${{ secrets.AWS_PEM }} script: | + sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1) + + sudo apt update + sudo apt install ca-certificates curl + sudo install -m 0755 -d /etc/apt/keyrings + sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc + + sudo chmod a+r /etc/apt/keyrings/docker.asc + sudo tee /etc/apt/sources.list.d/docker.sources < Date: Wed, 3 Dec 2025 01:37:23 -0700 Subject: [PATCH 5/9] Update deploy.yml I guess all docker commands must be sudo? Seems sketchy. --- .github/workflows/deploy.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 911b0d8..ba95040 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -84,9 +84,9 @@ jobs: sudo systemctl start docker - docker pull ${{ env.DOCKER_IMAGE }}:latest - docker stop weather_planner_app || true - docker rm weather_planner_app || true - docker run -d -e DOPPLER_TOKEN=${{ secrets.DOPPLER_TOKEN }} -p 80:8000 --name weather_planner_app ${{ env.DOCKER_IMAGE }}:latest + sudo docker pull ${{ env.DOCKER_IMAGE }}:latest + sudo docker stop weather_planner_app || true + sudo docker rm weather_planner_app || true + 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 \ No newline at end of file From 64f1f3e91579972c0924b55055a08026f7168b90 Mon Sep 17 00:00:00 2001 From: sethreec <112038379+sethreec@users.noreply.github.com> Date: Wed, 3 Dec 2025 01:48:17 -0700 Subject: [PATCH 6/9] Update deploy.yml docker was not installing correctly, so trying this alternative and much simpler command using apt-get instead of apt --- .github/workflows/deploy.yml | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index ba95040..3981f86 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -62,25 +62,9 @@ jobs: username: ${{ secrets.AWS_USERNAME }} key: ${{ secrets.AWS_PEM }} script: | - sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1) - sudo apt update - sudo apt install ca-certificates curl - sudo install -m 0755 -d /etc/apt/keyrings - sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc - - sudo chmod a+r /etc/apt/keyrings/docker.asc - sudo tee /etc/apt/sources.list.d/docker.sources < Date: Wed, 3 Dec 2025 02:00:31 -0700 Subject: [PATCH 7/9] Update deploy.yml updated logic to stop and then remove all docker containers before pulling and running the updated image --- .github/workflows/deploy.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 3981f86..c75f368 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -68,9 +68,12 @@ jobs: sudo systemctl start docker + sudo docker stop $(docker ps -q) + sudo docker rm $(docker ps -aq) + sudo docker pull ${{ env.DOCKER_IMAGE }}:latest - sudo docker stop weather_planner_app || true - sudo docker rm weather_planner_app || true + 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 \ No newline at end of file + sudo systemctl stop docker + sudo systemctl stop docker.socket \ No newline at end of file From ccc36e721d8639bf98c276f935854c63fae8eed9 Mon Sep 17 00:00:00 2001 From: sethreec <112038379+sethreec@users.noreply.github.com> Date: Wed, 3 Dec 2025 02:29:08 -0700 Subject: [PATCH 8/9] Update deploy.yml changed cleanup logic to stop the running weather_planner_app container, remove the container, and then remove the old image before pulling the newest --- .github/workflows/deploy.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c75f368..b7cc601 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -68,8 +68,9 @@ jobs: sudo systemctl start docker - sudo docker stop $(docker ps -q) - sudo docker rm $(docker ps -aq) + sudo docker stop weather_planner_app + sudo docker rm weather_planner_app + sudo docker rmi ${{ env.DOCKER_IMAGE }} sudo docker pull ${{ env.DOCKER_IMAGE }}:latest From f5e721958054440db31562fc22d5768da584de24 Mon Sep 17 00:00:00 2001 From: sethreec <112038379+sethreec@users.noreply.github.com> Date: Wed, 3 Dec 2025 02:34:49 -0700 Subject: [PATCH 9/9] Update deploy.yml added || True statements to the cleanup logic to avoid breaking the script if the container/images are not there --- .github/workflows/deploy.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index b7cc601..842ca9d 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -68,9 +68,9 @@ jobs: sudo systemctl start docker - sudo docker stop weather_planner_app - sudo docker rm weather_planner_app - sudo docker rmi ${{ env.DOCKER_IMAGE }} + 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