Skip to content

Publish releases

Publish releases #123

Workflow file for this run

name: Publish releases
on:
release:
types: [published]
env:
PYTHON_VERSION: "3.12"
NODE_VERSION: "18.x"
NODE_OPTIONS: --max_old_space_size=6144
jobs:
build-artifact:
name: Builds precompiled version of the frontend and release as pypi package
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- name: Get tag
id: vars
run: >-
echo "tag=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT
- name: Validate version number
run: >-
if [[ "${{ github.event.release.prerelease }}" == "true" ]]; then
if ! [[ "${{ steps.vars.outputs.tag }}" =~ "b" || "${{ steps.vars.outputs.tag }}" =~ "rc" ]]; then
echo "Pre-release: Tag is missing beta suffix (${{ steps.vars.outputs.tag }})"
exit 1
fi
else
if [[ "${{ steps.vars.outputs.tag }}" =~ "b" || "${{ steps.vars.outputs.tag }}" =~ "rc" ]]; then
echo "Release: Tag must not have a beta (or rc) suffix (${{ steps.vars.outputs.tag }})"
exit 1
fi
fi
- name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/[email protected]
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Install build
run: >-
pip install build tomli tomli-w
- name: Set up Node ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: yarn
- name: Install dependencies
run: |
yarn install
python3 -m pip install build tomli tomli-w
- name: Set Python project version from tag
shell: python
run: |-
import tomli
import tomli_w
with open("pyproject.toml", "rb") as f:
pyproject = tomli.load(f)
pyproject["project"]["version"] = "${{ steps.vars.outputs.tag }}"
with open("pyproject.toml", "wb") as f:
tomli_w.dump(pyproject, f)
- name: Build and release package
run: |
yarn build
rm -rf dist music_assistant_frontend.egg-info
python3 -m build
- name: Publish release to PyPI
uses: pypa/[email protected]
with:
user: __token__
password: ${{ secrets.PYPI_TOKEN }}
- name: Upload release assets
uses: softprops/[email protected]
with:
tag_name: ${{ steps.vars.outputs.tag }}
files: |
dist/*.whl
dist/*.tar.gz
- name: Create Server repo PR
uses: music-assistant/frontend-release-pr-action@main
with:
github_token: ${{ secrets.PRIVILEGED_GITHUB_TOKEN }}
new_release_version: ${{ steps.vars.outputs.tag }}