Skip to content

Commit 07ae96f

Browse files
committed
refactor(ci): ci improved
1 parent 37e9544 commit 07ae96f

1 file changed

Lines changed: 33 additions & 12 deletions

File tree

.github/workflows/ci.yml

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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: |
@@ -94,4 +114,5 @@ jobs:
94114
"
95115
96116
- name: Clean up container
117+
if: always()
97118
run: docker rm -f ${{ steps.container.outputs.container_name }}

0 commit comments

Comments
 (0)