Run workflow jobs toghether (#371)

* Run scripts in parallel

* Re enable deb package builds
This commit is contained in:
Mahor
2022-07-04 14:06:30 +00:00
committed by GitHub
parent ed180121ff
commit 50eef1190e
3 changed files with 268 additions and 77 deletions

View File

@@ -9,28 +9,26 @@ jobs:
check_wrapper: check_wrapper:
name: Validate Gradle Wrapper name: Validate Gradle Wrapper
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Clone repo - name: Clone repo
uses: actions/checkout@v2 uses: actions/checkout@v3
- name: Validate Gradle Wrapper - name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1 uses: gradle/wrapper-validation-action@v1
build: build:
name: Build artifacts and deploy preview name: Build Jar
needs: check_wrapper needs: check_wrapper
if: "!startsWith(github.event.head_commit.message, '[SKIP CI]')" if: "!startsWith(github.event.head_commit.message, '[SKIP CI]')"
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Cancel previous runs - name: Cancel previous runs
uses: styfle/cancel-workflow-action@0.9.0 uses: styfle/cancel-workflow-action@0.10.0
with: with:
access_token: ${{ github.token }} access_token: ${{ github.token }}
- name: Checkout master branch - name: Checkout master branch
uses: actions/checkout@v2 uses: actions/checkout@v3
with: with:
ref: master ref: master
path: master path: master
@@ -59,33 +57,129 @@ jobs:
dependencies-cache-enabled: true dependencies-cache-enabled: true
configuration-cache-enabled: true configuration-cache-enabled: true
- name: Generate Tag Name - name: Upload Jar
id: GenTagName uses: actions/upload-artifact@v3
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
with: 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 ref: main
path: preview path: preview
token: ${{ secrets.DEPLOY_PREVIEW_TOKEN }} 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 - name: Create Tag
run: | run: |
TAG="${{ steps.GenTagName.outputs.value }}" TAG="${{ steps.GenTagName.outputs.value }}"
@@ -93,7 +187,8 @@ jobs:
cd preview cd preview
echo "{ \"latest\": \"$TAG\" }" > index.json echo "{ \"latest\": \"$TAG\" }" > index.json
git add 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 config --global user.name "github-actions[bot]"
git commit -m "Updated to $TAG" git commit -m "Updated to $TAG"
git push origin main git push origin main
@@ -102,10 +197,10 @@ jobs:
git push origin $TAG git push origin $TAG
- name: Upload Preview Release - name: Upload Preview Release
uses: ncipollo/release-action@v1 uses: softprops/action-gh-release@v1
with: with:
token: ${{ secrets.DEPLOY_PREVIEW_TOKEN }} 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" repository: "Suwayomi/Tachidesk-Server-preview"
owner: "Suwayomi" tag_name: ${{ steps.GenTagName.outputs.value }}
repo: "Tachidesk-Server-preview" files: release/*
tag: ${{ steps.GenTagName.outputs.value }}

View File

@@ -10,27 +10,25 @@ jobs:
check_wrapper: check_wrapper:
name: Validate Gradle Wrapper name: Validate Gradle Wrapper
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Clone repo - name: Clone repo
uses: actions/checkout@v2 uses: actions/checkout@v3
- name: Validate Gradle Wrapper - name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1 uses: gradle/wrapper-validation-action@v1
build: build:
name: Build artifacts and release name: Build Jar
needs: check_wrapper needs: check_wrapper
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Cancel previous runs - name: Cancel previous runs
uses: styfle/cancel-workflow-action@0.9.0 uses: styfle/cancel-workflow-action@0.10.0
with: with:
access_token: ${{ github.token }} access_token: ${{ github.token }}
- name: Checkout ${{ github.ref }} - name: Checkout ${{ github.ref }}
uses: actions/checkout@v2 uses: actions/checkout@v3
with: with:
ref: ${{ github.ref }} ref: ${{ github.ref }}
path: master path: master
@@ -45,7 +43,8 @@ jobs:
run: | run: |
cd master cd master
mkdir -p ~/.gradle 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 - name: Build and copy webUI, Build Jar
uses: eskatos/gradle-command-action@v1 uses: eskatos/gradle-command-action@v1
@@ -59,23 +58,120 @@ jobs:
dependencies-cache-enabled: true dependencies-cache-enabled: true
configuration-cache-enabled: true configuration-cache-enabled: true
- name: Make bundle packages - name: Upload Jar
run: | uses: actions/upload-artifact@v3
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 }}
with: with:
file: "master/server/build/*.jar;master/server/build/*.msi;master/server/build/*.zip;master/server/build/*.tar.gz;master/server/build/*.deb" name: jar
tags: true 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 draft: true
verbose: true files: release/*

View File

@@ -26,7 +26,7 @@ main() {
set -- "${POSITIONAL_ARGS[@]}" # restore positional parameters set -- "${POSITIONAL_ARGS[@]}" # restore positional parameters
OS="$1" 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_name="$(echo "${jar%.*}" | sed 's/.jar//' | xargs basename)-$OS"
release_version="$(tmp="${jar%-*}"; echo "${tmp##*-}" | tr -d v)" release_version="$(tmp="${jar%-*}"; echo "${tmp##*-}" | tr -d v)"
#local release_revision_number="$(tmp="${jar%.*}" && echo "${tmp##*-}" | tr -d r)" #local release_revision_number="$(tmp="${jar%.*}" && echo "${tmp##*-}" | tr -d r)"
@@ -132,13 +132,13 @@ download_jre_and_electron() {
make_linux_bundle() { make_linux_bundle() {
cp "$jar" "$release_name/tachidesk-server.jar" cp "$jar" "$release_name/tachidesk-server.jar"
cp "resources/tachidesk-server-browser-launcher.sh" "$release_name/" cp "scripts/resources/tachidesk-server-browser-launcher.sh" "$release_name/"
cp "resources/tachidesk-server-debug-launcher.sh" "$release_name/" cp "scripts/resources/tachidesk-server-debug-launcher.sh" "$release_name/"
cp "resources/tachidesk-server-electron-launcher.sh" "$release_name/" cp "scripts/resources/tachidesk-server-electron-launcher.sh" "$release_name/"
cp "resources/tachidesk-server.desktop" "$release_name/" cp "scripts/resources/tachidesk-server.desktop" "$release_name/"
cp "../../master/server/src/main/resources/icon/faviconlogo.png" \ cp "server/src/main/resources/icon/faviconlogo.png" \
"$release_name/tachidesk-server.png" "$release_name/tachidesk-server.png"
cp "resources/systemd"/* "$release_name/" cp "scripts/resources/systemd"/* "$release_name/"
release="$release_name.tar.gz" release="$release_name.tar.gz"
tar -I "gzip -9" -cvf "$release" "$release_name/" tar -I "gzip -9" -cvf "$release" "$release_name/"
@@ -146,9 +146,9 @@ make_linux_bundle() {
make_macos_bundle() { make_macos_bundle() {
cp "$jar" "$release_name/Tachidesk.jar" cp "$jar" "$release_name/Tachidesk.jar"
cp "resources/Tachidesk Browser Launcher.command" "$release_name/" cp "scripts/resources/Tachidesk Browser Launcher.command" "$release_name/"
cp "resources/Tachidesk Debug Launcher.command" "$release_name/" cp "scripts/resources/Tachidesk Debug Launcher.command" "$release_name/"
cp "resources/Tachidesk Electron Launcher.command" "$release_name/" cp "scripts/resources/Tachidesk Electron Launcher.command" "$release_name/"
release="$release_name.zip" release="$release_name.zip"
zip -9 -r "$release" "$release_name/" zip -9 -r "$release" "$release_name/"
@@ -158,7 +158,7 @@ make_macos_bundle() {
# https://www.debian.org/doc/manuals/packaging-tutorial/packaging-tutorial.pdf # https://www.debian.org/doc/manuals/packaging-tutorial/packaging-tutorial.pdf
make_deb_package() { make_deb_package() {
make_linux_bundle "$release_name" "$jar" 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/\$pkgver/$release_version/" "$release_name/debian/changelog"
sed -i "s/\$pkgrel/1/" "$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" #curl -L "$rcedit_url" -o "$rcedit"
#fi #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" \ #WINEARCH=win32 wine "$rcedit" "$release_name/electron/electron.exe" \
# --set-icon "$icon" # --set-icon "$icon"
cp "$jar" "$release_name/Tachidesk.jar" cp "$jar" "$release_name/Tachidesk.jar"
cp "resources/Tachidesk Browser Launcher.bat" "$release_name" cp "scripts/resources/Tachidesk Browser Launcher.bat" "$release_name"
cp "resources/Tachidesk Debug Launcher.bat" "$release_name" cp "scripts/resources/Tachidesk Debug Launcher.bat" "$release_name"
cp "resources/Tachidesk Electron Launcher.bat" "$release_name" cp "scripts/resources/Tachidesk Electron Launcher.bat" "$release_name"
release="$release_name.zip" release="$release_name.zip"
zip -9 -r "$release" "$release_name" zip -9 -r "$release" "$release_name"
@@ -232,12 +232,12 @@ make_windows_package() {
| wixl-heat --var var.SourceDir -p "$release_name/" \ | wixl-heat --var var.SourceDir -p "$release_name/" \
--directory-ref electron --component-group electron >"$release_name/electron.wxs" --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##*-} local arch=${OS##*-}
release="$release_name.msi" release="$release_name.msi"
wixl -D ProductVersion="$release_version" -D SourceDir="$release_name" \ 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" "$release_name/jre.wxs" "$release_name/electron.wxs" -o "$release"
} }