Skip to content

Commit ed099e7

Browse files
Merge pull request #3 from SyntaxError-PEBKAC/codex/explain-repository-structure-and-build-process
Add self-hosted Windows GitHub Actions workflow for ESR check/build
2 parents c3f4795 + fce62ea commit ed099e7

13 files changed

Lines changed: 1515 additions & 0 deletions
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
name: Build failure
3+
about: Report and triage ducksteps build/release failures
4+
title: "Build failure: <short error summary>"
5+
labels: ["build-failure"]
6+
assignees: []
7+
---
8+
9+
## Failure summary
10+
-
11+
12+
## Environment
13+
- Date/time:
14+
- Branch:
15+
- Command run:
16+
- Shell (MozillaBuild/PowerShell):
17+
18+
## Log locations
19+
- Main build log:
20+
- ESR watcher log (if relevant):
21+
22+
## Error snippet
23+
```
24+
(paste the most useful block here)
25+
```
26+
27+
## What I already tried
28+
- [ ] Re-run failed command
29+
- [ ] `./mach clobber` + rebuild
30+
- [ ] Clean objdir + rebuild
31+
- [ ] Checked tool paths (bash/7z/upx/git/gh)
32+
- [ ] Checked auth (if publish step failed)
33+
34+
## Notes
35+
-
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
name: ESR update
3+
about: Track monthly/emergency Firefox ESR update work
4+
title: "ESR update: <version>"
5+
labels: ["esr-update"]
6+
assignees: []
7+
---
8+
9+
## Target ESR version
10+
-
11+
12+
## Why this update
13+
- [ ] Monthly security update
14+
- [ ] Emergency/security hotfix
15+
- [ ] Other (explain)
16+
17+
## Checklist
18+
- [ ] Source synced to target ESR
19+
- [ ] Build completed
20+
- [ ] Installer artifact produced
21+
- [ ] Standalone artifact produced
22+
- [ ] Release notes generated/updated
23+
- [ ] Tag created
24+
- [ ] Draft/published release created
25+
26+
## Notes
27+
-

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
## Summary
2+
-
3+
4+
## Checklist
5+
- [ ] Build completed successfully
6+
- [ ] Installer artifact generated (.exe)
7+
- [ ] Standalone artifact generated (.7z)
8+
- [ ] Version bumped/confirmed for this release
9+
- [ ] Tag created/updated as intended
10+
- [ ] Release notes reviewed/updated
11+
12+
Optional: comment `@codex review` for an automated review.
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
name: ESR Watcher + Build (Self-hosted Windows)
2+
3+
on:
4+
schedule:
5+
- cron: '17 9 * * *'
6+
workflow_dispatch:
7+
inputs:
8+
version:
9+
description: 'Optional version override (example: 140.8.0). Leave empty to run check_esr_update.ps1.'
10+
required: false
11+
type: string
12+
publish_draft:
13+
description: 'If true, allow draft release publishing (otherwise force -NoPublish).'
14+
required: false
15+
default: false
16+
type: boolean
17+
18+
jobs:
19+
build:
20+
runs-on: [self-hosted, windows]
21+
22+
steps:
23+
- name: Checkout
24+
uses: actions/checkout@v4
25+
with:
26+
fetch-depth: 0
27+
28+
- name: Resolve run mode
29+
id: mode
30+
shell: powershell
31+
run: |
32+
$version = "${{ inputs.version }}"
33+
$isManual = "${{ github.event_name }}" -eq "workflow_dispatch"
34+
35+
if ($isManual -and -not [string]::IsNullOrWhiteSpace($version)) {
36+
"run_mode=manual_version" >> $env:GITHUB_OUTPUT
37+
"version=$version" >> $env:GITHUB_OUTPUT
38+
} else {
39+
"run_mode=esr_check" >> $env:GITHUB_OUTPUT
40+
"version=" >> $env:GITHUB_OUTPUT
41+
}
42+
43+
- name: Run check_esr_update.ps1 (default: -NoPublish)
44+
if: steps.mode.outputs.run_mode == 'esr_check'
45+
shell: powershell
46+
env:
47+
GH_TOKEN: ${{ secrets.DUCKSTEPS_GH_TOKEN }}
48+
run: |
49+
$publishDraft = "${{ inputs.publish_draft }}" -eq "true"
50+
$args = @('-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', '.\scripts\check_esr_update.ps1')
51+
52+
if (-not $publishDraft) {
53+
$args += '-NoPublish'
54+
}
55+
56+
powershell @args
57+
58+
- name: Run build_and_release.ps1 (manual version, default: -NoPublish)
59+
if: steps.mode.outputs.run_mode == 'manual_version'
60+
shell: powershell
61+
env:
62+
GH_TOKEN: ${{ secrets.DUCKSTEPS_GH_TOKEN }}
63+
run: |
64+
$publishDraft = "${{ inputs.publish_draft }}" -eq "true"
65+
$version = "${{ steps.mode.outputs.version }}"
66+
67+
$args = @(
68+
'-NoProfile',
69+
'-ExecutionPolicy', 'Bypass',
70+
'-File', '.\scripts\build_and_release.ps1',
71+
'-Version', $version
72+
)
73+
74+
if (-not $publishDraft) {
75+
$args += '-NoPublish'
76+
}
77+
78+
powershell @args
79+
80+
- name: Upload installer artifacts
81+
if: always()
82+
uses: actions/upload-artifact@v4
83+
with:
84+
name: ducksteps-installer
85+
if-no-files-found: warn
86+
path: |
87+
D:\ducksteps-obj\esr140\dist\ducksteps-*-Setup.exe
88+
D:\ducksteps-obj\esr140\dist\install\sea\*.installer.exe
89+
90+
- name: Upload standalone artifacts
91+
if: always()
92+
uses: actions/upload-artifact@v4
93+
with:
94+
name: ducksteps-standalone
95+
if-no-files-found: warn
96+
path: |
97+
D:\ducksteps-obj\esr140\dist\ducksteps-*-Standalone.7z
98+
D:\ducksteps-obj\esr140\dist\*.win64.zip
99+
100+
- name: Upload logs
101+
if: always()
102+
uses: actions/upload-artifact@v4
103+
with:
104+
name: ducksteps-logs
105+
if-no-files-found: warn
106+
path: |
107+
D:\ducksteps-obj\esr140\dist\logs\*.log
108+
D:\ducksteps-obj\esr140\dist\RELEASE_NOTES.md

0 commit comments

Comments
 (0)