Skip to content

flagon-io/g1t

public

Where people and agents ship software together. The open-source git platform for the whole job: issues, agents, checks and deploys to the edge.

Real GitHub Actions on g1t, and managed deploy workflows #36

Mergedsyntaqx merged claude/cool-newton-7nm8r9 into main
6 files+96−90/6 viewed
+20−2
7272 timeout-minutes: 30
7373 steps:
7474 - uses: actions/checkout@v5
75+ # npm's downloads, kept between runs: an install reads them first
76+ # and asks the registry only for what changed, so a dropped
77+ # connection to it rarely stops the job.
78+ - name: Cache npm's downloads
79+ uses: actions/cache@v4
80+ with:
81+ path: ~/.npm
82+ key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
83+ restore-keys: npm-${{ runner.os }}-
7584 - name: Install
76− run: npm ci --no-audit --no-fund
85+ run: npm ci --prefer-offline --no-audit --no-fund
7786 - name: Type checks
7887 run: npm run typecheck
7988 - name: Tests
92101 timeout-minutes: 30
93102 steps:
94103 - uses: actions/checkout@v5
104+ # npm's downloads, kept between runs: an install reads them first
105+ # and asks the registry only for what changed, so a dropped
106+ # connection to it rarely stops the job.
107+ - name: Cache npm's downloads
108+ uses: actions/cache@v4
109+ with:
110+ path: ~/.npm
111+ key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
112+ restore-keys: npm-${{ runner.os }}-
95113 - name: Install
96− run: npm ci --no-audit --no-fund
114+ run: npm ci --prefer-offline --no-audit --no-fund
97115 - name: The site, sudo and the docs
98116 run: node scripts/deploy.mjs build --only web,sudo,docs
99117
+20−2
7070 timeout-minutes: 20
7171 steps:
7272 - uses: actions/checkout@v5
73+ # npm's downloads, kept between runs: an install reads them first
74+ # and asks the registry only for what changed, so a dropped
75+ # connection to it rarely stops the job.
76+ - name: Cache npm's downloads
77+ uses: actions/cache@v4
78+ with:
79+ path: ~/.npm
80+ key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
81+ restore-keys: npm-${{ runner.os }}-
7382 - name: Install Wrangler
74− run: npm ci --workspaces=false --no-audit --no-fund
83+ run: npm ci --prefer-offline --workspaces=false --no-audit --no-fund
7584 - name: The manifest matches every wrangler.jsonc
7685 run: node scripts/deploy.mjs manifest --check
7786 - name: The deploy tool's tests
125134 timeout-minutes: 20
126135 steps:
127136 - uses: actions/checkout@v5
137+ # npm's downloads, kept between runs: an install reads them first
138+ # and asks the registry only for what changed, so a dropped
139+ # connection to it rarely stops the job.
140+ - name: Cache npm's downloads
141+ uses: actions/cache@v4
142+ with:
143+ path: ~/.npm
144+ key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
145+ restore-keys: npm-${{ runner.os }}-
128146 - name: Install Wrangler
129− run: npm ci --workspaces=false --no-audit --no-fund
147+ run: npm ci --prefer-offline --workspaces=false --no-audit --no-fund
130148 - name: Apply pending migrations
131149 env:
132150 CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
+30−3
8686 ~/.cargo/registry
8787 apps/desktop/src-tauri/target
8888 key: desktop-release-linux-${{ hashFiles('apps/desktop/src-tauri/Cargo.lock') }}
89+ # npm's downloads, kept between runs: an install reads them first
90+ # and asks the registry only for what changed, so a dropped
91+ # connection to it rarely stops the job.
92+ - name: Cache npm's downloads
93+ uses: actions/cache@v4
94+ with:
95+ path: ~/.npm
96+ key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
97+ restore-keys: npm-${{ runner.os }}-
8998 - name: Install
90− run: npm ci --no-audit --no-fund
99+ run: npm ci --prefer-offline --no-audit --no-fund
91100 - name: Build and sign
92101 env:
93102 TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.DESKTOP_SIGNING_KEY }}
157166 ~/.cargo/registry
158167 apps/desktop/src-tauri/target
159168 key: desktop-release-windows-${{ hashFiles('apps/desktop/src-tauri/Cargo.lock') }}
169+ # npm's downloads, kept between runs: an install reads them first
170+ # and asks the registry only for what changed, so a dropped
171+ # connection to it rarely stops the job.
172+ - name: Cache npm's downloads
173+ uses: actions/cache@v4
174+ with:
175+ path: ~/.npm
176+ key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
177+ restore-keys: npm-${{ runner.os }}-
160178 - name: Install
161− run: npm ci --no-audit --no-fund
179+ run: npm ci --prefer-offline --no-audit --no-fund
162180 - name: Build and sign
163181 env:
164182 TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.DESKTOP_SIGNING_KEY }}
217235 pattern: desktop-*
218236 merge-multiple: true
219237 path: target/desktop-release/${{ needs.version.outputs.version }}/
238+ # npm's downloads, kept between runs: an install reads them first
239+ # and asks the registry only for what changed, so a dropped
240+ # connection to it rarely stops the job.
241+ - name: Cache npm's downloads
242+ uses: actions/cache@v4
243+ with:
244+ path: ~/.npm
245+ key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
246+ restore-keys: npm-${{ runner.os }}-
220247 - name: Install Wrangler
221− run: npm ci --workspaces=false --no-audit --no-fund
248+ run: npm ci --prefer-offline --workspaces=false --no-audit --no-fund
222249 - name: The manifest
223250 run: node scripts/desktop-release.mjs manifest --notes "${{ inputs.notes }}"
224251 - name: Publish
+10−1
5555 if [ "${GITHUB_REF_TYPE}" = tag ] && [ "mobile-v$version" != "${GITHUB_REF_NAME}" ]; then
5656 echo "::error::The tag is ${GITHUB_REF_NAME}, but apps/mobile is $version"; exit 1
5757 fi
58+ # npm's downloads, kept between runs: an install reads them first
59+ # and asks the registry only for what changed, so a dropped
60+ # connection to it rarely stops the job.
61+ - name: Cache npm's downloads
62+ uses: actions/cache@v4
63+ with:
64+ path: ~/.npm
65+ key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
66+ restore-keys: npm-${{ runner.os }}-
5867 - name: Install Wrangler
59− run: npm ci --workspaces=false --no-audit --no-fund
68+ run: npm ci --prefer-offline --workspaces=false --no-audit --no-fund
6069 - name: Build on EAS
6170 if: ${{ !inputs.build }}
6271 env:
+10−1
6767 run: |
6868 node scripts/runner-release.mjs sign
6969 node scripts/runner-release.mjs verify
70+ # npm's downloads, kept between runs: an install reads them first
71+ # and asks the registry only for what changed, so a dropped
72+ # connection to it rarely stops the job.
73+ - name: Cache npm's downloads
74+ uses: actions/cache@v4
75+ with:
76+ path: ~/.npm
77+ key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
78+ restore-keys: npm-${{ runner.os }}-
7079 - name: Install Wrangler
71− run: npm ci --workspaces=false --no-audit --no-fund
80+ run: npm ci --prefer-offline --workspaces=false --no-audit --no-fund
7281 - name: Publish to g1t.sh/downloads/runner
7382 env:
7483 CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
+6−0
1+# Installs on g1t's runners (and anywhere else) retry a dropped connection
2+# to the registry more patiently than npm's default of two quick retries:
3+# an ECONNRESET partway through a 1,300-package install used to fail CI.
4+fetch-retries=5
5+fetch-retry-mintimeout=5000
6+fetch-retry-maxtimeout=60000