From 0480a0fb718c6a739e41e0551525feb6c676b7c7 Mon Sep 17 00:00:00 2001 From: leoBitto Date: Mon, 1 Apr 2024 22:47:15 +0200 Subject: [PATCH] merged in only one workflow --- .github/workflows/{deploy.yml => CI-CD.yml} | 92 +++++++++++++++++---- .github/workflows/build-and-push.yml | 73 ---------------- 2 files changed, 75 insertions(+), 90 deletions(-) rename .github/workflows/{deploy.yml => CI-CD.yml} (65%) delete mode 100644 .github/workflows/build-and-push.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/CI-CD.yml similarity index 65% rename from .github/workflows/deploy.yml rename to .github/workflows/CI-CD.yml index 618656ef..2405fb36 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/CI-CD.yml @@ -1,13 +1,73 @@ -name: Deploy +name: CI/CD on: push: branches: main - workflow_dispatch: + workflow_dispatch: + env: REGISTRY: ghcr.io - IMAGE_NAME: tester + IMAGE_NAME: djangoforge + +jobs: + build_and_push: + runs-on: ubuntu-latest + steps: + - name: Checkout the repo + uses: actions/checkout@v2 + + - name: Create config directory and .env file + run: | + mkdir -p config + echo "DEBUG=False" >> config/.env + echo "SECRET_KEY=foo" >> config/.env + echo "DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1] *" >> config/.env + echo "SQL_ENGINE=django.db.backends.postgresql" >> config/.env + echo "POSTGRES_DB=${{ secrets.POSTGRES_DB }}" >> config/.env + echo "POSTGRES_USER=${{ secrets.POSTGRES_USER }}" >> config/.env + echo "POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}" >> config/.env + echo "SQL_HOST=db" >> config/.env + echo "SQL_PORT=5432" >> config/.env + echo "DATABASE=postgres" >> config/.env + echo "DOMAIN=${{ secrets.DOMAIN }}" >> config/.env + working-directory: . + + - name: Display content of .env file + run: cat ./config/.env + + - name: Update Nginx configuration file + run: | + sed -i "s/server_name localhost/server_name ${{ secrets.DOMAIN }}/g" ./nginx/nginx.conf + working-directory: . + + - name: Build Docker image using Docker Compose + run: docker-compose -f docker-compose.dev.yml build + + - name: verify that all the container have been built + run: docker images + + - name: LOG IN to container registry + run: echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin + + - name: set lower case owner name + run: | + echo "OWNER_LC=${OWNER,,}" >>${GITHUB_ENV} + env: + OWNER: '${{ github.repository_owner }}' + + - name: Tag image + run: | + echo ${REGISTRY}/${OWNER_LC}/${IMAGE_NAME}:latest + docker tag webapp_django ${REGISTRY}/${OWNER_LC}/${IMAGE_NAME}:latest + + - name: List Docker images + run: docker images + + - name: Push image to GitHub Container Registry + run: | + echo ${REGISTRY}/${OWNER_LC}/${{ env.IMAGE_NAME }}:latest + docker push ${REGISTRY}/${OWNER_LC}/${{ env.IMAGE_NAME }}:latest jobs: deploy: @@ -32,7 +92,7 @@ jobs: script: | mkdir -p "/opt/${{ env.REPO_NAME }}" mkdir -p "/opt/${{ env.REPO_NAME }}/config" - rm /opt/${{ env.REPO_NAME }}/confing/.env + rm /opt/${{ env.REPO_NAME }}/config/.env echo "DEBUG=False" >> "/opt/${{ env.REPO_NAME }}/config/.env" echo "SECRET_KEY=foo" >> "/opt/${{ env.REPO_NAME }}/config/.env" echo "DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1] *" >> "/opt/${{ env.REPO_NAME }}/config/.env" @@ -103,16 +163,16 @@ jobs: env: OWNER: '${{ github.repository_owner }}' - # - name: LOG IN to container registry - # run: | - # echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin - - # - name: Pull image from GitHub Container Registry - # run: | - # echo ${REGISTRY}/${OWNER_LC}/${{ env.IMAGE_NAME }}:latest - # docker pull ${REGISTRY}/${OWNER_LC}/${{ env.IMAGE_NAME }}:latest - # docker tag ${REGISTRY}/${OWNER_LC}/${{ env.IMAGE_NAME }}:latest ${{ env.IMAGE_NAME }} - # docker images + # - name: LOG IN to container registry + # run: | + # echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin + + # - name: Pull image from GitHub Container Registry + # run: | + # echo ${REGISTRY}/${OWNER_LC}/${{ env.IMAGE_NAME }}:latest + # docker pull ${REGISTRY}/${OWNER_LC}/${{ env.IMAGE_NAME }}:latest + # docker tag ${REGISTRY}/${OWNER_LC}/${{ env.IMAGE_NAME }}:latest ${{ env.IMAGE_NAME }} + # docker images - name: Stop And Start containers uses: appleboy/ssh-action@v0.1.3 @@ -134,6 +194,4 @@ jobs: # docker-compose -f /opt/${{ env.REPO_NAME }}/docker-compose-prod.yml exec -T web python manage.py migrate --noinput # docker-compose -f /opt/${{ env.REPO_NAME }}/docker-compose-prod.yml exec -T web python manage.py collectstatic --noinput --clear - - - + diff --git a/.github/workflows/build-and-push.yml b/.github/workflows/build-and-push.yml deleted file mode 100644 index 79424427..00000000 --- a/.github/workflows/build-and-push.yml +++ /dev/null @@ -1,73 +0,0 @@ -name: Build & Push on GHCR - -on: - push: - branches: main - workflow_dispatch: - - -env: - REGISTRY: ghcr.io - IMAGE_NAME: tester - -jobs: - build_and_push: - runs-on: ubuntu-latest - steps: - - name: Checkout the repo - uses: actions/checkout@v2 - - - name: Create config directory and .env file - run: | - mkdir -p config - echo "DEBUG=False" >> config/.env - echo "SECRET_KEY=foo" >> config/.env - echo "DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1] *" >> config/.env - echo "SQL_ENGINE=django.db.backends.postgresql" >> config/.env - echo "POSTGRES_DB=${{ secrets.POSTGRES_DB }}" >> config/.env - echo "POSTGRES_USER=${{ secrets.POSTGRES_USER }}" >> config/.env - echo "POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}" >> config/.env - echo "SQL_HOST=db" >> config/.env - echo "SQL_PORT=5432" >> config/.env - echo "DATABASE=postgres" >> config/.env - echo "DOMAIN=${{ secrets.DOMAIN }}" >> config/.env - working-directory: . - - - name: Display content of .env file - run: cat ./config/.env - - - name: Update Nginx configuration file - run: | - sed -i "s/server_name localhost/server_name ${{ secrets.DOMAIN }}/g" ./nginx/nginx.conf - working-directory: . - - - name: Build Docker image using Docker Compose - run: docker-compose -f docker-compose.dev.yml build - - - name: verify that all the container have been built - run: docker images - - - name: LOG IN to container registry - run: echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin - - - name: set lower case owner name - run: | - echo "OWNER_LC=${OWNER,,}" >>${GITHUB_ENV} - env: - OWNER: '${{ github.repository_owner }}' - - - name: Tag image - run: | - echo ${REGISTRY}/${OWNER_LC}/${IMAGE_NAME}:latest - docker tag webapp_django ${REGISTRY}/${OWNER_LC}/${IMAGE_NAME}:latest - - - name: List Docker images - run: docker images - - - name: Push image to GitHub Container Registry - run: | - echo ${REGISTRY}/${OWNER_LC}/${{ env.IMAGE_NAME }}:latest - docker push ${REGISTRY}/${OWNER_LC}/${{ env.IMAGE_NAME }}:latest - - - \ No newline at end of file