mirror of https://github.com/c-ares/c-ares.git
release automation (#906)
When a release is tagged, automatically build the release package and create a draft of the release. Since the build is automated we are also performing provenance as per [SLSA3](https://slsa.dev/) and uploading that as a release asset. This also fixes a couple of recent issues: * validation of the packaging itself was broken when we migrated from cirrus ci to github actions. * clang32 for msys2 has been deprecated causing building to fail. Authored-By: Brad House (@bradh352)v1.34
parent
21343d7d32
commit
a5e2761e9b
3 changed files with 83 additions and 8 deletions
@ -0,0 +1,81 @@ |
||||
# Copyright (C) The c-ares project and its contributors |
||||
# SPDX-License-Identifier: MIT |
||||
name: Build Release Package |
||||
on: |
||||
push: |
||||
|
||||
concurrency: |
||||
group: ${{ github.ref }}-build-release-package |
||||
cancel-in-progress: true |
||||
|
||||
env: |
||||
TEST_FILTER: "--gtest_filter=-*LiveSearchTXT*:*LiveSearchANY*" |
||||
MAKE: make |
||||
|
||||
jobs: |
||||
build: |
||||
runs-on: ubuntu-latest |
||||
permissions: |
||||
contents: write |
||||
discussions: write |
||||
outputs: |
||||
hashes: ${{ steps.hash.outputs.hashes }} |
||||
version: ${{ steps.version.outputs.version }} |
||||
name: "build" |
||||
steps: |
||||
- name: Install packages |
||||
uses: awalsh128/cache-apt-pkgs-action@latest |
||||
with: |
||||
packages: autoconf automake libtool g++ libgmock-dev pkg-config gdb |
||||
version: 1.0 |
||||
- name: Checkout c-ares |
||||
uses: actions/checkout@v4 |
||||
- name: Get Tag version |
||||
id: version |
||||
run: | |
||||
version=`echo ${GITHUB_REF} | grep '^refs/tags/v' | sed -e 's|^refs/tags/v\(.*\)|\1|'` |
||||
if [ "$version" = "" ] ; then |
||||
version="prerelease" |
||||
fi |
||||
echo "version=${version}" >> "$GITHUB_OUTPUT" |
||||
- name: "build c-ares tarball" |
||||
run: | |
||||
autoreconf -fi |
||||
./configure |
||||
make dist |
||||
- name: Upload artifact |
||||
uses: actions/upload-artifact@v4 |
||||
with: |
||||
name: "c-ares-src-tarball" |
||||
path: 'c-ares-*.tar.gz' |
||||
if-no-files-found: error |
||||
overwrite: true |
||||
retention-days: 7 |
||||
- name: Upload Release |
||||
uses: softprops/action-gh-release@v2 |
||||
if: startsWith(github.ref, 'refs/tags/') |
||||
with: |
||||
body_path: RELEASE-NOTES.md |
||||
draft: true |
||||
make_latest: true |
||||
name: ${{ steps.version.outputs.version }} |
||||
files: c-ares-${{ steps.version.outputs.version }}.tar.gz |
||||
fail_on_unmatched_files: true |
||||
discussion_category_name: "Announcements" |
||||
- name: Generate subject |
||||
id: hash |
||||
run: | |
||||
set -euo pipefail |
||||
echo "hashes=$(sha256sum c-ares-*.tar.gz | base64 -w0)" >> "$GITHUB_OUTPUT" |
||||
|
||||
provenance: |
||||
needs: [build] |
||||
permissions: |
||||
actions: read # To read the workflow path. |
||||
id-token: write # To sign the provenance. |
||||
contents: write # To add assets to a release. |
||||
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.0.0 |
||||
with: |
||||
base64-subjects: "${{ needs.build.outputs.hashes }}" |
||||
upload-assets: ${{ startsWith(github.ref, 'refs/tags/') }} |
||||
provenance-name: "c-ares-${{ needs.build.outputs.version }}.intoto.jsonl" |
Loading…
Reference in new issue