diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index ba7834f5..00000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,258 +0,0 @@ -name: Release -on: - push: - tags: - - 'v*' - -jobs: - build-macos: - runs-on: macos-11 - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Setup Python - uses: actions/setup-python@v4 - with: - python-version: '3.10' - - - name: Build docs to /help - run: | - python3 -m pip install --upgrade pip - python3 -m pip install --upgrade wheel - python3 -m pip install mkdocs-material - mkdocs build -d help - - - name: Install PyOxidizer - run: python3 -m pip install pyoxidizer==0.22.0 - - - name: Download ffmpeg - uses: carlosperate/download-file-action@v2 - id: download_ffmpeg - with: - file-url: 'https://evermeet.cx/ffmpeg/getrelease/ffmpeg/7z' - file-name: 'ffmpeg-macos.7z' - location: '.' - - - name: Process ffmpeg - run: | - cd $GITHUB_WORKSPACE - 7z e ffmpeg-macos.7z -obin "ffmpeg" - - - name: Build Hydrus - run: | - cd $GITHUB_WORKSPACE - cp static/build_files/macos/pyoxidizer.bzl pyoxidizer.bzl - cp static/build_files/macos/requirements.txt requirements.txt - basename $(rustc --print sysroot) | sed -e "s/^stable-//" > triple.txt - pyoxidizer build --release - cd build/$(head -n 1 triple.txt)/release - mkdir -p "Hydrus Network.app/Contents/MacOS" - mkdir -p "Hydrus Network.app/Contents/Resources" - mkdir -p "Hydrus Network.app/Contents/Frameworks" - mv install/static/icon.icns "Hydrus Network.app/Contents/Resources/icon.icns" - cp install/static/build_files/macos/Info.plist "Hydrus Network.app/Contents/Info.plist" - cp install/static/build_files/macos/ReadMeFirst.rtf ./ReadMeFirst.rtf - cp install/static/build_files/macos/running_from_app "install/running_from_app" - ln -s /Applications ./Applications - mv install/* "Hydrus Network.app/Contents/MacOS/" - rm -rf install - - - name: Build DMG - run: | - cd $GITHUB_WORKSPACE - temp_dmg="$(mktemp).dmg" - hdiutil create "$temp_dmg" -ov -volname "HydrusNetwork" -fs HFS+ -format UDZO -srcfolder "$GITHUB_WORKSPACE/build/$(head -n 1 triple.txt)/release" - mv "$temp_dmg" HydrusNetwork.dmg - - - name: Upload a Build Artifact - uses: actions/upload-artifact@v3 - with: - name: MacOS-DMG - path: HydrusNetwork.dmg - if-no-files-found: error - retention-days: 2 - - build-ubuntu: - runs-on: ubuntu-20.04 - steps: - - - name: Checkout - uses: actions/checkout@v3 - with: - path: hydrus - - - name: Setup Python - uses: actions/setup-python@v4 - with: - python-version: '3.10' - architecture: x64 - - - name: APT Install - run: | - sudo apt-get update - sudo apt-get install -y libmpv1 - - - name: Pip Install - run: python3 -m pip install -r hydrus/static/build_files/linux/requirements.txt - - - name: Build docs to /help - run: mkdocs build -d help - working-directory: hydrus - - - name: Build Hydrus - run: | - cp hydrus/static/build_files/linux/hydrus_client.spec hydrus_client.spec - cp hydrus/static/build_files/linux/hydrus_server.spec hydrus_server.spec - pyinstaller hydrus_server.spec - pyinstaller hydrus_client.spec - - - name: Remove Chonk - run: | - find dist/hydrus_client/ -type f -name "*.pyc" -delete - while read line; do find dist/hydrus_client/ -type f -name "${line}" -delete ; done < hydrus/static/build_files/linux/files_to_delete.txt - - - name: Remove Surplus File - run: | - rm -f dist/hydrus_client/libxkbcommon.so* - - - name: Set Permissions - run: | - sudo chown --recursive 1000:1000 dist/hydrus_client - sudo find dist/hydrus_client -type d -exec chmod 0755 {} \; - sudo chmod +x dist/hydrus_client/hydrus_client dist/hydrus_client/hydrus_server dist/hydrus_client/bin/swfrender_linux - - - name: Compress Client - run: | - mv dist/hydrus_client "dist/Hydrus Network" - tar --zstd -cvf Ubuntu-Extract.tar.zst -C dist "Hydrus Network" - - - name: Upload a Build Artifact - uses: actions/upload-artifact@v3 - with: - name: Ubuntu-Extract - path: Ubuntu-Extract.tar.zst - if-no-files-found: error - retention-days: 2 - - build-windows: - runs-on: windows-2019 - steps: - - - name: Checkout - uses: actions/checkout@v3 - with: - path: hydrus - - - name: Setup Python - uses: actions/setup-python@v4 - with: - python-version: '3.10' - architecture: x64 - - - name: Pip Install - run: python3 -m pip install -r hydrus/static/build_files/windows/requirements.txt - - - name: Build docs to /help - run: mkdocs build -d help - working-directory: hydrus - - - name: Download mpv-dev - uses: carlosperate/download-file-action@v2 - id: download_mpv - with: - file-url: 'https://sourceforge.net/projects/mpv-player-windows/files/libmpv/mpv-dev-x86_64-20230212-git-a40958c.7z' - file-name: 'mpv-dev-x86_64.7z' - location: '.' - - - name: Process mpv-dev - run: | - 7z x mpv-dev-x86_64.7z -ompv - move mpv\libmpv-2.dll hydrus\mpv-2.dll - - - name: Download ffmpeg - uses: carlosperate/download-file-action@v2 - id: download_ffmpeg - with: - file-url: 'https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z' - file-name: 'ffmpeg-release-full.7z' - location: '.' - - - name: Process ffmpeg - run: | - 7z e ffmpeg-release-full.7z -ohydrus/bin "**/bin/ffmpeg.exe" - - - name: Build Hydrus - run: | - move hydrus\static\build_files\windows\sqlite3.dll hydrus\ - move hydrus\static\build_files\windows\sqlite3.exe hydrus\db - move hydrus\static\build_files\windows\file_version_info_maker.py file_version_info_maker.py - python file_version_info_maker.py ${{ github.ref_name }} - move hydrus\static\build_files\windows\hydrus_client.spec hydrus_client.spec - move hydrus\static\build_files\windows\hydrus_server.spec hydrus_server.spec - pyinstaller hydrus_server.spec - pyinstaller hydrus_client.spec - move dist\hydrus_client "dist\Hydrus Network" - - - # yo pretty sure we'll need to install this manually once we are on windows server 2022 - # https://github.com/actions/virtual-environments/issues/4856 - name: InnoSetup - run: | - move hydrus\static\build_files\windows\InnoSetup.iss InnoSetup.iss - ISCC.exe InnoSetup.iss /DVersion=${{ github.ref_name }} - - - name: Compress Client - run: | - cd .\dist - 7z.exe a -tzip -mm=Deflate -mx=5 ..\Windows-Extract.zip 'Hydrus Network' - cd .. - - - name: Upload a Build Artifact - uses: actions/upload-artifact@v3 - with: - name: Windows-Install - path: dist\HydrusInstaller.exe - if-no-files-found: error - retention-days: 2 - - - name: Upload a Build Artifact - uses: actions/upload-artifact@v3 - with: - name: Windows-Extract - path: Windows-Extract.zip - if-no-files-found: error - retention-days: 2 - - create-release: - name: Upload to Release - runs-on: ubuntu-20.04 - needs: [build-windows, build-ubuntu, build-macos] - steps: - - - name: Get All Artifacts - uses: actions/download-artifact@v3 - - - name: Extract Version Metadata - id: meta - run: | - echo "version=${GITHUB_REF##*/}" >> $GITHUB_ENV - echo "version_short=${GITHUB_REF##*/v}" >> $GITHUB_ENV - - - name: Rename Files - run: | - mkdir ubuntu windows - mv Windows-Install/HydrusInstaller.exe Hydrus.Network.${{ env.version_short }}.-.Windows.-.Installer.exe - mv Windows-Extract/Windows-Extract.zip Hydrus.Network.${{ env.version_short }}.-.Windows.-.Extract.only.zip - mv Ubuntu-Extract/Ubuntu-Extract.tar.zst Hydrus.Network.${{ env.version_short }}.-.Linux.-.Executable.tar.zst - mv MacOS-DMG/HydrusNetwork.dmg Hydrus.Network.${{ env.version_short }}.-.macOS.-.App.dmg - - - name: Upload Files - uses: softprops/action-gh-release@v1 - if: startsWith(github.ref, 'refs/tags/') - with: - files: | - Hydrus.Network.${{ env.version_short }}.-.Windows.-.Installer.exe - Hydrus.Network.${{ env.version_short }}.-.Windows.-.Extract.only.zip - Hydrus.Network.${{ env.version_short }}.-.Linux.-.Executable.tar.zst - Hydrus.Network.${{ env.version_short }}.-.macOS.-.App.dmg diff --git a/.github/workflows/release_linux.yml b/.github/workflows/release_linux.yml new file mode 100644 index 00000000..37e73110 --- /dev/null +++ b/.github/workflows/release_linux.yml @@ -0,0 +1,95 @@ +name: Release +on: + push: + tags: + - 'v*' + +jobs: + build-ubuntu: + runs-on: ubuntu-20.04 + steps: + - + name: Checkout + uses: actions/checkout@v3 + with: + path: hydrus + - + name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + architecture: x64 + - + name: APT Install + run: | + sudo apt-get update + sudo apt-get install -y libmpv1 + - + name: Pip Install + run: python3 -m pip install -r hydrus/static/build_files/linux/requirements.txt + - + name: Build docs to /help + run: mkdocs build -d help + working-directory: hydrus + - + name: Build Hydrus + run: | + cp hydrus/static/build_files/linux/hydrus_client.spec hydrus_client.spec + cp hydrus/static/build_files/linux/hydrus_server.spec hydrus_server.spec + pyinstaller hydrus_server.spec + pyinstaller hydrus_client.spec + - + name: Remove Chonk + run: | + find dist/hydrus_client/ -type f -name "*.pyc" -delete + while read line; do find dist/hydrus_client/ -type f -name "${line}" -delete ; done < hydrus/static/build_files/linux/files_to_delete.txt + - + name: Remove Surplus File + run: | + rm -f dist/hydrus_client/libxkbcommon.so* + - + name: Set Permissions + run: | + sudo chown --recursive 1000:1000 dist/hydrus_client + sudo find dist/hydrus_client -type d -exec chmod 0755 {} \; + sudo chmod +x dist/hydrus_client/hydrus_client dist/hydrus_client/hydrus_server dist/hydrus_client/bin/swfrender_linux + - + name: Compress Client + run: | + mv dist/hydrus_client "dist/Hydrus Network" + tar --zstd -cvf Ubuntu-Extract.tar.zst -C dist "Hydrus Network" + - + name: Upload a Build Artifact + uses: actions/upload-artifact@v3 + with: + name: Ubuntu-Extract + path: Ubuntu-Extract.tar.zst + if-no-files-found: error + retention-days: 2 + + create-release: + name: Upload to Release + runs-on: ubuntu-20.04 + needs: [build-ubuntu] + steps: + - + name: Get All Artifacts + uses: actions/download-artifact@v3 + - + name: Extract Version Metadata + id: meta + run: | + echo "version=${GITHUB_REF##*/}" >> $GITHUB_ENV + echo "version_short=${GITHUB_REF##*/v}" >> $GITHUB_ENV + - + name: Rename Files + run: | + mkdir ubuntu + mv Ubuntu-Extract/Ubuntu-Extract.tar.zst Hydrus.Network.${{ env.version_short }}.-.Linux.-.Executable.tar.zst + - + name: Upload Files + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: | + Hydrus.Network.${{ env.version_short }}.-.Linux.-.Executable.tar.zst diff --git a/.github/workflows/release_macos.yml b/.github/workflows/release_macos.yml new file mode 100644 index 00000000..4f1f8f75 --- /dev/null +++ b/.github/workflows/release_macos.yml @@ -0,0 +1,101 @@ +name: Release +on: + push: + tags: + - 'v*' + +jobs: + build-macos: + runs-on: macos-11 + steps: + - + name: Checkout + uses: actions/checkout@v3 + - + name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + - + name: Build docs to /help + run: | + python3 -m pip install --upgrade pip + python3 -m pip install --upgrade wheel + python3 -m pip install mkdocs-material + mkdocs build -d help + - + name: Install PyOxidizer + run: python3 -m pip install pyoxidizer==0.22.0 + - + name: Download ffmpeg + uses: carlosperate/download-file-action@v2 + id: download_ffmpeg + with: + file-url: 'https://evermeet.cx/ffmpeg/getrelease/ffmpeg/7z' + file-name: 'ffmpeg-macos.7z' + location: '.' + - + name: Process ffmpeg + run: | + cd $GITHUB_WORKSPACE + 7z e ffmpeg-macos.7z -obin "ffmpeg" + - + name: Build Hydrus + run: | + cd $GITHUB_WORKSPACE + cp static/build_files/macos/pyoxidizer.bzl pyoxidizer.bzl + cp static/build_files/macos/requirements.txt requirements.txt + basename $(rustc --print sysroot) | sed -e "s/^stable-//" > triple.txt + pyoxidizer build --release + cd build/$(head -n 1 triple.txt)/release + mkdir -p "Hydrus Network.app/Contents/MacOS" + mkdir -p "Hydrus Network.app/Contents/Resources" + mkdir -p "Hydrus Network.app/Contents/Frameworks" + mv install/static/icon.icns "Hydrus Network.app/Contents/Resources/icon.icns" + cp install/static/build_files/macos/Info.plist "Hydrus Network.app/Contents/Info.plist" + cp install/static/build_files/macos/ReadMeFirst.rtf ./ReadMeFirst.rtf + cp install/static/build_files/macos/running_from_app "install/running_from_app" + ln -s /Applications ./Applications + mv install/* "Hydrus Network.app/Contents/MacOS/" + rm -rf install + - + name: Build DMG + run: | + cd $GITHUB_WORKSPACE + temp_dmg="$(mktemp).dmg" + hdiutil create "$temp_dmg" -ov -volname "HydrusNetwork" -fs HFS+ -format UDZO -srcfolder "$GITHUB_WORKSPACE/build/$(head -n 1 triple.txt)/release" + mv "$temp_dmg" HydrusNetwork.dmg + - + name: Upload a Build Artifact + uses: actions/upload-artifact@v3 + with: + name: MacOS-DMG + path: HydrusNetwork.dmg + if-no-files-found: error + retention-days: 2 + + create-release: + name: Upload to Release + runs-on: ubuntu-20.04 + needs: [build-macos] + steps: + - + name: Get Artifacts + uses: actions/download-artifact@v3 + - + name: Extract Version Metadata + id: meta + run: | + echo "version=${GITHUB_REF##*/}" >> $GITHUB_ENV + echo "version_short=${GITHUB_REF##*/v}" >> $GITHUB_ENV + - + name: Rename Files + run: | + mv MacOS-DMG/HydrusNetwork.dmg Hydrus.Network.${{ env.version_short }}.-.macOS.-.App.dmg + - + name: Upload Files + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: | + Hydrus.Network.${{ env.version_short }}.-.macOS.-.App.dmg diff --git a/.github/workflows/release_win.yml b/.github/workflows/release_win.yml new file mode 100644 index 00000000..3fbafc3b --- /dev/null +++ b/.github/workflows/release_win.yml @@ -0,0 +1,123 @@ +name: Release +on: + push: + tags: + - 'v*' + +jobs: + build-windows: + runs-on: windows-2019 + steps: + - + name: Checkout + uses: actions/checkout@v3 + with: + path: hydrus + - + name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + architecture: x64 + - + name: Pip Install + run: python3 -m pip install -r hydrus/static/build_files/windows/requirements.txt + - + name: Build docs to /help + run: mkdocs build -d help + working-directory: hydrus + - + name: Download mpv-dev + uses: carlosperate/download-file-action@v2 + id: download_mpv + with: + file-url: 'https://sourceforge.net/projects/mpv-player-windows/files/libmpv/mpv-dev-x86_64-20230212-git-a40958c.7z' + file-name: 'mpv-dev-x86_64.7z' + location: '.' + - + name: Process mpv-dev + run: | + 7z x mpv-dev-x86_64.7z -ompv + move mpv\libmpv-2.dll hydrus\mpv-2.dll + - + name: Download ffmpeg + uses: carlosperate/download-file-action@v2 + id: download_ffmpeg + with: + file-url: 'https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z' + file-name: 'ffmpeg-release-full.7z' + location: '.' + - + name: Process ffmpeg + run: | + 7z e ffmpeg-release-full.7z -ohydrus/bin "**/bin/ffmpeg.exe" + - + name: Build Hydrus + run: | + move hydrus\static\build_files\windows\sqlite3.dll hydrus\ + move hydrus\static\build_files\windows\sqlite3.exe hydrus\db + move hydrus\static\build_files\windows\file_version_info_maker.py file_version_info_maker.py + python file_version_info_maker.py ${{ github.ref_name }} + move hydrus\static\build_files\windows\hydrus_client.spec hydrus_client.spec + move hydrus\static\build_files\windows\hydrus_server.spec hydrus_server.spec + pyinstaller hydrus_server.spec + pyinstaller hydrus_client.spec + move dist\hydrus_client "dist\Hydrus Network" + - + # yo pretty sure we'll need to install this manually once we are on windows server 2022 + # https://github.com/actions/virtual-environments/issues/4856 + name: InnoSetup + run: | + move hydrus\static\build_files\windows\InnoSetup.iss InnoSetup.iss + ISCC.exe InnoSetup.iss /DVersion=${{ github.ref_name }} + - + name: Compress Client + run: | + cd .\dist + 7z.exe a -tzip -mm=Deflate -mx=5 ..\Windows-Extract.zip 'Hydrus Network' + cd .. + - + name: Upload a Build Artifact + uses: actions/upload-artifact@v3 + with: + name: Windows-Install + path: dist\HydrusInstaller.exe + if-no-files-found: error + retention-days: 2 + - + name: Upload a Build Artifact + uses: actions/upload-artifact@v3 + with: + name: Windows-Extract + path: Windows-Extract.zip + if-no-files-found: error + retention-days: 2 + + create-release: + name: Upload to Release + runs-on: ubuntu-20.04 + needs: [build-windows] + steps: + - + name: Get Artifacts + uses: actions/download-artifact@v3 + - + name: Extract Version Metadata + id: meta + run: | + echo "version=${GITHUB_REF##*/}" >> $GITHUB_ENV + echo "version_short=${GITHUB_REF##*/v}" >> $GITHUB_ENV + - + name: Rename Files + run: | + mkdir windows + mv Windows-Install/HydrusInstaller.exe Hydrus.Network.${{ env.version_short }}.-.Windows.-.Installer.exe + mv Windows-Extract/Windows-Extract.zip Hydrus.Network.${{ env.version_short }}.-.Windows.-.Extract.only.zip + - + name: Upload Files + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: | + Hydrus.Network.${{ env.version_short }}.-.Windows.-.Installer.exe + Hydrus.Network.${{ env.version_short }}.-.Windows.-.Extract.only.zip