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 - 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: |- 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: | this_tag=$(git describe --abbrev=0 --tags) 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 $this_tag..$prev_tag --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: tag_name: ${{ env.RELEASE_TAG }} prerelease: true body: ${{ env.RELEASE_NOTE }}