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_LINUX_X64: "linux-x64" ARCH_WINDOWS_X64: "windows-x64" jobs: publish: runs-on: ubuntu-latest steps: - name: Check out uses: actions/checkout@v3 - 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@v1 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@v3 - name: Install Poetry uses: snok/install-poetry@v1 with: virtualenvs-create: true virtualenvs-in-project: true installer-parallel: true - name: Load cached venv id: cached-poetry-dependencies uses: actions/cache@v3 with: path: .venv key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }} - name: Install dependencies run: poetry install --no-interaction --with docs - name: Deploy documentation run: poetry run mkdocs gh-deploy --force compute: # Workaround to be able to use variables in matrix. 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_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_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 && 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 .. # TODO: Use M1 runner. # - os: "macos-latest-xlarge" # TARGET: "macos-latest-xlarge" # CMD_BUILD: > # brew install create-dmg && # source .venv/bin/activate && # poetry run make gui-macos && # cd dist && # zip -r ${{needs.compute.outputs.OUT_NAME_FILE}}${{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 && 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 feature enable -n=allowGlobalConfirmation choco install zip choco install make source $VENV && C:\Users\runneradmin\.local\bin\poetry run make gui && 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@v3 - name: Set up python uses: actions/setup-python@v4 with: python-version: "3.11" # architecture: "x64" - name: Install Poetry uses: snok/install-poetry@v1 with: virtualenvs-create: true virtualenvs-in-project: true installer-parallel: true - name: Load cached venv id: cached-poetry-dependencies uses: actions/cache@v3 with: path: .venv key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }} - name: Install dependencies NOT Windows run: poetry install --no-interaction --all-extras --with dev - name: Build with pyinstaller for ${{matrix.TARGET}} run: ${{matrix.CMD_BUILD}} - name: Load Release URL File from release job uses: actions/download-artifact@v1 with: name: ${{env.RELEASE_UPLOAD_URL}} - name: Get Release File Name & Upload URL id: get_release_info shell: bash run: | VALUE=`cat ${{env.RELEASE_UPLOAD_URL}}/${{env.RELEASE_UPLOAD_URL}}.txt` echo "upload_url=$VALUE" >> $GITHUB_OUTPUT - name: Upload Release Asset 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}}