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",