Skip to content

chore(release): v1.16.0 #11

chore(release): v1.16.0

chore(release): v1.16.0 #11

Workflow file for this run

name: Release
on:
push:
tags:
- 'v*.*.*'
permissions:
contents: write
jobs:
build:
name: Build Release Artifacts
runs-on: ubuntu-latest
outputs:
version: ${{ steps.get_version.outputs.version }}
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
fetch-depth: 0
- name: Get version from tag
id: get_version
run: |
VERSION=${GITHUB_REF#refs/tags/}
echo "version=${VERSION}" >> $GITHUB_OUTPUT
echo "Version: ${VERSION}"
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y jq curl git
- name: Prepare release (update CHANGELOG)
run: |
chmod +x scripts/prepare-release.sh
# CHANGELOG may already be prepared by 'aicommit --release'; skip gracefully
if grep -A 10 "## \[Unreleased\]" CHANGELOG.md | grep -q "^###"; then
./scripts/prepare-release.sh ${{ steps.get_version.outputs.version }}
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add CHANGELOG.md
git commit -m "chore(release): update CHANGELOG for ${{ steps.get_version.outputs.version }}" || true
else
echo "CHANGELOG [Unreleased] section is empty -- already prepared. Skipping."
fi
- name: Create release tarball
run: |
mkdir -p dist
tar -czf dist/aicommit-${{ steps.get_version.outputs.version }}.tar.gz \
aicommit install.sh README.md LICENSE CHANGELOG.md
- name: Copy standalone script
run: cp aicommit dist/aicommit
- name: Extract release notes
run: |
chmod +x scripts/extract-release-notes.sh
./scripts/extract-release-notes.sh ${{ steps.get_version.outputs.version }} > dist/release_notes.md
cat dist/release_notes.md
- name: Generate checksums
run: |
cd dist
sha256sum aicommit aicommit-*.tar.gz > SHA256SUMS
cat SHA256SUMS
- name: Upload artifacts
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: release-artifacts
path: dist/
github-release:
name: Create GitHub Release
needs: build
runs-on: ubuntu-latest
steps:
- name: Download artifacts
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
with:
name: release-artifacts
path: dist/
- name: Display release notes
run: |
echo "Release notes for ${{ needs.build.outputs.version }}:"
cat dist/release_notes.md
- name: Create GitHub Release
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1
with:
tag_name: ${{ needs.build.outputs.version }}
name: ${{ needs.build.outputs.version }}
body_path: dist/release_notes.md
files: |
dist/aicommit
dist/aicommit-${{ needs.build.outputs.version }}.tar.gz
dist/SHA256SUMS
draft: false
prerelease: false
debian-package:
name: Build Debian Package
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: Install fpm
run: sudo gem install fpm
- name: Build .deb package
run: |
chmod +x scripts/build-deb.sh
./scripts/build-deb.sh ${{ needs.build.outputs.version }}
- name: Upload to release
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1
with:
tag_name: ${{ needs.build.outputs.version }}
files: aicommit_*.deb
rpm-package:
name: Build RPM Package
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: Install fpm and rpm tools
run: |
sudo gem install fpm
sudo apt-get update
sudo apt-get install -y rpm
- name: Build .rpm package
run: |
chmod +x scripts/build-rpm.sh
./scripts/build-rpm.sh ${{ needs.build.outputs.version }}
- name: Upload to release
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1
with:
tag_name: ${{ needs.build.outputs.version }}
files: aicommit-*.rpm