Files
eos/.github/workflows/release.yml
Artur Glavic 6a06e7afe7
All checks were successful
Unit Testing / test (3.10) (pull_request) Successful in 49s
Unit Testing / test (3.11) (pull_request) Successful in 49s
Unit Testing / test (3.12) (pull_request) Successful in 49s
Unit Testing / test (3.8) (pull_request) Successful in 50s
Unit Testing / test (3.9) (pull_request) Successful in 49s
try fixing git could not describe commits
2026-02-27 16:47:29 +01:00

134 lines
4.4 KiB
YAML

name: Release
# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
tags:
- "*"
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
inputs:
build-items:
description: 'Items to be build'
required: true
default: 'all'
type: choice
options:
- all
- windows
- linux
- all_incl_release
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
fail-fast: false
steps:
- name: Checkout LFS objects
run: git clone https://${{secrets.GITHUB_TOKEN}}@gitea.psi.ch/${{ github.repository }}.git .
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pytest
pip install -r requirements.txt
- name: Test with pytest
run: |
export PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
python -m pytest tests
build-ubuntu-latest:
needs: [test]
runs-on: ubuntu-latest
if: ${{ (github.event_name != 'workflow_dispatch') || (contains(fromJson('["all", "linux", "all_incl_release"]'), github.event.inputs.build-items)) }}
permissions:
id-token: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install build
pip install -r requirements.txt
pip install wheel build twine
- name: Build PyPI package
run: |
python3 -m build
- name: Upload to PyPI
run: |
twine upload dist/* -u __token__ -p ${{ secrets.PYPI_TOKEN }} --skip-existing
this_tag=$(python -c "import eos;print('v'+eos.__version__)")
echo "RELEASE_TAG=$this_tag" >> $GITHUB_ENV
- name: Update Release
if: ${{ (github.event_name != 'workflow_dispatch') || (contains(fromJson('["all_incl_release"]'), github.event.inputs.build-items)) }}
uses: actions/gitea-release-action@v1
with:
tag_name: ${{ env.RELEASE_TAG }}
files: |-
dist/amor*.tar.gz
# build-windows:
# needs: [test]
# runs-on: windows-latest
# if: ${{ (github.event_name != 'workflow_dispatch') || (contains(fromJson('["all", "windows", "all_incl_release"]'), github.event.inputs.build-items)) }}
#
# steps:
# - uses: actions/checkout@v4
# - name: Set up Python
# uses: actions/setup-python@v5
# with:
# python-version: 3.12
# - name: Install dependencies
# run: |
# C:\Miniconda\condabin\conda.bat env update --file conda_windows.yml --name base
# C:\Miniconda\condabin\conda.bat init powershell
# - name: Build with pyinstaller
# run: |
# pyinstaller windows_build.spec
# cd dist\eos
# Compress-Archive -Path .\* -Destination ..\..\eos.zip
# - name: Update Release
# if: ${{ (github.event_name != 'workflow_dispatch') || (contains(fromJson('["all_incl_release"]'), github.event.inputs.build-items)) }}
# uses: actions/gitea-release-action@v1
# with:
# files: |-
# eos.zip
release:
if: ${{ (github.event_name != 'workflow_dispatch') || (contains(fromJson('["all_incl_release"]'), github.event.inputs.build-items)) }}
runs-on: ubuntu-latest
needs: [test]
steps:
- uses: actions/checkout@v4
- name: get latest version tag and release note
run: |
git fetch --depth=500
this_tag=$(python -c "import eos;print('v'+eos.__version__)")
prev_tag=$(git describe --abbrev=0 --tags `git rev-list --tags --skip=1 --max-count=1`)
commit_messages==$'Commits since previous release: \n\n'$(git log $prev_tag..HEAD --pretty=format:"* %s")
echo "RELEASE_TAG=$this_tag" >> $GITHUB_ENV
echo "RELEASE_NOTE=$commit_messages" >> $GITHUB_ENV
- name: Create Release
uses: actions/gitea-release-action@v1
with:
name: "Amor-Eos ${{ env.RELEASE_TAG }}"
tag_name: ${{ env.RELEASE_TAG }}
prerelease: true
body: ${{ env.RELEASE_NOTE }}