|
| 1 | +--- |
1 | 2 | name: CI/CD for Nix Dotfiles |
2 | 3 |
|
3 | 4 | on: |
4 | 5 | push: |
5 | 6 | branches: |
6 | | - - main # Or your default branch |
| 7 | + - main |
7 | 8 | pull_request: |
8 | 9 | branches: |
9 | 10 | - main |
10 | 11 |
|
11 | 12 | jobs: |
12 | | - test-dotfiles: |
| 13 | + build-docker-image: |
13 | 14 | runs-on: ubuntu-latest |
| 15 | + outputs: |
| 16 | + image_name: ${{ steps.build.outputs.image_name }} |
14 | 17 | steps: |
15 | 18 | - name: Check out repository |
16 | 19 | uses: actions/checkout@v4 |
17 | 20 |
|
18 | 21 | - name: Build Docker image |
19 | | - run: docker build -t nix-test-env -f ./nix_test_env/Dockerfile . |
| 22 | + id: build |
| 23 | + run: | |
| 24 | + IMAGE_NAME="nix-test-env:$(git rev-parse --short HEAD)" |
| 25 | + docker build -t ${IMAGE_NAME} -f ./nix_test_env/Dockerfile . |
| 26 | + echo "image_name=${IMAGE_NAME}" >> $GITHUB_OUTPUT |
| 27 | +
|
| 28 | + tests: |
| 29 | + runs-on: ubuntu-latest |
| 30 | + needs: build-docker-image |
| 31 | + steps: |
| 32 | + - name: Check out repository |
| 33 | + uses: actions/checkout@v4 |
20 | 34 |
|
21 | | - - name: Run tests in container |
| 35 | + - name: Pull Docker image (if not cached) |
| 36 | + run: docker pull ${{ needs.build-docker-image.outputs.image_name }} \ |
| 37 | + || true |
| 38 | + |
| 39 | + - name: Run container |
| 40 | + run: | |
| 41 | + CONTAINER_NAME="nix-test-container-git" |
| 42 | + IMAGE_NAME="${{ needs.build-docker-image.outputs.image_name }}" |
| 43 | + docker run --name ${CONTAINER_NAME} -d ${IMAGE_NAME} tail -f /dev/null |
| 44 | +
|
| 45 | + - name: Run Git config test in container |
22 | 46 | run: | |
23 | | - docker run --name nix-test-container -d nix-test-env tail -f /dev/null |
24 | | - docker exec nix-test-container home-manager switch |
25 | | - docker exec nix-test-container bash -lc "git config --global user.name | grep 'PedroBrantes'" |
26 | | - docker exec nix-test-container bash -lc "printenv EDITOR | grep 'nvim'" |
| 47 | + docker exec ${CONTAINER_NAME} home-manager switch |
| 48 | + docker exec ${CONTAINER_NAME} bash -c \ |
| 49 | + "source /root/.nix-profile/etc/profile.d/nix.sh && \ |
| 50 | + git config --global user.name | grep 'PedroBrantes'" |
| 51 | +
|
| 52 | + - name: Run Editor env test in container |
| 53 | + run: | |
| 54 | + docker exec ${CONTAINER_NAME} home-manager switch |
| 55 | + docker exec ${CONTAINER_NAME} bash -c \ |
| 56 | + "source /root/.nix-profile/etc/profile.d/nix.sh && \ |
| 57 | + printenv EDITOR | grep 'nvim'" |
27 | 58 |
|
28 | 59 | - name: Clean up container |
29 | | - if: always() |
30 | | - run: docker rm -f nix-test-container |
| 60 | + run: | |
| 61 | + docker rm -f ${CONTAINER_NAME} # Clean up after test |
0 commit comments