@@ -38,18 +38,25 @@ jobs:
3838 fi
3939
4040 - name : Build docker image
41+ if : steps.check_files.outputs.build_ran == 'true'
4142 id : build
4243 run : |
4344 IMAGE_NAME="nix-test-env:$(git rev-parse --short HEAD)"
4445 docker build -t ${IMAGE_NAME} -f ./nix_test_env/Dockerfile .
4546 echo "image_name=${IMAGE_NAME}" >> $GITHUB_OUTPUT
4647
47- - name : Save Docker image to GitHub Container Registry
48+ - name : Log in and push Docker image to GHCR
49+ if : steps.check_files.outputs.build_ran == 'true'
4850 run : |
49- IMAGE_NAME="ghcr.io/${{ github.repository }}/nix-test-env:$(git rev-parse --short HEAD)"
50- echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
51- docker tag ${{ steps.build.outputs.image_name }} ${IMAGE_NAME}
52- docker push ${IMAGE_NAME}
51+ echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u \
52+ ${{ github.actor }} --password-stdin
53+ IMAGE_ID="ghcr.io/${{ github.repository }}/nix-test-env"
54+ COMMIT_TAG="${IMAGE_ID}:$(git rev-parse --short HEAD)"
55+ docker tag ${{ steps.build.outputs.image_name }} $COMMIT_TAG
56+ LATEST_TAG="${IMAGE_ID}:latest"
57+ docker tag ${{ steps.build.outputs.image_name }} $LATEST_TAG
58+ docker push $COMMIT_TAG
59+ docker push $LATEST_TAG
5360
5461 tests :
5562 runs-on : ubuntu-latest
@@ -61,20 +68,33 @@ jobs:
6168 - name : Check out repository
6269 uses : actions/checkout@v4
6370
64- - name : Pull Docker image from GitHub Container Registry
71+ - name : Pull image with fallback in GHCR
72+ id : docker_pull
6573 run : |
66- IMAGE_NAME="ghcr.io/${{ github.repository }}/nix-test-env:$(git rev-parse --short HEAD)"
67- echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
68- docker pull ${IMAGE_NAME}
74+ IMAGE_ID="ghcr.io/${{ github.repository }}/nix-test-env"
75+ COMMIT_TAG="${IMAGE_ID}:$(git rev-parse --short HEAD)"
76+ LATEST_TAG="${IMAGE_ID}:latest"
77+ echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u \
78+ ${{ github.actor }} --password-stdin
79+ if docker pull $COMMIT_TAG; then
80+ echo "Successfully pulled commit-specific image: $COMMIT_TAG"
81+ echo "image_to_test=$COMMIT_TAG" >> $GITHUB_OUTPUT
82+ else
83+ echo "Commit-specific image not found. Falling back to latest."
84+ docker pull $LATEST_TAG
85+ echo "image_to_test=$LATEST_TAG" >> $GITHUB_OUTPUT
86+ fi
6987
7088 - name : Run container
7189 id : container
7290 run : |
7391 CONTAINER_NAME="nix-test-container"
74- docker run --name ${CONTAINER_NAME} -d \
92+ IMAGE_TO_TEST="${{ steps.docker_pull.outputs.image_to_test }}"
93+ echo "Running tests on image: $IMAGE_TO_TEST"
94+ docker run --name $CONTAINER_NAME -d \
7595 --entrypoint /usr/local/bin/docker_entrypoint.sh \
76- ${{ needs.build-docker-image.outputs.image_name }} tail -f /dev/null
77- echo "container_name=${ CONTAINER_NAME} " >> $GITHUB_OUTPUT
96+ $IMAGE_TO_TEST tail -f /dev/null
97+ echo "container_name=$CONTAINER_NAME" >> $GITHUB_OUTPUT
7898
7999 - name : Run home-manager switch
80100 run : |
94114 "
95115
96116 - name : Clean up container
117+ if : always()
97118 run : docker rm -f ${{ steps.container.outputs.container_name }}
0 commit comments