61 lines
2.2 KiB
YAML
61 lines
2.2 KiB
YAML
name: release
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
tags:
|
|
- 'v*'
|
|
|
|
jobs:
|
|
test-and-release:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Python venv & dependencies
|
|
run: |
|
|
python3 -m venv .venv
|
|
. .venv/bin/activate
|
|
pip install --upgrade pip
|
|
pip install uv pytest
|
|
|
|
- name: Run unit tests
|
|
run: |
|
|
. .venv/bin/activate
|
|
PYTHONPATH=plugin pytest plugin/tests
|
|
|
|
- name: Build wheel and sdist
|
|
run: |
|
|
. .venv/bin/activate
|
|
uv build plugin/
|
|
|
|
- name: Publish Gitea Release
|
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
env:
|
|
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN || secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
tag_name="${GITHUB_REF#refs/tags/}"
|
|
echo "Publishing release for $tag_name"
|
|
wheel_file=$(ls plugin/dist/*.whl | head -n 1)
|
|
tar_file=$(ls plugin/dist/*.tar.gz | head -n 1)
|
|
|
|
# Create release
|
|
response=$(curl -s -k -X POST "${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases" \
|
|
-H "Authorization: token $GITEA_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"tag_name\": \"$tag_name\", \"name\": \"$tag_name\", \"body\": \"Release $tag_name for hermes-meshtastic plugin\"}")
|
|
|
|
release_id=$(echo "$response" | grep -o '"id":[0-9]*' | head -n 1 | cut -d: -f2)
|
|
if [ -n "$release_id" ]; then
|
|
curl -s -k -X POST "${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases/$release_id/assets?name=$(basename $wheel_file)" \
|
|
-H "Authorization: token $GITEA_TOKEN" \
|
|
-H "Content-Type: application/octet-stream" \
|
|
--data-binary "@$wheel_file"
|
|
curl -s -k -X POST "${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases/$release_id/assets?name=$(basename $tar_file)" \
|
|
-H "Authorization: token $GITEA_TOKEN" \
|
|
-H "Content-Type: application/octet-stream" \
|
|
--data-binary "@$tar_file"
|
|
fi
|