From 50eef1190ee6e760540a3a7e15c3b0a5fb51771b Mon Sep 17 00:00:00 2001 From: Mahor Date: Mon, 4 Jul 2022 14:06:30 +0000 Subject: [PATCH] Run workflow jobs toghether (#371) * Run scripts in parallel * Re enable deb package builds --- .github/workflows/build_push.yml | 163 ++++++++++++++++++++++++------- .github/workflows/publish.yml | 148 +++++++++++++++++++++++----- scripts/bundler.sh | 34 +++---- 3 files changed, 268 insertions(+), 77 deletions(-) diff --git a/.github/workflows/build_push.yml b/.github/workflows/build_push.yml index 7a6dfe43..368332a7 100644 --- a/.github/workflows/build_push.yml +++ b/.github/workflows/build_push.yml @@ -9,28 +9,26 @@ jobs: check_wrapper: name: Validate Gradle Wrapper runs-on: ubuntu-latest - steps: - name: Clone repo - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Validate Gradle Wrapper uses: gradle/wrapper-validation-action@v1 build: - name: Build artifacts and deploy preview + name: Build Jar needs: check_wrapper if: "!startsWith(github.event.head_commit.message, '[SKIP CI]')" runs-on: ubuntu-latest - steps: - name: Cancel previous runs - uses: styfle/cancel-workflow-action@0.9.0 + uses: styfle/cancel-workflow-action@0.10.0 with: access_token: ${{ github.token }} - name: Checkout master branch - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: ref: master path: master @@ -59,33 +57,129 @@ jobs: dependencies-cache-enabled: true configuration-cache-enabled: true - - name: Generate Tag Name - id: GenTagName - run: | - cd master/server/build - genTag=$(ls *.jar | sed -e's/Tachidesk-Server-\|.jar//g') - echo "$genTag" - echo "::set-output name=value::$genTag" - - - name: make bundle packages - run: | - cd master/scripts - ./bundler.sh -o ../../master/server/build/ windows-x86 - ./bundler.sh -o ../../master/server/build/ windows-x64 - ./bundler.sh -o ../../master/server/build/ linux-all - ./bundler.sh -o ../../master/server/build/ linux-x64 - ./bundler.sh -o ../../master/server/build/ debian-all - ./bundler.sh -o ../../master/server/build/ macOS-x64 - ./bundler.sh -o ../../master/server/build/ macOS-arm64 - - - name: Checkout preview branch - uses: actions/checkout@v2 + - name: Upload Jar + uses: actions/upload-artifact@v3 with: - repository: 'Suwayomi/Tachidesk-Server-preview' + name: jar + path: master/server/build/*.jar + if-no-files-found: error + + - name: Upload icons + uses: actions/upload-artifact@v3 + with: + name: icon + path: master/server/src/main/resources/icon + if-no-files-found: error + + - name: Tar scripts dir to maintain file permissions + run: tar -cvzf scripts.tar.gz -C master/ scripts/ + - name: Upload scripts.tar.gz + uses: actions/upload-artifact@v3 + with: + name: scripts + path: scripts.tar.gz + if-no-files-found: error + + bundle: + strategy: + fail-fast: false + matrix: + os: + - linux-x64 + - linux-all + - macOS-x64 + - macOS-arm64 + - debian-all + - windows-x64 + - windows-x86 + + name: Make ${{ matrix.os }} release + needs: build + runs-on: ubuntu-latest + steps: + - name: Download Jar + uses: actions/download-artifact@v3 + with: + name: jar + path: server/build + + - name: Download icons + uses: actions/download-artifact@v3 + with: + name: icon + path: server/src/main/resources/icon + + - name: Download scripts.tar.gz + uses: actions/download-artifact@v3 + with: + name: scripts + + - name: Make ${{ matrix.os }} release + run: | + mkdir upload + tar -xvpf scripts.tar.gz + scripts/bundler.sh -o upload/ ${{ matrix.os }} + + - name: Upload ${{ matrix.os }} release + uses: actions/upload-artifact@v3 + with: + name: ${{ matrix.os }} + path: upload/* + if-no-files-found: error + + release: + needs: bundle + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v3 + with: + name: jar + path: release + - uses: actions/download-artifact@v3 + with: + name: linux-x64 + path: release + - uses: actions/download-artifact@v3 + with: + name: linux-all + path: release + - uses: actions/download-artifact@v3 + with: + name: macOS-x64 + path: release + - uses: actions/download-artifact@v3 + with: + name: macOS-arm64 + path: release + - uses: actions/download-artifact@v3 + with: + name: debian-all + path: release + - uses: actions/download-artifact@v3 + with: + name: windows-x64 + path: release + - uses: actions/download-artifact@v3 + with: + name: windows-x86 + path: release + + - name: Checkout Preview branch + uses: actions/checkout@v3 + with: + repository: "Suwayomi/Tachidesk-Server-preview" ref: main path: preview token: ${{ secrets.DEPLOY_PREVIEW_TOKEN }} + - name: Generate Tag Name + id: GenTagName + run: | + cd release + genTag=$(ls *.jar | sed -e's/Tachidesk-Server-\|.jar//g') + echo "$genTag" + echo "::set-output name=value::$genTag" + - name: Create Tag run: | TAG="${{ steps.GenTagName.outputs.value }}" @@ -93,7 +187,8 @@ jobs: cd preview echo "{ \"latest\": \"$TAG\" }" > index.json git add index.json - git config --global user.email "github-actions[bot]@users.noreply.github.com" + git config --global user.email \ + "github-actions[bot]@users.noreply.github.com" git config --global user.name "github-actions[bot]" git commit -m "Updated to $TAG" git push origin main @@ -102,10 +197,10 @@ jobs: git push origin $TAG - name: Upload Preview Release - uses: ncipollo/release-action@v1 + uses: softprops/action-gh-release@v1 with: token: ${{ secrets.DEPLOY_PREVIEW_TOKEN }} - artifacts: "master/server/build/*.jar,master/server/build/*.msi,master/server/build/*.zip,master/server/build/*.tar.gz,master/server/build/*.deb" - owner: "Suwayomi" - repo: "Tachidesk-Server-preview" - tag: ${{ steps.GenTagName.outputs.value }} + repository: "Suwayomi/Tachidesk-Server-preview" + tag_name: ${{ steps.GenTagName.outputs.value }} + files: release/* + diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index bb651c87..668eccf3 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -10,27 +10,25 @@ jobs: check_wrapper: name: Validate Gradle Wrapper runs-on: ubuntu-latest - steps: - name: Clone repo - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Validate Gradle Wrapper uses: gradle/wrapper-validation-action@v1 - + build: - name: Build artifacts and release + name: Build Jar needs: check_wrapper runs-on: ubuntu-latest - steps: - name: Cancel previous runs - uses: styfle/cancel-workflow-action@0.9.0 + uses: styfle/cancel-workflow-action@0.10.0 with: access_token: ${{ github.token }} - name: Checkout ${{ github.ref }} - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: ref: ${{ github.ref }} path: master @@ -45,7 +43,8 @@ jobs: run: | cd master mkdir -p ~/.gradle - cp .github/runner-files/ci-gradle.properties ~/.gradle/gradle.properties + cp .github/runner-files/ci-gradle.properties \ + ~/.gradle/gradle.properties - name: Build and copy webUI, Build Jar uses: eskatos/gradle-command-action@v1 @@ -59,23 +58,120 @@ jobs: dependencies-cache-enabled: true configuration-cache-enabled: true - - name: Make bundle packages - run: | - cd master/scripts - ./bundler.sh -o ../../master/server/build/ windows-x86 - ./bundler.sh -o ../../master/server/build/ windows-x64 - ./bundler.sh -o ../../master/server/build/ linux-all - ./bundler.sh -o ../../master/server/build/ linux-x64 - ./bundler.sh -o ../../master/server/build/ debian-all - ./bundler.sh -o ../../master/server/build/ macOS-x64 - ./bundler.sh -o ../../master/server/build/ macOS-arm64 - - - name: Upload Release - uses: xresloader/upload-to-github-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.WINGET_PUBLISH_PAT }} + - name: Upload Jar + uses: actions/upload-artifact@v3 with: - file: "master/server/build/*.jar;master/server/build/*.msi;master/server/build/*.zip;master/server/build/*.tar.gz;master/server/build/*.deb" - tags: true + name: jar + path: master/server/build/*.jar + if-no-files-found: error + + - name: Upload icons + uses: actions/upload-artifact@v3 + with: + name: icon + path: master/server/src/main/resources/icon + if-no-files-found: error + + - name: Tar scripts dir to maintain file permissions + run: tar -cvzf scripts.tar.gz -C master/ scripts/ + - name: Upload scripts.tar.gz + uses: actions/upload-artifact@v3 + with: + name: scripts + path: scripts.tar.gz + if-no-files-found: error + + bundle: + strategy: + fail-fast: false + matrix: + os: [ + linux-x64, + linux-all, + macOS-x64, + macOS-arm64, + debian-all, + windows-x64, + windows-x86, + ] + name: Make ${{ matrix.os }} release + needs: build + runs-on: ubuntu-latest + steps: + - name: Download Jar + uses: actions/download-artifact@v3 + with: + name: jar + path: server/build + + - name: Download icons + uses: actions/download-artifact@v3 + with: + name: icon + path: server/src/main/resources/icon + + - name: Download scripts.tar.gz + uses: actions/download-artifact@v3 + with: + name: scripts + + - name: Make ${{ matrix.os }} release + run: | + mkdir upload/ + tar -xvpf scripts.tar.gz + scripts/bundler.sh -o upload/ ${{ matrix.os }} + + - name: Upload ${{ matrix.os }} files + uses: actions/upload-artifact@v3 + with: + name: ${{ matrix.os }} + path: upload/* + if-no-files-found: error + + release: + if: startsWith(github.ref, 'refs/tags/v') + needs: bundle + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v3 + with: + name: jar + path: release + - uses: actions/download-artifact@v3 + with: + name: linux-x64 + path: release + - uses: actions/download-artifact@v3 + with: + name: linux-all + path: release + - uses: actions/download-artifact@v3 + with: + name: macOS-x64 + path: release + - uses: actions/download-artifact@v3 + with: + name: macOS-arm64 + path: release + - uses: actions/download-artifact@v3 + with: + name: debian-all + path: release + - uses: actions/download-artifact@v3 + with: + name: windows-x64 + path: release + - uses: actions/download-artifact@v3 + with: + name: windows-x86 + path: release + + - name: Generate checksums + run: cd release && sha256sum * > Checksums.sha256 + + - name: Release + uses: softprops/action-gh-release@v1 + with: + token: ${{ secrets.WINGET_PUBLISH_PAT }} draft: true - verbose: true + files: release/* diff --git a/scripts/bundler.sh b/scripts/bundler.sh index 6aae501c..50baa5ce 100755 --- a/scripts/bundler.sh +++ b/scripts/bundler.sh @@ -26,7 +26,7 @@ main() { set -- "${POSITIONAL_ARGS[@]}" # restore positional parameters OS="$1" - jar="$(ls ../../master/server/build/*.jar | tail -n1)" + jar="$(ls server/build/*.jar | tail -n1)" release_name="$(echo "${jar%.*}" | sed 's/.jar//' | xargs basename)-$OS" release_version="$(tmp="${jar%-*}"; echo "${tmp##*-}" | tr -d v)" #local release_revision_number="$(tmp="${jar%.*}" && echo "${tmp##*-}" | tr -d r)" @@ -132,13 +132,13 @@ download_jre_and_electron() { make_linux_bundle() { cp "$jar" "$release_name/tachidesk-server.jar" - cp "resources/tachidesk-server-browser-launcher.sh" "$release_name/" - cp "resources/tachidesk-server-debug-launcher.sh" "$release_name/" - cp "resources/tachidesk-server-electron-launcher.sh" "$release_name/" - cp "resources/tachidesk-server.desktop" "$release_name/" - cp "../../master/server/src/main/resources/icon/faviconlogo.png" \ + cp "scripts/resources/tachidesk-server-browser-launcher.sh" "$release_name/" + cp "scripts/resources/tachidesk-server-debug-launcher.sh" "$release_name/" + cp "scripts/resources/tachidesk-server-electron-launcher.sh" "$release_name/" + cp "scripts/resources/tachidesk-server.desktop" "$release_name/" + cp "server/src/main/resources/icon/faviconlogo.png" \ "$release_name/tachidesk-server.png" - cp "resources/systemd"/* "$release_name/" + cp "scripts/resources/systemd"/* "$release_name/" release="$release_name.tar.gz" tar -I "gzip -9" -cvf "$release" "$release_name/" @@ -146,9 +146,9 @@ make_linux_bundle() { make_macos_bundle() { cp "$jar" "$release_name/Tachidesk.jar" - cp "resources/Tachidesk Browser Launcher.command" "$release_name/" - cp "resources/Tachidesk Debug Launcher.command" "$release_name/" - cp "resources/Tachidesk Electron Launcher.command" "$release_name/" + cp "scripts/resources/Tachidesk Browser Launcher.command" "$release_name/" + cp "scripts/resources/Tachidesk Debug Launcher.command" "$release_name/" + cp "scripts/resources/Tachidesk Electron Launcher.command" "$release_name/" release="$release_name.zip" zip -9 -r "$release" "$release_name/" @@ -158,7 +158,7 @@ make_macos_bundle() { # https://www.debian.org/doc/manuals/packaging-tutorial/packaging-tutorial.pdf make_deb_package() { make_linux_bundle "$release_name" "$jar" - cp -r "resources/deb/" "$release_name/debian/" + cp -r "scripts/resources/deb/" "$release_name/debian/" sed -i "s/\$pkgver/$release_version/" "$release_name/debian/changelog" sed -i "s/\$pkgrel/1/" "$release_name/debian/changelog" @@ -207,14 +207,14 @@ make_windows_bundle() { #curl -L "$rcedit_url" -o "$rcedit" #fi - local icon="../../master/server/src/main/resources/icon/faviconlogo.ico" + local icon="server/src/main/resources/icon/faviconlogo.ico" #WINEARCH=win32 wine "$rcedit" "$release_name/electron/electron.exe" \ # --set-icon "$icon" cp "$jar" "$release_name/Tachidesk.jar" - cp "resources/Tachidesk Browser Launcher.bat" "$release_name" - cp "resources/Tachidesk Debug Launcher.bat" "$release_name" - cp "resources/Tachidesk Electron Launcher.bat" "$release_name" + cp "scripts/resources/Tachidesk Browser Launcher.bat" "$release_name" + cp "scripts/resources/Tachidesk Debug Launcher.bat" "$release_name" + cp "scripts/resources/Tachidesk Electron Launcher.bat" "$release_name" release="$release_name.zip" zip -9 -r "$release" "$release_name" @@ -232,12 +232,12 @@ make_windows_package() { | wixl-heat --var var.SourceDir -p "$release_name/" \ --directory-ref electron --component-group electron >"$release_name/electron.wxs" - local icon="../../master/server/src/main/resources/icon/faviconlogo.ico" + local icon="server/src/main/resources/icon/faviconlogo.ico" local arch=${OS##*-} release="$release_name.msi" wixl -D ProductVersion="$release_version" -D SourceDir="$release_name" \ - -D Icon="$icon" --arch "$arch" "resources/msi/tachidesk-server-$arch.wxs" \ + -D Icon="$icon" --arch "$arch" "scripts/resources/msi/tachidesk-server-$arch.wxs" \ "$release_name/jre.wxs" "$release_name/electron.wxs" -o "$release" }