Skip to content

ci: add release notes generation and notification #4

ci: add release notes generation and notification

ci: add release notes generation and notification #4

Workflow file for this run

name: Build Executables
on:
push:
tags:
- 'v*'
jobs:
build:
name: Build on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: windows-latest
platform: windows
arch: amd64
- os: macos-13
platform: macos
arch: amd64
- os: macos-14
platform: macos
arch: arm64
- os: ubuntu-latest
platform: linux
arch: amd64
- os: ubuntu-latest
platform: linux
arch: arm64
qemu: true
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
if: matrix.qemu
uses: docker/setup-qemu-action@v3
with:
platforms: arm64
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install PDM
run: |
python -m pip install --upgrade pip
pip install pdm
- name: Install dependencies
run: pdm install
- name: Install Nuitka
run: pdm add nuitka
- name: Build with Nuitka (Windows)
if: matrix.platform == 'windows'
run: |
pdm run nuitka `
--standalone `
--onefile `
--nofollow-imports `
--include-module=typer `
--include-module=requests `
--include-module=git `
--include-module=prompt_toolkit `
--include-module=rich `
--include-package=gptcomet `
--disable-console `
--output-dir=dist `
--output-filename=gptcomet-${{ matrix.platform }}-${{ matrix.arch }} `
--noinclude-setuptools-mode=allow `
--noinclude-pytest-mode=allow `
--no-pyi-file `
--no-debug `
--lto=yes `
gptcomet/__main__.py
- name: Build with Nuitka (Unix)
if: matrix.platform != 'windows'
run: |
pdm run nuitka \
--standalone \
--onefile \
--nofollow-imports \
--include-module=typer \
--include-module=requests \
--include-module=git \
--include-module=prompt_toolkit \
--include-module=rich \
--include-package=gptcomet \
--disable-console \
--output-dir=dist \
--output-filename=gptcomet-${{ matrix.platform }}-${{ matrix.arch }} \
--noinclude-setuptools-mode=allow \
--noinclude-pytest-mode=allow \
--no-pyi-file \
--no-debug \
--lto=yes \
gptcomet/__main__.py
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: gptcomet-${{ matrix.platform }}-${{ matrix.arch }}
path: dist/gptcomet-${{ matrix.platform }}-${{ matrix.arch }}*
release:
needs: build
runs-on: ubuntu-latest
permissions:
contents: write
steps:
# download all artifacts
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: dist
merge-multiple: true
# list contents
- name: List contents of dist
run: ls -al dist/
# get version
- name: Get version
id: get_version
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
# generate release notes
- name: Generate Release Notes
run: |
echo "# Release ${{ steps.get_version.outputs.VERSION }}" > release_notes.md
echo "" >> release_notes.md
echo "## What's Changed" >> release_notes.md
echo "* Add your release notes here" >> release_notes.md
echo "" >> release_notes.md
echo "## Artifacts" >> release_notes.md
echo "* Windows (x64)" >> release_notes.md
echo "* macOS (x64, arm64)" >> release_notes.md
echo "* Linux (x64, arm64)" >> release_notes.md
# create GitHub Release
- name: Create Release
uses: softprops/action-gh-release@v1
with:
files: dist/gptcomet-*
body_path: release_notes.md
draft: false # no draft
prerelease: false # no prerelease
generate_release_notes: true # generate release notes
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# notification
- name: Notification
if: success()
run: |
echo "Release ${{ steps.get_version.outputs.VERSION }} has been published successfully!"