From ead0b6cf6c6c53bc1423a3cdf05c5683a1f111d9 Mon Sep 17 00:00:00 2001 From: Adam Moussa Date: Tue, 28 Jul 2026 15:57:17 -0400 Subject: [PATCH] feat(workflow-templates): add release and ci-mobile-ios templates, pass node-version on ci-python release.yml / release.properties.json and ci-mobile-ios.yml / ci-mobile-ios.properties.json are new caller templates for the two reusable workflows added in 9389e51. Both pin the reusable to 9389e51, the commit that introduces the workflow files. release.yml triggers on workflow_dispatch with a required `version` input and declares `permissions: contents: write`, which the reusable needs to push the tag and publish the Release. ci-mobile-ios.yml triggers on pull_request and keys its job `ci` so the check context resolves to `ci / ci`. ci-python.yml now passes `node-version: "24"`. Its target, ci-python-sam.yaml, declares that input at line 34 with default "24"; the ci-static, ci-typescript-frontend, ci-node, cdk-deploy and mobile-ios-deploy templates already pass the same value. Both new .properties.json files carry the same five keys as the thirteen existing ones: categories, description, filePatterns, iconName, name. --- .../ci-mobile-ios.properties.json | 7 ++++++ workflow-templates/ci-mobile-ios.yml | 21 ++++++++++++++++ workflow-templates/ci-python.yml | 4 ++++ workflow-templates/release.properties.json | 7 ++++++ workflow-templates/release.yml | 24 +++++++++++++++++++ 5 files changed, 63 insertions(+) create mode 100644 workflow-templates/ci-mobile-ios.properties.json create mode 100644 workflow-templates/ci-mobile-ios.yml create mode 100644 workflow-templates/release.properties.json create mode 100644 workflow-templates/release.yml diff --git a/workflow-templates/ci-mobile-ios.properties.json b/workflow-templates/ci-mobile-ios.properties.json new file mode 100644 index 0000000..b27a105 --- /dev/null +++ b/workflow-templates/ci-mobile-ios.properties.json @@ -0,0 +1,7 @@ +{ + "name": "Sea Haven — CI (Mobile / iOS)", + "description": "Runs npm ci, typecheck, optional lint and optional unit tests on Linux, then compiles the iOS app on macOS with signing disabled and no upload, via the org reusable ci-mobile-ios workflow. The pre-merge counterpart to the iOS TestFlight deploy.", + "iconName": "octicon-checklist", + "categories": ["Mobile", "TypeScript", "JavaScript", "Continuous integration"], + "filePatterns": ["metro\\.config\\.[cm]?js$", "app\\.json$", "Podfile$"] +} diff --git a/workflow-templates/ci-mobile-ios.yml b/workflow-templates/ci-mobile-ios.yml new file mode 100644 index 0000000..01c348c --- /dev/null +++ b/workflow-templates/ci-mobile-ios.yml @@ -0,0 +1,21 @@ +name: CI (Mobile / iOS) +on: + pull_request: + branches: [main] + +jobs: + ci: + # Job id MUST stay `ci`: the reusable's aggregator job is also `ci`, so the + # check context resolves to the required `ci / ci`. + uses: Sea-Haven-Industries/.github/.github/workflows/ci-mobile-ios.yaml@9389e51c10c506caa55f204527452a9e29b0e438 # main + with: + # Matches local dev (Node 24 / npm 11, lockfileVersion 3). This is also + # the reusable workflow's default — passed explicitly to pin against drift. + node-version: "24" + # Set these two to the app directory when the mobile project is not at + # the repo root, matching the values passed to cd-mobile-ios. + working-directory: "." + cache-dependency-path: "package-lock.json" + # Off by default: enable once package.json actually declares the script. + run-lint: false + run-tests: false diff --git a/workflow-templates/ci-python.yml b/workflow-templates/ci-python.yml index 9ae9f03..a12000f 100644 --- a/workflow-templates/ci-python.yml +++ b/workflow-templates/ci-python.yml @@ -8,3 +8,7 @@ jobs: uses: Sea-Haven-Industries/.github/.github/workflows/ci-python-sam.yaml@555d07c3a240689a81668026787eba089df4c975 # main with: run-tests: true + # ci-python-sam.yaml declares a `node-version` input (default "24") that + # feeds the CDK CLI when run-cdk-synth is enabled. Passed explicitly so + # the pin does not drift from local dev (Node 24 / npm 11). + node-version: "24" diff --git a/workflow-templates/release.properties.json b/workflow-templates/release.properties.json new file mode 100644 index 0000000..b430506 --- /dev/null +++ b/workflow-templates/release.properties.json @@ -0,0 +1,7 @@ +{ + "name": "Sea Haven — Release (tag + GitHub Release)", + "description": "Creates an annotated v-prefixed git tag and publishes a GitHub Release for a version supplied on manual dispatch, using the org reusable release workflow. Re-running on a version that is already tagged or released is a no-op.", + "iconName": "octicon-tag", + "categories": ["Deployment", "Utilities"], + "filePatterns": ["README\\.md$"] +} diff --git a/workflow-templates/release.yml b/workflow-templates/release.yml new file mode 100644 index 0000000..1dab305 --- /dev/null +++ b/workflow-templates/release.yml @@ -0,0 +1,24 @@ +name: Release +on: + workflow_dispatch: + inputs: + version: + description: 'Version to release, e.g. 1.4.0 (a leading "v" is accepted)' + type: string + required: true + +permissions: + # The reusable workflow pushes an annotated tag and publishes a Release. + contents: write + +jobs: + release: + uses: Sea-Haven-Industries/.github/.github/workflows/release.yaml@9389e51c10c506caa55f204527452a9e29b0e438 # main + with: + version: ${{ inputs.version }} + # Tags in this org are v-prefixed MAJOR.MINOR.PATCH; "v" is the default + # and is passed explicitly so a repo can see what it is producing. + tag-prefix: "v" + # Notes come from GitHub's commit-history generator. Set notes-file + # instead to publish the contents of a file as the release notes. + generate-notes: true