mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-11-09 15:24:58 -05:00
ci: automate manual post-release steps (#3498)
Signed-off-by: Daniel Weiße <dw@edgeless.systems>
This commit is contained in:
parent
247df63d68
commit
900fb3f88b
3 changed files with 116 additions and 17 deletions
79
.github/workflows/release-publish.yml
vendored
Normal file
79
.github/workflows/release-publish.yml
vendored
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
name: 'Release: on-publish'
|
||||
|
||||
on:
|
||||
release:
|
||||
types:
|
||||
- published
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
tag:
|
||||
description: 'Semantic version tag of the release (vX.Y.Z).'
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
post-release-actions:
|
||||
runs-on: ubuntu-24.04
|
||||
permissions:
|
||||
issues: write
|
||||
env:
|
||||
FULL_VERSION: ${{ github.event.release.tag_name }}${{ github.event.inputs.tag }}
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
steps:
|
||||
- name: Mark milestone as complete
|
||||
run: |
|
||||
milestones=$(gh api \
|
||||
-H "Accept: application/vnd.github+json" \
|
||||
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||
/repos/edgelesssys/constellation/milestones)
|
||||
|
||||
current_milestone=$(echo "${milestones}" | jq -r ".[] | select(.title == \"${FULL_VERSION}\")")
|
||||
echo "current milestone: ${current_milestone}"
|
||||
if [[ -z "${current_milestone}" ]]; then
|
||||
echo "milestone ${FULL_VERSION} does not exist, nothing to do..."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
current_milestone_state=$(echo "${current_milestone}" | jq -r '.state')
|
||||
echo "current milestone state: ${current_milestone_state}"
|
||||
if [[ "${current_milestone_state}" != "open" ]]; then
|
||||
echo "milestone ${FULL_VERSION} is already closed, nothing to do..."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
milestone_number=$(echo "${current_milestone}" | jq -r '.number')
|
||||
echo "milestone number: ${milestone_number}"
|
||||
if [[ -z "${milestone_number}" ]]; then
|
||||
echo "failed parsing milestone number"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
gh api \
|
||||
--method PATCH \
|
||||
-H "Accept: application/vnd.github+json" \
|
||||
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||
"/repos/edgelesssys/constellation/milestones/${milestone_number}" \
|
||||
-f state=closed
|
||||
|
||||
- name: Create next milestone
|
||||
run: |
|
||||
WITHOUT_V=${FULL_VERSION#v}
|
||||
PART_MAJOR=${WITHOUT_V%%.*}
|
||||
PART_MINOR=${WITHOUT_V#*.}
|
||||
PART_MINOR=${PART_MINOR%%.*}
|
||||
NEXT_MINOR=v${PART_MAJOR}.$((PART_MINOR + 1)).0
|
||||
|
||||
gh api \
|
||||
-H "Accept: application/vnd.github+json" \
|
||||
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||
/repos/edgelesssys/constellation/milestones |
|
||||
jq -r '.[].title' | \
|
||||
grep -xqF "${NEXT_MINOR}" && exit 0
|
||||
|
||||
gh api \
|
||||
--method POST \
|
||||
-H "Accept: application/vnd.github+json" \
|
||||
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||
/repos/edgelesssys/constellation/milestones \
|
||||
-f title="${NEXT_MINOR}" \
|
||||
-f state='open' \
|
||||
-f "due_on=$(date -d '2 months' +'%Y-%m-%dT00:00:00Z')"
|
||||
36
.github/workflows/release.yml
vendored
36
.github/workflows/release.yml
vendored
|
|
@ -72,10 +72,9 @@ jobs:
|
|||
echo "WORKING_BRANCH=${WORKING_BRANCH}"
|
||||
} | tee -a "$GITHUB_OUTPUT"
|
||||
|
||||
docs:
|
||||
name: Create docs release (from main)
|
||||
update-main-branch:
|
||||
name: Update main branch with release changes
|
||||
runs-on: ubuntu-24.04
|
||||
if: inputs.kind == 'minor'
|
||||
needs: verify-inputs
|
||||
permissions:
|
||||
contents: write
|
||||
|
|
@ -89,26 +88,51 @@ jobs:
|
|||
with:
|
||||
ref: main
|
||||
|
||||
- name: Configure git
|
||||
run: |
|
||||
git config --global user.name "edgelessci"
|
||||
git config --global user.email "edgelessci@users.noreply.github.com"
|
||||
|
||||
- name: Create docs release
|
||||
if: inputs.kind == 'minor'
|
||||
working-directory: docs
|
||||
run: |
|
||||
npm ci
|
||||
npm run docusaurus docs:version "${MAJOR_MINOR}"
|
||||
git add .
|
||||
git commit -am "docs: release ${MAJOR_MINOR}"
|
||||
# Clean up auxiliary files, so next steps run on a clean tree
|
||||
git clean -fdx :/
|
||||
|
||||
- name: Update version.txt
|
||||
if: inputs.kind == 'minor'
|
||||
run: |
|
||||
pre_release_version="v${{ needs.verify-inputs.outputs.PART_MAJOR }}.$((${{ needs.verify-inputs.outputs.PART_MINOR }} + 1)).0-pre"
|
||||
echo "${pre_release_version}" > version.txt
|
||||
git add version.txt
|
||||
git commit -m "chore: update version.txt to ${pre_release_version}"
|
||||
|
||||
- name: Update CI for new version
|
||||
run: |
|
||||
sed -i 's/fromVersion: \["[^"]*"\]/fromVersion: ["${{ inputs.version }}"]/g' .github/workflows/e2e-test-release.yml
|
||||
sed -i 's/fromVersion: \["[^"]*"\]/fromVersion: ["${{ inputs.version }}"]/g' .github/workflows/e2e-test-weekly.yml
|
||||
|
||||
- name: Create docs pull request
|
||||
uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f # v7.0.5
|
||||
with:
|
||||
branch: ${{ env.BRANCH }}
|
||||
base: main
|
||||
title: "docs: add release ${{ env.VERSION }}"
|
||||
title: "Post ${{ env.VERSION }} release updates to main"
|
||||
body: |
|
||||
:robot: *This is an automated PR.* :robot:
|
||||
|
||||
The PR is triggered as part of the automated release process of version ${{ env.VERSION }}.
|
||||
It releases a new version of the documentation.
|
||||
commit-message: "docs: add release ${{ env.VERSION }}"
|
||||
commit-message: "chore: update CI for ${{ env.VERSION }}"
|
||||
committer: edgelessci <edgelessci@users.noreply.github.com>
|
||||
author: edgelessci <edgelessci@users.noreply.github.com>
|
||||
labels: no changelog
|
||||
assignees: ${{ github.actor }}
|
||||
reviewers: ${{ github.actor }}
|
||||
# We need to push changes using a token, otherwise triggers like on:push and on:pull_request won't work.
|
||||
token: ${{ !github.event.pull_request.head.repo.fork && secrets.CI_COMMIT_PUSH_PR || '' }}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue