From b3650a5175ece727f9116734460cb81ad553db02 Mon Sep 17 00:00:00 2001 From: "Mahadik, Mukul Chandrakant" Date: Wed, 14 Aug 2024 12:33:15 -0700 Subject: [PATCH 1/3] Adding suffix to image tag to match image name in docker-compose.yml Fix for Pipeline failure: https://github.com/e-mission/em-public-dashboard/pull/125#issuecomment-2289651090 --- .github/workflows/image_build_push.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/image_build_push.yml b/.github/workflows/image_build_push.yml index 47e0203..fc6bb8f 100644 --- a/.github/workflows/image_build_push.yml +++ b/.github/workflows/image_build_push.yml @@ -79,9 +79,9 @@ jobs: - name: rename docker images run: | if [ "${{ github.event_name }}" == "push" ]; then - docker image tag em-pub-dash/frontend:latest $DOCKER_USER/${GITHUB_REPOSITORY#*/}_frontend:${GITHUB_REF##*/}_${{ steps.date.outputs.date }} + docker image tag em-pub-dash-prod/frontend:latest $DOCKER_USER/${GITHUB_REPOSITORY#*/}_frontend:${GITHUB_REF##*/}_${{ steps.date.outputs.date }} fi - docker image tag em-pub-dash/viz-scripts:latest $DOCKER_USER/${GITHUB_REPOSITORY#*/}_notebook:${GITHUB_REF##*/}_${{ steps.date.outputs.date }} + docker image tag em-pub-dash-prod/viz-scripts:latest $DOCKER_USER/${GITHUB_REPOSITORY#*/}_notebook:${GITHUB_REF##*/}_${{ steps.date.outputs.date }} - name: push docker images run: | From 309b7c8c55c4c1526070d7e1b3885950585db122 Mon Sep 17 00:00:00 2001 From: "Mahadik, Mukul Chandrakant" Date: Wed, 14 Aug 2024 16:51:13 -0700 Subject: [PATCH 2/3] Two artifacts added using separate .env.repoTags file --- .env.repoTags | 1 + .github/workflows/image_build_push.yml | 75 ++++++++++++++++---------- 2 files changed, 48 insertions(+), 28 deletions(-) create mode 100644 .env.repoTags diff --git a/.env.repoTags b/.env.repoTags new file mode 100644 index 0000000..7c164f4 --- /dev/null +++ b/.env.repoTags @@ -0,0 +1 @@ +FRONTEND_IMAGE_TAG= \ No newline at end of file diff --git a/.github/workflows/image_build_push.yml b/.github/workflows/image_build_push.yml index fc6bb8f..bcea2ca 100644 --- a/.github/workflows/image_build_push.yml +++ b/.github/workflows/image_build_push.yml @@ -27,34 +27,21 @@ jobs: - name: Set docker image tag from .env file run: | set -a; source .env; set +a + echo "Restoring latest server image tag from .env" echo "DOCKER_TAG_FROM_PUSH=${SERVER_IMAGE_TAG}" >> $GITHUB_ENV + - name: Set docker image tag from .env file + run: | + set -a; source .env.repoTags; set +a + echo "Restoring latest frontend image tag from .env.repoTags" + echo "FRONTEND_IMAGE_TAG=${FRONTEND_IMAGE_TAG}" >> $GITHUB_ENV + - name: Print input docker image tag run: | echo "Event name: ${{ github.event_name }}" echo "Latest docker image tag (push): ${{ env.DOCKER_TAG_FROM_PUSH }}" echo "Latest docker image tag (workflow_dispatch): ${{ env.DOCKER_TAG_FROM_WORKFLOW_DISPATCH }}" - - - name: Update .env file - run: | - if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then - echo "Workflow_dispatch: New server image built and pushed, Updating image tag in .env" - echo "SERVER_IMAGE_TAG=$DOCKER_TAG_FROM_WORKFLOW_DISPATCH" > .env - else - echo "Push event: Restoring latest server image tag from .env" - fi - - - name: Add, Commit, Push changes to .env file - run: | - git config --local user.email "action@github.com" - git config --local user.name "Github Actions bot to update .env with latest tags" - if git diff --quiet; then - echo "Latest timestamp already present in .env file, no changes to commit" - else - git add .env - git commit -m "Updated docker image tag in .env file to the latest timestamp" - git push origin - fi + echo "Current frontend image tag (push): ${{ env.FRONTEND_IMAGE_TAG }}" - name: docker login run: | # log into docker hub account @@ -80,8 +67,10 @@ jobs: run: | if [ "${{ github.event_name }}" == "push" ]; then docker image tag em-pub-dash-prod/frontend:latest $DOCKER_USER/${GITHUB_REPOSITORY#*/}_frontend:${GITHUB_REF##*/}_${{ steps.date.outputs.date }} + echo "FRONTEND_IMAGE_TAG=${{ steps.date.outputs.date }}" >> $GITHUB_ENV fi docker image tag em-pub-dash-prod/viz-scripts:latest $DOCKER_USER/${GITHUB_REPOSITORY#*/}_notebook:${GITHUB_REF##*/}_${{ steps.date.outputs.date }} + echo "NOTEBOOK_IMAGE_TAG=${{ steps.date.outputs.date }}" >> $GITHUB_ENV - name: push docker images run: | @@ -89,15 +78,45 @@ jobs: docker push $DOCKER_USER/${GITHUB_REPOSITORY#*/}_frontend:${GITHUB_REF##*/}_${{ steps.date.outputs.date }} fi docker push $DOCKER_USER/${GITHUB_REPOSITORY#*/}_notebook:${GITHUB_REF##*/}_${{ steps.date.outputs.date }} + + - name: Update .env file + run: | + if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then + echo "Workflow_dispatch: New server image built and pushed, Updating image tag in .env" + echo "SERVER_IMAGE_TAG=$DOCKER_TAG_FROM_WORKFLOW_DISPATCH" > .env + else + echo "Push event: New frontend image built and pushed, Updating image tag in .env.repoTags" + echo "FRONTEND_IMAGE_TAG=${{ steps.date.outputs.date }}" > .env.repoTags + fi + + - name: Add, Commit, Push changes to .env file + run: | + git config --local user.email "action@github.com" + git config --local user.name "Github Actions bot to update .env with latest tags" + if git diff --quiet; then + echo "Latest timestamps already present in .env files, no changes to commit" + else + git add .env .env.repoTags + git commit -m "Updated docker image tags in .env files to the latest timestamps" + git push origin + fi - - name: Create a text file + - name: Create tag files run: | - echo ${{ steps.date.outputs.date }} > public_dash_tag_file.txt - echo "Created tag text file" + echo ${{ env.FRONTEND_IMAGE_TAG }} > frontend_tag_file.txt + echo ${{ env.NOTEBOOK_IMAGE_TAG }} > notebook_tag_file.txt + echo "Created tag text files" - - name: Upload Artifact + - name: Upload Frontend Tag Artifact + uses: actions/upload-artifact@v4 + with: + name: frontend-image-tag + path: frontend_tag_file.txt + overwrite: true + + - name: Upload Notebook Tag Artifact uses: actions/upload-artifact@v4 with: - name: public-dash-image-tag - path: public_dash_tag_file.txt - overwrite: true + name: notebook-image-tag + path: notebook_tag_file.txt + overwrite: true From eced04fad150e59b8f975aad7d097bcb0618074d Mon Sep 17 00:00:00 2001 From: "Mahadik, Mukul Chandrakant" Date: Wed, 14 Aug 2024 17:21:00 -0700 Subject: [PATCH 3/3] Moving .env file update and git commit to the end This will ensure that if the CI/CD pipeline fails in any prior steps such as the docker related ones, the .env file isn't updated. This is because the the docker failures can include errors image not found which can occur due to incorrect tags. --- .github/workflows/image_build_push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image_build_push.yml b/.github/workflows/image_build_push.yml index bcea2ca..b8a2720 100644 --- a/.github/workflows/image_build_push.yml +++ b/.github/workflows/image_build_push.yml @@ -30,7 +30,7 @@ jobs: echo "Restoring latest server image tag from .env" echo "DOCKER_TAG_FROM_PUSH=${SERVER_IMAGE_TAG}" >> $GITHUB_ENV - - name: Set docker image tag from .env file + - name: Set docker image tag from .env.repoTags file run: | set -a; source .env.repoTags; set +a echo "Restoring latest frontend image tag from .env.repoTags"