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 47e0203..b8a2720 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.repoTags 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 @@ -79,9 +66,11 @@ 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 }} + echo "FRONTEND_IMAGE_TAG=${{ steps.date.outputs.date }}" >> $GITHUB_ENV 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 }} + 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