From e9be6beb51919ccbbe8c3768d6ff429fea5085f4 Mon Sep 17 00:00:00 2001 From: "Mahadik, Mukul Chandrakant" Date: Fri, 20 Sep 2024 22:48:01 -0700 Subject: [PATCH] Task A-2: Storing latest tag in .env file + Read raw .env file Refer to details in cleanup issue: Task A-2: https://github.com/e-mission/e-mission-docs/issues/1082#issuecomment-2364583414 Added .env file initialized with the current latest tag of admin-dash and server image. Internal script can read docker image tags directly from .env.tags using curl to fetch raw file contents. Storing server tag as well since admin-dash Dockerfile uses it. Removed workflow dispatch inputs No longer need inputs since reading from .env.tags in server repo directly ------ Read raw file contents directly instead of using REST API REST API endpoint returns base64 encoded data which then needs to be decoded. Can simply read the Raw file contents from the publicly available file. ----- For now not removing artifacts until the internal script is updated to handle this change. --- .env | 1 + .github/workflows/image_build_push.yml | 38 +++++++++++--------------- 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/.env b/.env index b290898..f46f271 100644 --- a/.env +++ b/.env @@ -1 +1,2 @@ +ADMIN_DASH_IMAGE_TAG=2024-09-20--11-21 SERVER_IMAGE_TAG=2024-09-20--06-45 diff --git a/.github/workflows/image_build_push.yml b/.github/workflows/image_build_push.yml index c3c63e5..3033138 100644 --- a/.github/workflows/image_build_push.yml +++ b/.github/workflows/image_build_push.yml @@ -5,10 +5,6 @@ on: branches: [ master ] workflow_dispatch: - inputs: - docker_image_tag: - description: "Latest Docker image tags passed from e-mission-server repository on image build and push" - required: true env: DOCKER_USER: ${{secrets.DOCKER_USER}} @@ -21,18 +17,24 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Fetch server image tag + id: get-server-tag + run: | + response=$(curl -s https://raw.githubusercontent.com/MukuFlash03/e-mission-server/refs/heads/cleanup-cicd/.env) + SERVER_IMAGE_TAG=$(echo "$response" | grep "SERVER_IMAGE_TAG=" | cut -d'=' -f2) + echo "SERVER_IMAGE_TAG=$SERVER_IMAGE_TAG" >> "$GITHUB_OUTPUT" + - name: Set docker image tags id: set-tags run: | set -a; source .env; set +a - echo "DOCKER_TAG_FROM_PUSH=${SERVER_IMAGE_TAG}" >> "$GITHUB_OUTPUT" - echo "DOCKER_TAG_FROM_WORKFLOW_DISPATCH=${{ github.event.inputs.docker_image_tag }}" >> "$GITHUB_OUTPUT" + echo "ADMIN_DASH_IMAGE_TAG=${ADMIN_DASH_IMAGE_TAG}" >> "$GITHUB_OUTPUT" - - name: Print input docker image tag + - name: Print input docker image tags run: | echo "Event name: ${{ github.event_name }}" - echo "Latest docker image tag (push): ${{ steps.set-tags.outputs.DOCKER_TAG_FROM_PUSH }}" - echo "Latest docker image tag (workflow_dispatch): ${{ steps.set-tags.outputs.DOCKER_TAG_FROM_WORKFLOW_DISPATCH }}" + echo "Current admin-dash image tag (push): ${{ steps.set-tags.outputs.ADMIN_DASH_IMAGE_TAG }}" + echo "Latest server image tag (${{ github.event_name }}): ${{ steps.get-server-tag.outputs.SERVER_IMAGE_TAG }}" - name: docker login run: | # log into docker hub account @@ -47,11 +49,7 @@ jobs: - name: build docker image run: | - if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then - SERVER_IMAGE_TAG=${{ steps.set-tags.outputs.DOCKER_TAG_FROM_WORKFLOW_DISPATCH }} docker compose -f docker-compose-prod.yml build - else - SERVER_IMAGE_TAG=${{ steps.set-tags.outputs.DOCKER_TAG_FROM_PUSH }} docker compose -f docker-compose-prod.yml build - fi + SERVER_IMAGE_TAG=${{ steps.get-server-tag.outputs.SERVER_IMAGE_TAG }} docker compose -f docker-compose-prod.yml build docker images - name: rename docker image @@ -64,13 +62,9 @@ jobs: - 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=${{ steps.set-tags.outputs.DOCKER_TAG_FROM_WORKFLOW_DISPATCH }}" > .env - else - echo "Push event: Restoring latest server image tag from .env" - fi - + echo "ADMIN_DASH_IMAGE_TAG=${{ steps.date.outputs.date }}" > .env + echo "SERVER_IMAGE_TAG=${{ steps.get-server-tag.outputs.SERVER_IMAGE_TAG }}" >> .env + - name: Add, Commit, Push changes to .env file run: | git config --local user.email "action@github.com" @@ -79,7 +73,7 @@ jobs: 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 commit -m "Updated docker image tags in .env file to the latest timestamp" git push origin fi