name: release-master permissions: contents: write defaults: run: shell: bash on: # release: # types: [published] # branches: [master] push: tags: - "v*.*.*" env: RELEASE_UPLOAD_URL: "release_upload_url" ASSET_EXTENSION: ".zip" OUT_NAME_FILE: "TIDAL-Downloader-NG" ARCH_MACOS_X64: "macos-x64" ARCH_MACOS_ARM64: "macos-arm64" ARCH_LINUX_X64: "linux-x64" ARCH_WINDOWS_X64: "windows-x64" jobs: publish: runs-on: ubuntu-latest steps: - name: Check out uses: actions/checkout@v4 - name: Set up the environment uses: ./.github/actions/setup-poetry-env - name: Export tag id: vars run: echo tag=${GITHUB_REF#refs/*/} >> $GITHUB_OUTPUT - name: Build and publish run: | source .venv/bin/activate poetry version $RELEASE_VERSION make build-and-publish env: PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} RELEASE_VERSION: ${{ steps.vars.outputs.tag }} - name: GitHub Release id: release_create uses: softprops/action-gh-release@v1 with: draft: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Output Release URL File run: echo "${{steps.release_create.outputs.upload_url}}" > ${{env.RELEASE_UPLOAD_URL}}.txt - name: Save Upload URL File for publish uses: actions/upload-artifact@v4 with: name: ${{env.RELEASE_UPLOAD_URL}} path: ${{env.RELEASE_UPLOAD_URL}}.txt deploy-docs: needs: publish runs-on: ubuntu-latest steps: - name: Check out uses: actions/checkout@v4 - name: Set up the environment uses: ./.github/actions/setup-poetry-env - name: Deploy documentation run: poetry run mkdocs gh-deploy --force compute: # Workaround to be able to use variables in matrix. # See: https://stackoverflow.com/questions/74072206/github-actions-use-variables-in-matrix-definition runs-on: ubuntu-latest outputs: ASSET_EXTENSION: ${{ env.ASSET_EXTENSION }} OUT_NAME_FILE: ${{ env.OUT_NAME_FILE }} ARCH_MACOS_X64: ${{ env.ARCH_MACOS_X64 }} ARCH_MACOS_ARM64: ${{ env.ARCH_MACOS_ARM64 }} ARCH_LINUX_X64: ${{ env.ARCH_LINUX_X64 }} ARCH_WINDOWS_X64: ${{ env.ARCH_WINDOWS_X64 }} steps: - name: Compute outputs run: | echo "ASSET_EXTENSION=${{ env.ASSET_EXTENSION }}" >> $GITHUB_OUTPUT echo "OUT_NAME_FILE=${{ env.OUT_NAME_FILE }}" >> $GITHUB_OUTPUT echo "ARCH_MACOS_X64=${{ env.ARCH_MACOS_X64 }}" >> $GITHUB_OUTPUT echo "ARCH_MACOS_ARM64=${{ env.ARCH_MACOS_ARM64 }}" >> $GITHUB_OUTPUT echo "ARCH_LINUX_X64=${{ env.ARCH_LINUX_X64 }}" >> $GITHUB_OUTPUT echo "ARCH_WINDOWS_X64=${{ env.ARCH_WINDOWS_X64 }}" >> $GITHUB_OUTPUT build-gui-and-upload-assets: needs: ["publish", "compute"] env: ASSET_MIME: "application/zip" strategy: fail-fast: false matrix: #os: ["ubuntu-20.04", "windows-2019", "macos-11", "macos-13"] include: - os: "macos-11" TARGET: "macos-11" OS_ARCH: ${{needs.compute.outputs.ARCH_MACOS_X64}} CMD_BUILD: > brew install create-dmg && source $VENV && poetry run make gui-macos APP_NAME=${{needs.compute.outputs.OUT_NAME_FILE}} && cd dist && zip -r ${{needs.compute.outputs.OUT_NAME_FILE}}_${{needs.compute.outputs.ARCH_MACOS_X64}}${{needs.compute.outputs.ASSET_EXTENSION}} ${{needs.compute.outputs.OUT_NAME_FILE}}.dmg -x "*.DS_Store" && cd .. # - os: "macos-13-xlarge" # TARGET: "macos-13-xlarge M1" # CMD_BUILD: > # brew install create-dmg && # source $VENV && # poetry run make gui-macos APP_NAME=${{needs.compute.outputs.OUT_NAME_FILE}} && # cd dist && # zip -r ${{needs.compute.outputs.OUT_NAME_FILE}}_${{needs.compute.outputs.ARCH_MACOS_ARM64}}${{needs.compute.outputs.ASSET_EXTENSION}} ${{needs.compute.outputs.OUT_NAME_FILE}}.dmg -x "*.DS_Store" && # cd .. - os: "ubuntu-20.04" TARGET: "ubuntu-20.04" OS_ARCH: ${{needs.compute.outputs.ARCH_LINUX_X64}} CMD_BUILD: > source $VENV && poetry run make gui APP_NAME=${{needs.compute.outputs.OUT_NAME_FILE}} && cd dist && zip -r ${{needs.compute.outputs.OUT_NAME_FILE}}_${{needs.compute.outputs.ARCH_LINUX_X64}}${{needs.compute.outputs.ASSET_EXTENSION}} ${{needs.compute.outputs.OUT_NAME_FILE}} && cd .. - os: "windows-2019" TARGET: "windows-2019" OS_ARCH: ${{needs.compute.outputs.ARCH_WINDOWS_X64}} CMD_BUILD: > choco install zip make -y && source $VENV && poetry run make gui APP_NAME=${{needs.compute.outputs.OUT_NAME_FILE}} && cd dist && zip -r ${{needs.compute.outputs.OUT_NAME_FILE}}_${{needs.compute.outputs.ARCH_WINDOWS_X64}}${{needs.compute.outputs.ASSET_EXTENSION}} ${{needs.compute.outputs.OUT_NAME_FILE}}.exe && cd .. runs-on: ${{ matrix.os }} steps: - name: Check out uses: actions/checkout@v4 - name: Set up the environment uses: ./.github/actions/setup-poetry-env - name: Build with pyinstaller for ${{matrix.TARGET}} run: ${{matrix.CMD_BUILD}} - name: Load Release URL File from release job uses: actions/download-artifact@v4 with: name: ${{env.RELEASE_UPLOAD_URL}} - name: Get Release File Name & Upload URL id: get_release_info run: | VALUE=`cat ${{env.RELEASE_UPLOAD_URL}}/${{env.RELEASE_UPLOAD_URL}}.txt` echo "upload_url=$VALUE" >> $GITHUB_OUTPUT - name: Upload Release Asset # TODO: Switch to https://github.com/softprops/action-gh-release id: upload-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} with: upload_url: ${{steps.get_release_info.outputs.upload_url}} asset_path: ./dist/${{needs.compute.outputs.OUT_NAME_FILE}}_${{matrix.OS_ARCH}}${{needs.compute.outputs.ASSET_EXTENSION}} asset_name: ${{needs.compute.outputs.OUT_NAME_FILE}}_${{matrix.OS_ARCH}}${{needs.compute.outputs.ASSET_EXTENSION}} asset_content_type: ${{env.ASSET_MIME}}