54 lines
1.8 KiB
YAML
54 lines
1.8 KiB
YAML
name: Publish Release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
|
|
jobs:
|
|
publish:
|
|
runs-on: docker
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Install git-cliff
|
|
run: |
|
|
GIT_CLIFF_VERSION="2.13.0"
|
|
URL="https://github.com/orhun/git-cliff/releases/download/v${GIT_CLIFF_VERSION}/git-cliff-${GIT_CLIFF_VERSION}-x86_64-unknown-linux-gnu.tar.gz"
|
|
TMPDIR="$(mktemp -d)"
|
|
curl -sL "$URL" | tar xz -C "$TMPDIR"
|
|
mkdir -p "$HOME/.local/bin"
|
|
mv "$TMPDIR/git-cliff-${GIT_CLIFF_VERSION}/git-cliff" "$HOME/.local/bin/git-cliff"
|
|
chmod +x "$HOME/.local/bin/git-cliff"
|
|
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
|
|
"$HOME/.local/bin/git-cliff" --version
|
|
- name: Install build tools
|
|
run: |
|
|
python3 -m pip install --break-system-packages build twine requests python-dotenv click
|
|
- name: Validate PYPI_TOKEN
|
|
run: |
|
|
if [ -z "${{ secrets.PYPI_TOKEN }}" ]; then
|
|
echo "::warning::PYPI_TOKEN is not set — package will be built but not published to PyPI."
|
|
fi
|
|
- name: Build and publish release
|
|
env:
|
|
REPO_TOKEN: ${{ secrets.REPO_TOKEN }}
|
|
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
|
|
PYTHONPATH: src
|
|
run: |
|
|
python3 scripts/ci/publish.py \
|
|
"${{ github.ref_name }}" \
|
|
"${{ github.repository }}"
|
|
- name: Notify on failure
|
|
if: failure()
|
|
env:
|
|
REPO_TOKEN: ${{ secrets.REPO_TOKEN }}
|
|
PYTHONPATH: src
|
|
run: |
|
|
python3 scripts/ci/notify_failure.py \
|
|
--repo "${{ github.repository }}" \
|
|
--run-id "${{ github.run_id }}" \
|
|
--workflow "publish" \
|
|
--commit "${{ github.sha }}"
|