name: Demo on: workflow_dispatch: pull_request: push: branches: - main jobs: path-filter: runs-on: ubuntu-latest outputs: changed: ${{ steps.filter.outputs.changed }} steps: - name: Checkout repository uses: actions/checkout@v4 - uses: dorny/paths-filter@v3 id: filter with: filters: | changed: - '.github/workflows/demo.yml' - 'demo/**' build: needs: [ "path-filter" ] if: needs.path-filter.outputs.changed == 'true' strategy: matrix: demo: - name: homeassistant flake: basic - name: homeassistant flake: ldap - name: nextcloud flake: basic - name: nextcloud flake: ldap - name: nextcloud flake: sso runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install nix uses: cachix/install-nix-action@v20 - uses: cachix/cachix-action@v14 with: name: selfhostblocks authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - name: Build ${{ matrix.demo.name }} .#${{ matrix.demo.flake }} run: | cd demo/${{ matrix.demo.name }} nix \ --print-build-logs \ --option keep-going true \ --show-trace \ build .#nixosConfigurations.${{ matrix.demo.flake }}.config.system.build.vm result: runs-on: ubuntu-latest needs: [ "build" ] if: '!cancelled()' steps: - run: | result="${{ needs.build.result }}" if [[ $result == "success" || $result == "skipped" ]]; then exit 0 else exit 1 fi