Business Case, Stakeholder Analysis, Project Plan, three milestones, review records RC-001 to RC-005 and the traceability matrix. Folder skeleton, .gitignore and the workflows installed from TirSystem/github-action. Task: MIL-001#1 Task: MIL-001#2 Task: MIL-001#3
80 lines
3.1 KiB
YAML
80 lines
3.1 KiB
YAML
# Publish accepted milestones to the git host.
|
|
#
|
|
# On a push to main that changes docs/milestones/ or docs/sqa/reviews/, this
|
|
# workflow runs `sync-project.sh --accepted-only --apply`: every milestone whose
|
|
# latest Version History row is Accepted and whose latest review record is a Go
|
|
# is created or updated as a Milestone with its tasks as Issues. A Proposed
|
|
# milestone, or one without a Go review, is skipped. Nothing is closed or
|
|
# deleted. Each run updates the issues of every accepted milestone (the sync is
|
|
# idempotent, but the host records the edit).
|
|
#
|
|
# INSTALLING THIS FILE IS THE STANDING AUTHORIZATION TO PUBLISH. S01 asked for the
|
|
# workflows of TirSystem/github-action to be installed in this project; this one is
|
|
# copied from it (v2.2.0) and installed on 2026-10-24.
|
|
#
|
|
# Secret: TOKEN_FOR_GITEA, the bare Gitea token of the organization (no JSON).
|
|
# It needs read and write on issues and milestones, and read on the framework
|
|
# repository, which is checked out as a submodule. Gitea does not accept secret
|
|
# names that start with GITEA_ or GITHUB_.
|
|
#
|
|
# Run it once by hand from the Actions page with dry_run left on: it prints
|
|
# the plan and creates nothing. Turn dry_run off only for a real run.
|
|
# A runner must be registered for the repository (or its organisation).
|
|
|
|
name: Publish accepted milestones
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths:
|
|
- "docs/milestones/**"
|
|
- "docs/sqa/reviews/**"
|
|
workflow_dispatch:
|
|
inputs:
|
|
dry_run:
|
|
description: "Preview only: print the plan and create nothing"
|
|
type: boolean
|
|
default: true
|
|
|
|
# Two merges in a row queue instead of racing.
|
|
concurrency:
|
|
group: publish-accepted-milestones
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
publish:
|
|
permissions:
|
|
contents: read
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
steps:
|
|
- name: Check out the project
|
|
uses: actions/checkout@v4.2.2
|
|
with:
|
|
token: ${{ secrets.TOKEN_FOR_GITEA }}
|
|
|
|
# .gitmodules uses ssh:// URLs and the runner has no SSH key, so the
|
|
# submodules (framework, and framework/qc inside it) are fetched over HTTPS
|
|
# with the same token. The token goes through the environment, not a
|
|
# command line.
|
|
- name: Check out the framework submodules over HTTPS
|
|
env:
|
|
GIT_CONFIG_COUNT: "2"
|
|
GIT_CONFIG_KEY_0: "url.https://git.tirsystem.com/.insteadOf"
|
|
GIT_CONFIG_VALUE_0: "ssh://git@git.tirsystem.com:10022/"
|
|
GIT_CONFIG_KEY_1: "http.extraheader"
|
|
GIT_CONFIG_VALUE_1: "Authorization: token ${{ secrets.TOKEN_FOR_GITEA }}"
|
|
run: |
|
|
set -euo pipefail
|
|
git submodule update --init --recursive --depth=1
|
|
|
|
- name: Make sure curl and jq are available
|
|
run: bash framework/scripts/ci-publish-milestones.sh ensure-tools
|
|
|
|
- name: Publish accepted milestones
|
|
env:
|
|
GITEA_TOKEN: ${{ secrets.TOKEN_FOR_GITEA }}
|
|
# Empty on a push (a real run); "true" or "false" on a manual run.
|
|
DRY_RUN: ${{ inputs.dry_run }}
|
|
run: bash framework/scripts/ci-publish-milestones.sh publish
|