Skip to content

Commit e41ed83

Browse files
authored
Refactor CI/CD into a staged deployment pipeline with versioning, database testing, and approval gates (#12)
* Refactored staging deploy into own file * Added flag for disabling disk cleanup * Created production deploy workflow * Added making the GCP function public * Setup eval-prod environment * Removed protections on deploy, left on release * Removed make public * Added some notes to the README * Added GCP deployment note to README * Changed name normalisation to be only for GCP * Added issue template * Added write function name if aws * Enabled normlise for AWS * Added version tagging to GCP build * Added AWS to need version and fixed bug with GCP Build * Fixed version tagging issue * Added lfs support * Added lfs * Disabled normalise for AWS * Added requirement for staging to pass before prod can be deployed * Added database testing * Switched endpoint to be a secret * Changed test needs * Fixed column issue * Removed test logic * Added new secrets for DB testing * Fixed typo * Made read config.json more robust * Renamed run-tests to run-database tests * Simplified conditional expressions in deploy workflow * Switched deployment workflow to use commit SHA instead of branch for release steps * Added manual approval step for production deployment on test failures * Added always to the gate * Refined production deployment conditions * Added the random seed as input for database testing * Added `request_delay` and `max_concurrency` inputs to deploy workflow * Refined manual approval message for production deployment on test failures * Removed unicode character * Added `sql_limit` input to deploy workflow
1 parent d1d0dbc commit e41ed83

11 files changed

Lines changed: 683 additions & 95 deletions

File tree

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
blank_issues_enabled: false
2+
contact_links: []
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
name: "Release Request"
2+
description: "Request a deployment by specifying the evaluation function, changes, target commit/branch, and test confirmation."
3+
title: "Release Request"
4+
labels:
5+
- release
6+
- deployment
7+
assignees: []
8+
body:
9+
- type: textarea
10+
id: description_of_changes
11+
attributes:
12+
label: Description of changes
13+
description: "Summarize what is changing and why. Include links to PRs, issues, or changelogs."
14+
placeholder: |
15+
- What changed:
16+
- Why:
17+
- Related PRs/Issues: #123, #456
18+
render: markdown
19+
validations:
20+
required: true
21+
22+
- type: input
23+
id: branch_to_deploy
24+
attributes:
25+
label: Branch to deploy
26+
description: |
27+
Specify Branch name to deploy.
28+
placeholder: "e.g., release/2025-09-29"
29+
validations:
30+
required: true
31+
32+
- type: dropdown
33+
id: version-bump
34+
attributes:
35+
label: "🚀 What kind of update is this?"
36+
description: "Tell us how significant this change is. This helps us set the correct new version number."
37+
options:
38+
- "Patch: A small fix for a bug. It won't break anything for existing users. (e.g., 1.2.3 ➔ 1.2.4)"
39+
- "Minor: Adds a new feature, but doesn't change how existing ones work. A safe update. (e.g., 1.2.3 ➔ 1.3.0)"
40+
- "Major: A big change that alters existing features. Users may need to update their work to adapt. (e.g., 1.2.3 ➔ 2.0.0)"
41+
default: 0
42+
validations:
43+
required: true
44+
45+
- type: markdown
46+
attributes:
47+
value: |
48+
---
49+
### ⚡ Click the Link Below to Run the Workflow
50+
51+
Clicking the link will take you to the Actions page. You will need to click the **"Run workflow"** button there to start the process.
52+
53+
## [➡️ Go to Workflow Run Page](../actions/workflows/production-deploy.yml)

.github/workflows/build.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ on:
3030
type: string
3131
description: "Specify build platforms. Takes precedence over `build-arm`."
3232
required: false
33+
lfs:
34+
type: boolean
35+
description: "Support git LFS"
36+
default: false
37+
required: false
3338
secrets:
3439
build-secrets:
3540
description: "The Docker secrets to use for the build"
@@ -51,6 +56,7 @@ jobs:
5156
uses: actions/checkout@v4
5257
with:
5358
fetch-depth: 0
59+
lfs: ${{inputs.lfs}}
5460

5561
- name: Set up QEMU
5662
if: inputs.build-arm && github.ref_name == github.event.repository.default_branch

0 commit comments

Comments
 (0)