-
Notifications
You must be signed in to change notification settings - Fork 96
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
0e7ec40
commit fce306a
Showing
2 changed files
with
81 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,33 +3,48 @@ name: Publish releases | |
on: | ||
release: | ||
types: [published] | ||
workflow_dispatch: | ||
inputs: | ||
tags: | ||
description: 'Run Dev Build' | ||
required: true | ||
type: boolean | ||
env: | ||
PYTHON_VERSION: "3.11" | ||
|
||
jobs: | ||
build-and-publish-pypi: | ||
name: Builds and publishes releases to PyPI | ||
build-artifact: | ||
name: Builds python artifact uploads to Github Artifact store | ||
runs-on: ubuntu-latest | ||
outputs: | ||
version: ${{ steps.vars.outputs.tag }} | ||
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 | ||
if [[ "${{ inputs.tags }}" == "true" ]]; then | ||
echo "tag=$(git rev-parse --short "$GITHUB_SHA")" >> $GITHUB_OUTPUT | ||
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 | ||
echo "tag=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT | ||
fi | ||
- name: Validate version number | ||
run: >- | ||
if [[ "${{ inputs.tags }}" == "true" ]]; then | ||
echo "Skipping version validation for manual trigger" | ||
else | ||
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 | ||
fi | ||
fi | ||
- name: Set up Python ${{ env.PYTHON_VERSION }} | ||
uses: actions/[email protected] | ||
with: | ||
|
@@ -53,6 +68,23 @@ jobs: | |
- name: Build python package | ||
run: >- | ||
python3 -m build | ||
- name: Upload distributions | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: release-dists | ||
path: dist/ | ||
|
||
pypi-publish: | ||
runs-on: ubuntu-latest | ||
if: ${{ ! inputs.tags }} | ||
needs: | ||
- build-artifact | ||
steps: | ||
- name: Retrieve release distributions | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: release-dists | ||
path: dist/ | ||
- name: Publish release to PyPI | ||
uses: pypa/[email protected] | ||
with: | ||
|
@@ -66,8 +98,13 @@ jobs: | |
runs-on: ubuntu-latest | ||
permissions: | ||
packages: write | ||
needs: build-and-publish-pypi | ||
needs: build-artifact | ||
steps: | ||
- name: Retrieve release distributions | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: release-dists | ||
path: dist/ | ||
- uses: actions/[email protected] | ||
- name: Download Widevine CDM client files from private repository | ||
shell: bash | ||
|
@@ -95,7 +132,7 @@ jobs: | |
echo "major=${patch%.*.*}" >> $GITHUB_OUTPUT | ||
- name: Build and Push release | ||
uses: docker/[email protected] | ||
if: github.event.release.prerelease == false | ||
if: ${{ ! inputs.tags && github.event.release.prerelease == false }} | ||
with: | ||
context: . | ||
platforms: linux/amd64,linux/arm64 | ||
|
@@ -107,10 +144,10 @@ jobs: | |
ghcr.io/${{ github.repository_owner }}/server:stable, | ||
ghcr.io/${{ github.repository_owner }}/server:latest | ||
push: true | ||
build-args: "MASS_VERSION=${{ needs.build-and-publish-pypi.outputs.version }}" | ||
build-args: "MASS_VERSION=${{ needs.build-artifact.outputs.version }}" | ||
- name: Build and Push pre-release | ||
uses: docker/[email protected] | ||
if: github.event.release.prerelease == true | ||
if: ${{ ! inputs.tags && github.event.release.prerelease == true }} | ||
with: | ||
context: . | ||
platforms: linux/amd64,linux/arm64 | ||
|
@@ -119,25 +156,41 @@ jobs: | |
ghcr.io/${{ github.repository_owner }}/server:${{ steps.tags.outputs.patch }}, | ||
ghcr.io/${{ github.repository_owner }}/server:beta | ||
push: true | ||
build-args: "MASS_VERSION=${{ needs.build-and-publish-pypi.outputs.version }}" | ||
build-args: "MASS_VERSION=${{ needs.build-artifact.outputs.version }}" | ||
- name: Build and Push dev-release | ||
uses: docker/[email protected] | ||
if: inputs.tags | ||
with: | ||
context: . | ||
platforms: linux/amd64,linux/arm64 | ||
file: Dockerfile | ||
tags: |- | ||
ghcr.io/${{ github.repository_owner }}/server:${{ needs.build-artifact.outputs.version }}, | ||
ghcr.io/${{ github.repository_owner }}/server:dev | ||
push: true | ||
build-args: | | ||
MASS_VERSION=${{ needs.build-artifact.outputs.version }} | ||
DEV_RELEASE="true" | ||
MASS_INSTALL_LOCATION="/tmp/music_assitant-${{ needs.build-artifact.outputs.version }}-py3-none-any.whl" | ||
release-notes-update: | ||
name: Updates the release notes and changelog | ||
needs: [build-and-publish-pypi, build-and-push-container-image] | ||
needs: [build-artifact, pypi-publish, build-and-push-container-image] | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Update changelog and release notes including frontend notes | ||
uses: music-assistant/release-notes-merge-action@main | ||
with: | ||
github_token: ${{ secrets.PRIVILEGED_GITHUB_TOKEN }} | ||
release_tag: ${{ needs.build-and-publish-pypi.outputs.version }} | ||
release_tag: ${{ needs.build-artifact.outputs.version }} | ||
pre_release: ${{ github.event.release.prerelease }} | ||
|
||
addon-version-update: | ||
name: Updates the Addon repository with the new version | ||
needs: | ||
[ | ||
build-and-publish-pypi, | ||
build-artifact, | ||
pypi-publish, | ||
build-and-push-container-image, | ||
release-notes-update, | ||
] | ||
|
@@ -147,5 +200,5 @@ jobs: | |
uses: music-assistant/addon-update-action@main | ||
with: | ||
github_token: ${{ secrets.PRIVILEGED_GITHUB_TOKEN }} | ||
new_server_version: ${{ needs.build-and-publish-pypi.outputs.version }} | ||
new_server_version: ${{ needs.build-artifact.outputs.version }} | ||
pre_release: ${{ github.event.release.prerelease }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters