# BUILD A RELEASE: ONE COMMIT, ONE PACKAGE, KEPT FOR GOOD. # # Run by hand from master or a release/* branch, on the release commit: # the one whose VERSION says the version being released. It builds the # package from exactly that commit, runs every check and the full # container gate on that file, and creates the Gitea pre-release # vVERSION holding the package, SHA256SUMS, build-info.json and the # reports. Nothing is published: Preview and Stable are their own # workflows, and each is a person's decision. See docs/releasing.md. # # A version that already has a Gitea release, a tag, or a package on the # update server is refused. A version is built once. name: Release 1 - build on: workflow_dispatch: inputs: version: description: 'The version to build; VERSION at this commit must say the same (e.g. 0.2.6.7)' required: true from_versions: description: 'Older releases rooms are still on, rehearsed as upgrades too (e.g. 0.2.2)' required: false default: '' jobs: build: name: build, check, gate and record runs-on: ekklesia-ci steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Build, check, gate, and create the Gitea pre-release id: build env: VERSION: ${{ github.event.inputs.version }} FROM_VERSIONS: ${{ github.event.inputs.from_versions }} GITEA_TOKEN: ${{ secrets.RELEASE_API_TOKEN || github.token }} run: | # shellcheck disable=SC2086 # FROM_VERSIONS is a list of versions RELEASE_CI_WORK="$RUNNER_TEMP/release" tools/release-ci.sh build "$VERSION" $FROM_VERSIONS - name: Keep the reports with this run as well if: always() uses: actions/upload-artifact@v3 with: name: release-build-reports path: | dist/release-*/gate-report.txt dist/release-*/checks.md dist/release-*/build-info.json ${{ runner.temp }}/release/checks