7.3.0+driver #54
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Generate release body for published releases | |
on: | |
release: | |
types: [published] | |
# Checks if any concurrent jobs is running for driver release CI and eventually wait for it. | |
concurrency: | |
group: release | |
cancel-in-progress: false | |
jobs: | |
release-settings: | |
runs-on: ubuntu-latest | |
outputs: | |
is_latest: ${{ steps.get_settings.outputs.is_latest }} | |
is_driver: ${{ steps.get_settings.outputs.is_driver }} | |
steps: | |
- name: Get latest release | |
uses: rez0n/actions-github-release@27a57820ee808f8fd940c8a9d1f7188f854aa2b5 # v2.0 | |
id: latest_release | |
env: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
repository: ${{ github.repository }} | |
type: "stable" | |
- name: Get settings for this release | |
id: get_settings | |
shell: python | |
run: | | |
import os | |
import re | |
import sys | |
semver_no_meta = '''^(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)(?:-(?P<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?P<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$''' | |
tag_name = '${{ github.event.release.tag_name }}' | |
is_valid_version = re.match(semver_no_meta, tag_name) is not None | |
if not is_valid_version: | |
print(f'Release version {tag_name} is not a valid full or pre-release. See RELEASE.md for more information.') | |
sys.exit(1) | |
is_prerelease = '-' in tag_name | |
# Safeguard: you need to both set "latest" in GH and not have suffixes to overwrite latest | |
is_latest = '${{ steps.latest_release.outputs.release }}' == tag_name and not is_prerelease | |
is_driver = "+driver" in tag_name | |
with open(os.environ['GITHUB_OUTPUT'], 'a') as ofp: | |
print(f'is_latest={is_latest}'.lower(), file=ofp) | |
print(f'is_driver={is_driver}'.lower(), file=ofp) | |
release-body-libs: | |
needs: [release-settings] | |
if: ${{ needs.release-settings.outputs.is_latest == 'true' && needs.release-settings.outputs.is_driver == 'false' }} # only for latest releases and not driver ones | |
permissions: | |
contents: write | |
runs-on: ubuntu-latest | |
steps: | |
- name: Clone repo | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- name: Create release body file | |
run: | | |
touch release-body.md | |
- name: Extract MIN_API version | |
run: | | |
MIN_API_VER=$(grep SCAP_MINIMUM_DRIVER_API_VERSION userspace/libscap/scap.h) | |
prefix="#define SCAP_MINIMUM_DRIVER_API_VERSION PPM_API_VERSION" | |
MIN_API_VER=${MIN_API_VER/#$prefix} | |
MIN_API_VER=$(echo $MIN_API_VER | tr -d "(" | tr -d ")") | |
MIN_API_VER=$(echo $MIN_API_VER | sed -r 's/, /./g') | |
echo '!'"[MIN_DRIVER_API](https://img.shields.io/badge/MIN_DRIVER_API-${MIN_API_VER}-yellow)" >> release-body.md | |
- name: Extract MIN_SCHEMA version | |
run: | | |
MIN_SCHEMA_VER=$(grep SCAP_MINIMUM_DRIVER_SCHEMA_VERSION userspace/libscap/scap.h) | |
prefix="#define SCAP_MINIMUM_DRIVER_SCHEMA_VERSION PPM_API_VERSION" | |
MIN_SCHEMA_VER=${MIN_SCHEMA_VER/#$prefix} | |
MIN_SCHEMA_VER=$(echo $MIN_SCHEMA_VER | tr -d "(" | tr -d ")") | |
MIN_SCHEMA_VER=$(echo $MIN_SCHEMA_VER | sed -r 's/, /./g') | |
echo '!'"[MIN_DRIVER_SCHEMA](https://img.shields.io/badge/MIN_DRIVER_SCHEMA-${MIN_SCHEMA_VER}-yellow)" >> release-body.md | |
echo "" >> release-body.md | |
- name: Generate release notes | |
uses: leodido/rn2md@9c351d81278644c0e17b1ca68edbdba305276c73 | |
with: | |
milestone: ${{ github.event.release.tag_name }} | |
output: ./notes.md | |
- name: Merge release notes to pre existent body | |
run: cat notes.md >> release-body.md | |
- name: Attach release creator to release body | |
run: | | |
echo "" >> release-body.md | |
echo "#### Release Manager @${{ github.event.release.author.login }}" >> release-body.md | |
- name: Release | |
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v0.1.15 | |
with: | |
body_path: ./release-body.md | |
tag_name: ${{ github.event.release.tag_name }} | |
name: ${{ github.event.release.name }} | |
kernel-tests-release: | |
needs: [release-settings] | |
if: ${{ needs.release-settings.outputs.is_latest == 'true' && needs.release-settings.outputs.is_driver == 'true' }} # only for latest driver releases | |
uses: ./.github/workflows/reusable_kernel_tests.yaml | |
with: | |
libsversion: ${{ github.event.release.tag_name }} | |
secrets: inherit | |
release-body-driver: | |
needs: [release-settings, kernel-tests-release] | |
if: ${{ needs.release-settings.outputs.is_latest == 'true' && needs.release-settings.outputs.is_driver == 'true' }} # only for latest driver releases | |
permissions: | |
contents: write | |
runs-on: ubuntu-latest | |
steps: | |
- name: Clone libs repo | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- name: Create release body file | |
run: | | |
touch release-body.md | |
- name: Extract API and SCHEMA versions | |
run: | | |
touch release-body.md | |
API_VERS=$(cat driver/API_VERSION) | |
SCHEMA_VERS=$(cat driver/SCHEMA_VERSION) | |
echo '!'"[API](https://img.shields.io/badge/API-${API_VERS}-yellow)" >> release-body.md | |
echo '!'"[SCHEMA](https://img.shields.io/badge/SCHEMA-${SCHEMA_VERS}-yellow)" >> release-body.md | |
echo "" >> release-body.md | |
- name: Download matrix X64 | |
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 | |
with: | |
name: matrix_X64 | |
- name: Rename X64 matrix | |
run: mv matrix.md matrix_X64.md | |
- name: Download matrix ARM64 | |
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 | |
with: | |
name: matrix_ARM64 | |
- name: Rename ARM64 matrix | |
run: mv matrix.md matrix_ARM64.md | |
# Steps: | |
# Remove everything after the table (ie: since the first line that starts with "# ", | |
# ie: a markdown section start. | |
# Remove links to the markdown sections in the table too. | |
# Then, add a small title to each matrix | |
# Finally, merge them together | |
- name: Append matrixes to create release body | |
run: | | |
sed -i -n '/# /q;p' matrix_X64.md | |
sed -i -n '/# /q;p' matrix_ARM64.md | |
sed -i 's/\[\(.\)\]([^)]*)/\1/g' matrix_X64.md | |
sed -i 's/\[\(.\)\]([^)]*)/\1/g' matrix_ARM64.md | |
sed -i '1s/^/# Driver Testing Matrix amd64\n\n/' matrix_X64.md | |
sed -i '1s/^/# Driver Testing Matrix arm64\n\n/' matrix_ARM64.md | |
cat matrix_X64.md matrix_ARM64.md >> release-body.md | |
- name: Generate release notes | |
uses: leodido/rn2md@9c351d81278644c0e17b1ca68edbdba305276c73 | |
with: | |
milestone: ${{ github.event.release.tag_name }} | |
output: ./notes.md | |
- name: Merge release notes to pre existent body | |
run: cat notes.md >> release-body.md | |
- name: Attach release creator to release body | |
run: | | |
echo "" >> release-body.md | |
echo "#### Release Manager @${{ github.event.release.author.login }}" >> release-body.md | |
- name: Release | |
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v0.1.15 | |
with: | |
body_path: ./release-body.md | |
tag_name: ${{ github.event.release.tag_name }} | |
name: ${{ github.event.release.name }} |