From abd2ed2ba177bcabc70c47e8d5cdb0c299af87f0 Mon Sep 17 00:00:00 2001 From: AkiraFukushima Date: Mon, 3 Jan 2022 23:15:59 +0900 Subject: [PATCH] Build release packages in GitHub Actions --- .github/workflows/release.yml | 88 +++++++++++++++++++++++++++++++++++ Makefile | 25 ++++------ build/notarize.js | 4 +- electron-builder.json | 13 +----- package.json | 8 ++-- 5 files changed, 106 insertions(+), 32 deletions(-) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..4132c579 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,88 @@ +name: Release + +on: + pull_request: + release: + types: [published] + +jobs: + release-linux: + name: Release for Linux + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: '14' + cache: yarn + - name: Build + run: | + make install + make clean + make build + - name: Package + env: + # VERSION: ${{ github.event.release.name }} + VERSION: 4.5.0 + run: | + make -e linux + + release-windows: + name: Release for Windows + + runs-on: windows-latest + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: '14' + cache: yarn + - name: Build + run: | + make install + make clean + make build + - name: Package + env: + # VERSION: ${{ github.event.release.name }} + VERSION: 4.5.0 + run: | + make -e win32 + make -e win64 + + release-darwin: + name: Release for MacOS + + runs-on: macos-11 + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: '14' + cache: yarn + - name: Apple Codesigning + uses: apple-actions/import-codesign-certs@v1 + with: + p12-file-base64: ${{ secrets.CERTIFICATES_P12 }} + p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }} + - name: Build + run: | + make install + make clean + make build + - name: Package + env: + # VERSION: ${{ github.event.release.name }} + VERSION: 4.5.0 + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} + ASC_PROVIDER: ${{ secrets.ASC_PROVIDER }} + TEAM_ID: ${{ secrets.ASC_PROVIDER }} + run: | + make -e mac diff --git a/Makefile b/Makefile index d856e5c1..2ab57e48 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ mac: mv build/Whalebird-${VERSION}-mac-x64.dmg build/Whalebird-${VERSION}-darwin-x64.dmg mv build/Whalebird-${VERSION}-mac-arm64.dmg build/Whalebird-${VERSION}-darwin-arm64.dmg mv build/Whalebird-${VERSION}-mac-universal.dmg build/Whalebird-${VERSION}-darwin-universal.dmg - cd build; shasum -a 256 Whalebird-${VERSION}-darwin-universal.dmg >> sha256sum.txt + cd build; sha256sum Whalebird-${VERSION}-darwin-universal.dmg | awk '{ print $1 }' > Whalebird-${VERSION}-darwin-universal.dmg.shasum mas: yarn run build:clean @@ -26,29 +26,24 @@ linux: yarn run package:linux mv build/Whalebird-${VERSION}-linux-amd64.deb build/Whalebird-${VERSION}-linux-x64.deb mv build/Whalebird-${VERSION}-linux-x86_64.rpm build/Whalebird-${VERSION}-linux-x64.rpm - mv build/Whalebird-${VERSION}-linux-i386.deb build/Whalebird-${VERSION}-linux-ia32.deb - mv build/Whalebird-${VERSION}-linux-i686.rpm build/Whalebird-${VERSION}-linux-ia32.rpm mv build/Whalebird-${VERSION}-linux-x86_64.AppImage build/Whalebird-${VERSION}-linux-x64.AppImage - cd build; shasum -a 256 Whalebird-${VERSION}-linux-arm64.tar.bz2 >> sha256sum.txt - cd build; shasum -a 256 Whalebird-${VERSION}-linux-armv7l.tar.bz2 >> sha256sum.txt - cd build; shasum -a 256 Whalebird-${VERSION}-linux-i686.pacman >> sha256sum.txt - cd build; shasum -a 256 Whalebird-${VERSION}-linux-ia32.deb >> sha256sum.txt - cd build; shasum -a 256 Whalebird-${VERSION}-linux-ia32.rpm >> sha256sum.txt - cd build; shasum -a 256 Whalebird-${VERSION}-linux-x64.AppImage >> sha256sum.txt - cd build; shasum -a 256 Whalebird-${VERSION}-linux-x64.deb >> sha256sum.txt - cd build; shasum -a 256 Whalebird-${VERSION}-linux-x64.pacman >> sha256sum.txt - cd build; shasum -a 256 Whalebird-${VERSION}-linux-x64.rpm >> sha256sum.txt - cd build; shasum -a 256 Whalebird-${VERSION}-linux-x64.tar.bz2 >> sha256sum.txt + cd build; sha256sum Whalebird-${VERSION}-linux-arm64.tar.bz2 | awk '{ print $1 }' > Whalebird-${VERSION}-linux-arm64.tar.bz2.shasum + cd build; sha256sum Whalebird-${VERSION}-linux-armv7l.tar.bz2 | awk '{ print $1 }' > Whalebird-${VERSION}-linux-armv7l.tar.bz2.shasum + cd build; sha256sum Whalebird-${VERSION}-linux-x64.AppImage | awk '{ print $1 }' > Whalebird-${VERSION}-linux-x64.AppImage.shasum + cd build; sha256sum Whalebird-${VERSION}-linux-x64.deb | awk '{ print $1 }' > Whalebird-${VERSION}-linux-x64.deb.shasum + cd build; sha256sum Whalebird-${VERSION}-linux-x64.pacman | awk '{ print $1 }' > Whalebird-${VERSION}-linux-x64.pacman.shasum + cd build; sha256sum Whalebird-${VERSION}-linux-x64.rpm | awk '{ print $1 }' > Whalebird-${VERSION}-linux-x64.rpm.shasum + cd build; sha256sum Whalebird-${VERSION}-linux-x64.tar.bz2 | awk '{ print $1 }' > Whalebird-${VERSION}-linux-x64.tar.bz2.shasum win32: yarn run package:win32 mv build/Whalebird-${VERSION}-win-ia32.exe build/Whalebird-${VERSION}-windows-ia32.exe - cd build; shasum -a 256 Whalebird-${VERSION}-windows-ia32.exe >> sha256sum.txt + cd build; sha256sum Whalebird-${VERSION}-windows-ia32.exe | awk '{ print $1 }' > Whalebird-${VERSION}-windows-ia32.exe.shasum win64: yarn run package:win64 mv build/Whalebird-${VERSION}-win-x64.exe build/Whalebird-${VERSION}-windows-x64.exe - cd build; shasum -a 256 Whalebird-${VERSION}-windows-x64.exe >> sha256sum.txt + cd build; sha256sum Whalebird-${VERSION}-windows-x64.exe | awk '{ print $1 }' > Whalebird-${VERSION}-windows-x64.exe.shasum clean: yarn run build:clean diff --git a/build/notarize.js b/build/notarize.js index 7b9eea8b..46f1f0d6 100644 --- a/build/notarize.js +++ b/build/notarize.js @@ -11,10 +11,10 @@ exports.default = async function notarizing(context) { return await notarize({ tool: 'notarytool', appBundleId: 'org.whalebird.desktop', - ascProvider: 'HB4N6B2YVM', + ascProvider: process.env.ASC_PROVIDER, appPath: `${appOutDir}/${appName}.app`, appleId: process.env.APPLE_ID, appleIdPassword: process.env.APPLE_PASSWORD, - teamId: 'HB4N6B2YVM' + teamId: process.env.TEAM_ID }) } diff --git a/electron-builder.json b/electron-builder.json index fca98936..989c036a 100644 --- a/electron-builder.json +++ b/electron-builder.json @@ -68,15 +68,13 @@ { "target": "deb", "arch": [ - "x64", - "ia32" + "x64" ] }, { "target": "rpm", "arch": [ - "x64", - "ia32" + "x64" ] }, { @@ -88,13 +86,6 @@ "arm64" ] }, - { - "target": "pacman", - "arch": [ - "x64", - "ia32" - ] - }, { "target": "snap", "arch": [ diff --git a/package.json b/package.json index 1c466da8..f0b2a9fb 100644 --- a/package.json +++ b/package.json @@ -32,10 +32,10 @@ "build:win32": "yarn run build && yarn run package:win32", "build:win64": "yarn run build && yarn run package:win64", "build:mas": "yarn run build:clean && yarn run pack && electron-packager ./ 'Whalebird' --platform=mas --arch=x64 --arch=arm64 --electron-version=16.0.4 --asar.unpackDir='build/sounds' --out=packages --ignore='^/src' --ignore='^/.electron-vue' --ignore='^/.envrc' --ignore='^/packages' --ignore='^/plist' --ignore='^/static' --ignore='^/whalebird.db' --ignore='^/screenshot.png' --prune=true --icon=./build/icons/icon.icns --overwrite --app-bundle-id=org.whalebird.desktop --app-version=$npm_package_config_appVersion --build-version=$npm_package_config_buildVersion --extend-info='./plist/team.plist' --app-category-type=public.app-category.social-networking && node ./packages/universal.js", - "package:mac": "electron-builder --mac --config electron-builder.json", - "package:linux": "electron-builder --linux --config electron-builder.json", - "package:win32": "electron-builder --win --ia32 --config electron-builder.json", - "package:win64": "electron-builder --win --x64 --config electron-builder.json", + "package:mac": "electron-builder --mac --publish never --config electron-builder.json", + "package:linux": "electron-builder --linux --publish never --config electron-builder.json", + "package:win32": "electron-builder --win --ia32 --publish never --config electron-builder.json", + "package:win64": "electron-builder --win --x64 --publish never --config electron-builder.json", "pack": "yarn run pack:main && yarn run pack:renderer", "pack:main": "webpack --node-env=production --mode production --progress --config .electron-vue/webpack.main.config.js", "pack:renderer": "webpack --node-env=production --mode production --progress --config .electron-vue/webpack.renderer.config.js",