name: Publish Release on: push: branches: [master, beta, nightly, python3] tags: [v*] jobs: build-windows: runs-on: windows-latest steps: - name: Checkout Code uses: actions/checkout@v2 - name: Set Release Version id: get_version shell: bash run: | if [[ $GITHUB_REF == refs/tags/* ]]; then VERSION_NSIS=${GITHUB_REF#refs/tags/v}.1 echo ::set-output name=VERSION_NSIS::${VERSION_NSIS/%-beta.1/.0} echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/v} echo ::set-output name=RELEASE_VERSION::${GITHUB_REF#refs/tags/} else echo ::set-output name=VERSION_NSIS::0.0.0.0 echo ::set-output name=VERSION::0.0.0 echo ::set-output name=RELEASE_VERSION::${GITHUB_SHA::7} fi echo $GITHUB_SHA > version.txt - name: Set Up Python uses: actions/setup-python@v2 with: python-version: 3.8 - name: Cache Dependencies id: cache_dependencies uses: actions/cache@v2 with: path: ~\AppData\Local\pip\Cache key: ${{ runner.os }}-pip-${{ hashFiles('package/requirements-windows.txt') }} restore-keys: ${{ runner.os }}-pip- - name: Install Dependencies run: | python -m pip install --upgrade pip pip install -r package/requirements-windows.txt - name: Build Package run: | pyinstaller -y ./package/Tautulli-windows.spec - name: Create Installer uses: joncloud/makensis-action@v1.2 with: script-file: ./package/Tautulli.nsi arguments: /DVERSION=${{ steps.get_version.outputs.VERSION_NSIS }} /DINSTALLER_NAME=..\Tautulli-windows-${{ steps.get_version.outputs.RELEASE_VERSION }}-x64.exe include-more-plugins: true include-custom-plugins-path: package/nsis-plugins - name: Upload Installer uses: actions/upload-artifact@v2 with: name: Tautulli-windows-installer path: Tautulli-windows-${{ steps.get_version.outputs.RELEASE_VERSION }}-x64.exe - name: Post Status to Discord uses: sarisia/actions-status-discord@v1 if: always() with: webhook: ${{ secrets.DISCORD_WEBHOOK }} status: ${{ job.status }} title: Build Windows Installer nofail: true build-macos: runs-on: macos-latest steps: - name: Checkout Code uses: actions/checkout@v2 - name: Set Release Version id: get_version shell: bash run: | if [[ $GITHUB_REF == refs/tags/* ]]; then echo ::set-env name=VERSION::${GITHUB_REF#refs/tags/v} echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/v} echo ::set-output name=RELEASE_VERSION::${GITHUB_REF#refs/tags/} else echo ::set-env name=VERSION::0.0.0 echo ::set-output name=VERSION::0.0.0 echo ::set-output name=RELEASE_VERSION::${GITHUB_SHA::7} fi echo $GITHUB_SHA > version.txt - name: Set Up Python uses: actions/setup-python@v2 with: python-version: 3.8 - name: Cache Dependencies id: cache_dependencies uses: actions/cache@v2 with: path: ~/Library/Caches/pip key: ${{ runner.os }}-pip-${{ hashFiles('package/requirements-macos.txt') }} restore-keys: ${{ runner.os }}-pip- - name: Install Dependencies run: | python -m pip install --upgrade pip pip install -r package/requirements-macos.txt - name: Build Package run: | pyinstaller -y ./package/Tautulli-macos.spec - name: Create Installer run: | sudo pkgbuild --install-location /Applications --version ${{ steps.get_version.outputs.VERSION }} --component ./dist/Tautulli.app --scripts ./package/macos-scripts Tautulli-macos-${{ steps.get_version.outputs.RELEASE_VERSION }}-x64.pkg - name: Upload Installer uses: actions/upload-artifact@v2 with: name: Tautulli-macos-installer path: Tautulli-macos-${{ steps.get_version.outputs.RELEASE_VERSION }}-x64.pkg - name: Post Status to Discord uses: sarisia/actions-status-discord@v1 if: always() with: webhook: ${{ secrets.DISCORD_WEBHOOK }} status: ${{ job.status }} title: Build MacOS Installer nofail: true release: needs: [build-windows, build-macos] if: startsWith(github.ref, 'refs/tags/') && always() runs-on: ubuntu-latest steps: - name: Get Build Job Status uses: technote-space/workflow-conclusion-action@v1 - name: Checkout Code uses: actions/checkout@v2 - name: Set Release Version id: get_version run: | echo ::set-output name=RELEASE_VERSION::${GITHUB_REF#refs/tags/} - name: Download Windows Installer if: env.WORKFLOW_CONCLUSION == 'success' uses: actions/download-artifact@v2 with: name: Tautulli-windows-installer - name: Download MacOS Installer if: env.WORKFLOW_CONCLUSION == 'success' uses: actions/download-artifact@v2 with: name: Tautulli-macos-installer - name: Get Changelog id: get_changelog run: echo ::set-output name=CHANGELOG::"$( sed -n '/^## /{p; :loop n; p; /^## /q; b loop}' CHANGELOG.md | sed '$d' | sed '$d' | sed '$d' | sed ':a;N;$!ba;s/\n/%0A/g' )" - name: Create Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ steps.get_version.outputs.RELEASE_VERSION }} release_name: Tautulli ${{ steps.get_version.outputs.RELEASE_VERSION }} body: | ## Changelog ##${{ steps.get_changelog.outputs.CHANGELOG }} draft: false prerelease: ${{ endsWith(steps.get_version.outputs.RELEASE_VERSION, '-beta') }} - name: Upload Windows Installer if: env.WORKFLOW_CONCLUSION == 'success' uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./Tautulli-windows-${{ steps.get_version.outputs.RELEASE_VERSION }}-x64.exe asset_name: Tautulli-windows-${{ steps.get_version.outputs.RELEASE_VERSION }}-x64.exe asset_content_type: application/vnd.microsoft.portable-executable - name: Upload MacOS Installer if: env.WORKFLOW_CONCLUSION == 'success' uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./Tautulli-macos-${{ steps.get_version.outputs.RELEASE_VERSION }}-x64.pkg asset_name: Tautulli-macos-${{ steps.get_version.outputs.RELEASE_VERSION }}-x64.pkg asset_content_type: application/vnd.apple.installer+xml