name: Create Release on: push: tags: - 'v*' jobs: release: permissions: contents: write runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: calculate previous tag run: | git fetch --tags origin PREVIOUS_TAG=$(git tag --sort=-creatordate | sed -n '2 p') echo $PREVIOUS_TAG echo "PREVIOUS_TAG=$PREVIOUS_TAG" >> "$GITHUB_ENV" - name: generate release notes from template id: release-notes env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | NOTES=$(gh api \ --method POST \ -H "Accept: application/vnd.github+json" \ -H "X-GitHub-Api-Version: 2022-11-28" \ /repos/krkn-chaos/krkn/releases/generate-notes \ -f "tag_name=${{ github.ref_name }}" -f "target_commitish=main" -f "previous_tag_name=${{ env.PREVIOUS_TAG }}" | jq -r .body) echo "NOTES<> $GITHUB_ENV echo "$NOTES" >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV - name: replace placeholders in template run: | echo "${{ env.NOTES }}" TEMPLATE=$(cat .github/release-template.md) VERSION=${{ github.ref_name }} NOTES="${{ env.NOTES }}" OUTPUT=${TEMPLATE//\{VERSION\}/$VERSION} OUTPUT=${OUTPUT//\{CHANGES\}/$NOTES} echo "$OUTPUT" > release-notes.md - name: create release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | gh release create ${{ github.ref_name }} --title "${{ github.ref_name }}" -F release-notes.md - name: Install Syft run: | curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sudo sh -s -- -b /usr/local/bin - name: Generate SBOM env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | syft . --scope all-layers --output cyclonedx-json > sbom.json echo "SBOM generated successfully!" gh release upload ${{ github.ref_name }} sbom.json