Skip to content

Publish

Publish #137

name: Publish
on:
workflow_run:
workflows: Tests
branches: main
types: completed
workflow_dispatch:
inputs:
release_pypi:
description: 'Create a new PyPI release'
type: boolean
required: true
default: true
release_github:
description: 'Create a new GitHub release'
type: boolean
required: true
default: true
jobs:
build-and-release:
# XXX: Nobody expects the `contains()` repetition
if: contains(github.event.workflow_run.head_commit.message, 'Version') || github.event.inputs.release_pypi || github.event.inputs.release_github
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.10'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install setuptools wheel build twine
python -m pip install Pyinstaller
python -m pip install -e .
python setup.py install
- name: Build package (PyPI)
if: contains(github.event.workflow_run.head_commit.message, 'Version') || github.event.inputs.release_pypi
run: python -m build --no-isolation
- name: Publish package (PyPI)
if: contains(github.event.workflow_run.head_commit.message, 'Version') || github.event.inputs.release_pypi
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
run: |
twine upload ./dist/*.whl --skip-existing
twine upload ./dist/*.tar.gz --skip-existing
- name: Build Windows executable (GitHub)
if: contains(github.event.workflow_run.head_commit.message, 'Version') || github.event.inputs.release_github
run: |
pyinstaller sssekai.spec
- name : Get Version (GitHub)
if: contains(github.event.workflow_run.head_commit.message, 'Version') || github.event.inputs.release_github
id : get_version
run : |
$message = @(pip show sssekai)
$lines = $message.Split(' ')
$version = $lines[3]
Write-Output "::set-output name=version::$version"
- name: Create Release (GitHub)
if: contains(github.event.workflow_run.head_commit.message, 'Version') || github.event.inputs.release_github
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.get_version.outputs.version }}
release_name: Version ${{ steps.get_version.outputs.version }}
- name: Upload Release Asset (GitHub)
if: contains(github.event.workflow_run.head_commit.message, 'Version') || github.event.inputs.release_github
uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/sssekai.exe
asset_name: sssekai.exe
asset_content_type: application/application/vnd.microsoft.portable-executable
- name: Publish Release (GitHub)
if: contains(github.event.workflow_run.head_commit.message, 'Version') || github.event.inputs.release_github
uses: eregon/publish-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
release_id: ${{ steps.create_release.outputs.id }}