diff --git a/.github/workflows/release-automation.yml b/.github/workflows/release-automation.yml new file mode 100644 index 0000000..f565de1 --- /dev/null +++ b/.github/workflows/release-automation.yml @@ -0,0 +1,86 @@ +# Release Automation Caller Workflow +# +# This workflow template should be copied to .github/workflows/ in API repositories +# that want to use the CAMARA release automation. +# +# Copy this file as: .github/workflows/release-automation.yml +# +# Triggers: +# - Slash commands: /create-snapshot, /discard-snapshot, /delete-draft, /publish-release +# - Issue events: close (with auto-reopen), reopen +# - PR merge: on release-snapshot branches (creates draft release) +# - Push to main: when release-plan.yaml changes (auto sync-issue) +# - Manual: workflow_dispatch triggers sync-issue (reads from release-plan.yaml) + +name: Release Automation + +on: + # Slash commands via issue comments + issue_comment: + types: [created] + + # Issue close/reopen events + issues: + types: [closed, reopened] + + # PR merge to snapshot branches + pull_request: + types: [closed] + branches: + - 'release-snapshot/**' + + # Push to main with release-plan.yaml changes (auto sync-issue) + push: + branches: [main] + paths: ['release-plan.yaml'] + + # Manual trigger for sync-issue only + # Use this for: initial setup, recovery after manual repo changes, or forced sync + # All other commands must be issued via slash commands in the Release Issue + # Future: will accept branch input (main by default, maintenance branches as option) + workflow_dispatch: + +# Serialize release automation runs per repository. +# Prevents race conditions from concurrent slash commands, issue events, PR merges, +# and workflow_dispatch triggers. With cancel-in-progress: false, queued runs wait +# for the current run to complete before starting. +# Note: GitHub allows at most 1 running + 1 pending per concurrency group. +# A third arrival replaces the pending run (acceptable — codeowners act carefully). +concurrency: + group: release-automation-${{ github.repository }} + cancel-in-progress: false + +permissions: + contents: write + issues: write + pull-requests: write + id-token: write + +jobs: + release-automation: + # Skip if: + # - issue_comment from a Bot (release automation bot comments, not human commands) + # - issue_comment but not a release command or not on a release issue + # - issues event but not a release issue + # - pull_request but not merged or not to a snapshot branch + if: | + (github.event_name == 'push') || + github.event_name == 'workflow_dispatch' || + (github.event_name == 'issue_comment' && + github.event.comment.user.type != 'Bot' && + contains(github.event.issue.labels.*.name, 'release-issue') && + (startsWith(github.event.comment.body, '/create-snapshot') || + startsWith(github.event.comment.body, '/discard-snapshot') || + startsWith(github.event.comment.body, '/delete-draft') || + startsWith(github.event.comment.body, '/publish-release') || + startsWith(github.event.comment.body, '/sync-issue'))) || + (github.event_name == 'issues' && + contains(github.event.issue.labels.*.name, 'release-issue')) || + (github.event_name == 'pull_request' && + github.event.pull_request.merged == true && + startsWith(github.event.pull_request.base.ref, 'release-snapshot/')) + + uses: camaraproject/tooling/.github/workflows/release-automation-reusable.yml@ra-v1-rc + # with: + # tooling_ref_override: "0123456789abcdef0123456789abcdef01234567" # Optional break-glass SHA override (requires workflow file change) + secrets: inherit diff --git a/CHANGELOG.md b/CHANGELOG.md index bc86b57..cb57f9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +> Starting with release automation, new release changelogs are maintained +> in the [CHANGELOG/](CHANGELOG/) directory with per-cycle files. + # Changelog ClickToDial ## Table of Contents diff --git a/CHANGELOG/README.md b/CHANGELOG/README.md new file mode 100644 index 0000000..86c298f --- /dev/null +++ b/CHANGELOG/README.md @@ -0,0 +1,6 @@ +# Changelog + +Release changelogs are organized by release cycle. + +For historical release notes predating the automated release process, +see [CHANGELOG.md](../CHANGELOG.md) in the repository root. diff --git a/documentation/API_documentation/click-to-dial-API-Readiness-Checklist.md b/documentation/API_documentation/click-to-dial-API-Readiness-Checklist.md deleted file mode 100644 index 21382b6..0000000 --- a/documentation/API_documentation/click-to-dial-API-Readiness-Checklist.md +++ /dev/null @@ -1,30 +0,0 @@ -# API Readiness Checklist - -Checklist for click-to-dial v0.1.0.alpha in r1.1 - -| Nr | API release assets | alpha | release-candidate | initial public | stable public | Status | Reference information | -| -- | -------------------------------------------- | :---: | :---------------: | :------------: | :-----------: | :----: | ------------------------------------------------------------------------------------------------------------------------- | -| 1 | API definition | M | M | M | M | Y | [/code/API_definitions/click-to-dial.yaml](/code/API_definitions/click-to-dial.yaml) | -| 2 | Design guidelines from Commonalities applied | O | M | M | M | Y | [r2.3](https://github.com/camaraproject/Commonalities/releases/tag/r2.3) | -| 3 | Guidelines from ICM applied | O | M | M | M | Y | [r2.3](https://github.com/camaraproject/IdentityAndConsentManagement/releases/tag/r2.3) | -| 4 | API versioning convention applied | M | M | M | M | Y | | -| 5 | API documentation | M | M | M | M | Y | [/code/API_definitions/click-to-dial_API.md](/code/API_definitions/click-to-dial_API.md) | -| 6 | User stories | O | O | O | M | Y | [/documentation/API_documentation/click-to-dial_User_Story.md](/documentation/API_documentation/click-to-dial_User_Story.md) | -| 7 | Basic API test cases & documentation | O | M | M | M | Y | [/code/Test_definitions](/code/Test_definitions) | -| 8 | Enhanced API test cases & documentation | O | O | O | M | Y | [/code/Test_definitions](/code/Test_definitions) | -| 9 | Test result statement | O | O | O | M | N | | -| 10 | API release numbering convention applied | M | M | M | M | Y | | -| 11 | Change log updated | M | M | M | M | Y | [/CHANGELOG.md](/CHANGELOG.md) | -| 12 | Previous public release was certified | O | O | O | M | Y | | -| 13 | API description (for marketing) | O | O | M | M | | [wiki link](https://lf-camaraproject.atlassian.net/wiki/xxx) | - -To fill the checklist: - -- in the line above the table, replace the api-name, api-version and the rx.y by their actual values for the current API version and release. -- in the Status column, put "Y" (yes) if the release asset is available or fulfilled in the current release, a "N" (no) or a "tbd". Example use of "tbd" is in case an alpha or release-candidate API version does not yet provide all mandatory assets for the release. -- in the Reference information column, provide the relative links (from the API repository home folder) to the release asset once available, the applicable release numbers (not versions) of Commonalities and ICM, and any other relevant links or information. -- For the point 12: The Reference information comment shall reference a note (e.g. "see (1)") under the checklist table to be added that states the certified company(s) as can be found on the following link: [GSMA Open Gateway Portal](https://open-gateway.gsma.com/). - -Note: the checklists of a public API version and of its preceding release-candidate API version can be the same. - -The documentation for the content of the checklist is here: see API Readiness Checklist section in the [API Release Process](https://lf-camaraproject.atlassian)