ALPHA: wire is a tool to deploy nixos systems
wire.althaea.zone/
1---
2name: "PR Preview"
3on:
4 push:
5jobs:
6 get-pr:
7 runs-on: ubuntu-latest
8 outputs:
9 number: ${{ steps.find-pr.outputs.number }}
10 permissions: {}
11 if: ${{ github.actor != 'dependabot[bot]' }}
12 steps:
13 - uses: jwalton/gh-find-current-pr@89ee5799558265a1e0e31fab792ebb4ee91c016b
14 id: find-pr
15 with:
16 state: all
17 base-ref:
18 runs-on: ubuntu-latest
19 permissions: {}
20 needs: get-pr
21 outputs:
22 base-ref: ${{ steps.base-ref.outputs.base-ref }}
23 if: ${{ needs.get-pr.outputs.number != '' }}
24 steps:
25 - run: sudo apt install -y jq
26 - name: Locate Base Ref
27 id: base-ref
28 run: |
29 echo "base-ref=$(gh api /repos/${{ github.repository }}/pulls/${NEEDS_GET_PR_OUTPUTS_NUMBER} | jq -r '.base.ref')" >> "$GITHUB_OUTPUT"
30 env:
31 GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
32 NEEDS_GET_PR_OUTPUTS_NUMBER: ${{ needs.get-pr.outputs.number }}
33 eval-base:
34 runs-on: ubuntu-latest
35 permissions: {}
36 needs: base-ref
37 outputs:
38 drv: ${{ steps.drv.outputs.drv }}
39 steps:
40 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
41 with:
42 ref: ${{ needs.base-ref.outputs.base-ref }}
43 persist-credentials: false
44 - uses: ./.github/actions/setup-nix
45 - id: drv
46 run: echo "drv=$(nix eval .#docs --json)" >> "$GITHUB_OUTPUT"
47 eval-head:
48 runs-on: ubuntu-latest
49 permissions: {}
50 needs: get-pr
51 outputs:
52 drv: ${{ steps.drv.outputs.drv }}
53 if: ${{ needs.get-pr.outputs.number != '' }}
54 steps:
55 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
56 with:
57 persist-credentials: false
58 - uses: ./.github/actions/setup-nix
59 - id: drv
60 run: echo "drv=$(nix eval .#docs --json)" >> "$GITHUB_OUTPUT"
61 deploy:
62 runs-on: ubuntu-latest
63 permissions: {}
64 needs:
65 - eval-head
66 - eval-base
67 - get-pr
68 environment:
69 name: pr-${{ needs.get-pr.outputs.number }}
70 url: https://pr-${{ needs.get-pr.outputs.number }}.wire-docs.pages.dev/
71 # skip if nothing changed in the docs package
72 if: needs.eval-head.outputs.drv != needs.eval-base.outputs.drv
73 steps:
74 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
75 with:
76 persist-credentials: false
77 - uses: ./.github/actions/setup-nix
78 - run: nix build .#docs
79 - name: Deploy to Cloudflare Pages
80 id: deployment
81 uses: cloudflare/wrangler-action@da0e0dfe58b7a431659754fdf3f186c529afbe65
82 with:
83 apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
84 accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
85 command: pages deploy ./result/ --project-name wire-docs --branch pr-${{ needs.get-pr.outputs.number }}