name: release-master permissions: contents: write on: # release: # types: [published] # branches: [master] workflow_dispatch: # or workflow_call inputs: asset_mime: description: "MIME Type" required: false default: "application/zip" out_name_file: description: "App file name" required: false default: "TIDAL-Downloader-NG" push: tags: - "v*.*.*" env: RELEASE_UPLOAD_URL: "release_upload_url" 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 build-gui-and-upload-assets: needs: publish 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" CMD_BUILD: > brew install create-dmg && source .venv/bin/activate && poetry run make gui-macos && cd dist && pwd && echo zip -r ${{inputs.out_name_file}}${{inputs.asset_extension}} ${{inputs.out_name_file}}.dmg -x "*.DS_Store" zip -r ${{inputs.out_name_file}}${{inputs.asset_extension}} ${{inputs.out_name_file}}.dmg -x "*.DS_Store" # - os: "windows-2019" # TARGET: "windows-2019" # CMD_BUILD: pyinstaller -F -w -n clipster -i resources/clipster.ico cli.py 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 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 ::set-output name=upload_url::$value - 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/${{inputs.out_name_file}}${{inputs.asset_extension}} asset_name: ${{inputs.out_name_file}}${{inputs.asset_extension}} asset_content_type: ${{env.ASSET_MIME}}