chore: desktop workflow
This commit is contained in:
33
.github/workflows/desktop.dev.yml
vendored
33
.github/workflows/desktop.dev.yml
vendored
@@ -1,33 +0,0 @@
|
|||||||
name: Desktop Dev
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- develop
|
|
||||||
paths:
|
|
||||||
- packages/desktop/**
|
|
||||||
workflow_dispatch:
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- packages/desktop/**
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
if: contains(github.event.head_commit.message, 'chore(release)') == false
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: ./packages/desktop
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: actions/setup-node@v2
|
|
||||||
with:
|
|
||||||
node-version: '14.x'
|
|
||||||
registry-url: 'https://registry.npmjs.org'
|
|
||||||
- run: yarn install
|
|
||||||
- run: yarn build:web:front
|
|
||||||
- run: node scripts/build.mjs appimage-x64
|
|
||||||
- uses: actions/upload-artifact@v2
|
|
||||||
with:
|
|
||||||
name: 'AppImage'
|
|
||||||
path: dist/*.AppImage
|
|
||||||
50
.github/workflows/desktop.release.test.yml
vendored
Normal file
50
.github/workflows/desktop.release.test.yml
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
name: Desktop Dev
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: ./packages/desktop
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: '14.x'
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
- run: yarn install
|
||||||
|
- run: yarn build
|
||||||
|
|
||||||
|
|
||||||
|
Linux:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: build
|
||||||
|
steps:
|
||||||
|
- name: Compile for AppImage
|
||||||
|
run: yarn run webpack --config desktop.webpack.prod.js
|
||||||
|
- name: AppImage
|
||||||
|
run: yarn run electron-builder --linux --x64 --ia32 -c.linux.target=AppImage --publish=never
|
||||||
|
|
||||||
|
- name: Snap
|
||||||
|
run: yarn run webpack --config desktop.webpack.prod.js --env snap'
|
||||||
|
run: yarn run electron-builder --linux --x64 -c.linux.target=snap --publish=never
|
||||||
|
|
||||||
|
- name: Upload
|
||||||
|
uses: actions/upload-artifact@v3.0.0
|
||||||
|
with:
|
||||||
|
name: assets
|
||||||
|
path: 'dist/'
|
||||||
|
|
||||||
|
Publish:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [Linux]
|
||||||
|
steps:
|
||||||
|
- uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: assets
|
||||||
|
path: dist
|
||||||
|
- run: node scripts/sums.mjs
|
||||||
|
- run: node scripts/create-draft-release.mjs
|
||||||
110
.github/workflows/desktop.release.yml
vendored
Normal file
110
.github/workflows/desktop.release.yml
vendored
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
name: Desktop Dev
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: ./packages/desktop
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: '14.x'
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
- run: yarn install
|
||||||
|
- run: yarn build
|
||||||
|
|
||||||
|
Mac:
|
||||||
|
runs-on: macos-latest
|
||||||
|
needs: build
|
||||||
|
steps:
|
||||||
|
- name: Compile Mac
|
||||||
|
run: yarn run webpack --config desktop.webpack.prod.js
|
||||||
|
- name: MacX64
|
||||||
|
run: yarn run electron-builder --mac --x64 --publish=never
|
||||||
|
run: node scripts/fix-mac-zip
|
||||||
|
- name: MacArm64
|
||||||
|
run: yarn run electron-builder --mac --arm64 --publish=never
|
||||||
|
- name: Upload
|
||||||
|
uses: actions/upload-artifact@v3.0.0
|
||||||
|
with:
|
||||||
|
name: assets
|
||||||
|
path: 'dist/'
|
||||||
|
|
||||||
|
Linux:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: build
|
||||||
|
steps:
|
||||||
|
- name: Compile for AppImage
|
||||||
|
run: yarn run webpack --config desktop.webpack.prod.js
|
||||||
|
- name: AppImage
|
||||||
|
run: yarn run electron-builder --linux --x64 --ia32 -c.linux.target=AppImage --publish=never
|
||||||
|
- name: AppImageX64
|
||||||
|
run: yarn run electron-builder --linux --x64 -c.linux.target=AppImage --publish=never
|
||||||
|
- name: AppImageArm64
|
||||||
|
run: yarn run electron-builder --linux --arm64 -c.linux.target=AppImage --publish=never
|
||||||
|
|
||||||
|
- name: Deb
|
||||||
|
run: yarn run webpack --config desktop.webpack.prod.js --env deb
|
||||||
|
run: yarn run electron-builder --linux --x64 --ia32 -c.linux.target=deb --publish=never
|
||||||
|
- name: DebArm64
|
||||||
|
env:
|
||||||
|
npm_config_target_arch: 'arm64'
|
||||||
|
USE_SYSTEM_FPM: 'true'
|
||||||
|
run: yarn run webpack --config desktop.webpack.prod.js --env deb
|
||||||
|
run: yarn run electron-builder --linux --arm64 -c.linux.target=deb --publish=never
|
||||||
|
|
||||||
|
- name: Dir
|
||||||
|
run: yarn run webpack --config desktop.webpack.prod.js
|
||||||
|
run: yarn run electron-builder --linux --x64 -c.linux.target=dir --publish=never
|
||||||
|
- name: DirArm64
|
||||||
|
run: yarn run webpack --config desktop.webpack.prod.js
|
||||||
|
run: yarn run electron-builder --linux --arm64 -c.linux.target=dir --publish=never
|
||||||
|
env:
|
||||||
|
npm_config_target_arch: 'arm64'
|
||||||
|
|
||||||
|
- name: Snap
|
||||||
|
run: yarn run webpack --config desktop.webpack.prod.js --env snap'
|
||||||
|
run: yarn run electron-builder --linux --x64 -c.linux.target=snap --publish=never
|
||||||
|
- name: SnapArm64
|
||||||
|
run: yarn run webpack --config desktop.webpack.prod.js --env snap'
|
||||||
|
run: yarn run electron-builder --linux --arm64 -c.linux.target=snap --publish=never
|
||||||
|
env:
|
||||||
|
npm_config_target_arch: 'arm64'
|
||||||
|
SNAPCRAFT_BUILD_ENVIRONMENT: 'host'
|
||||||
|
|
||||||
|
- name: Upload
|
||||||
|
uses: actions/upload-artifact@v3.0.0
|
||||||
|
with:
|
||||||
|
name: assets
|
||||||
|
path: 'dist/'
|
||||||
|
|
||||||
|
Windows:
|
||||||
|
runs-on: windows-latest
|
||||||
|
needs: build
|
||||||
|
steps:
|
||||||
|
- run: yarn run webpack --config desktop.webpack.prod.js
|
||||||
|
- name: Windows
|
||||||
|
run: yarn run electron-builder --windows --x64 --ia32 --publish=never
|
||||||
|
|
||||||
|
- name: Upload
|
||||||
|
uses: actions/upload-artifact@v3.0.0
|
||||||
|
with:
|
||||||
|
name: assets
|
||||||
|
path: 'dist/'
|
||||||
|
|
||||||
|
Publish:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [Windows, Linux, Mac]
|
||||||
|
steps:
|
||||||
|
- uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: assets
|
||||||
|
path: dist
|
||||||
|
- run: node scripts/sums.mjs
|
||||||
|
- run: node scripts/create-draft-release.mjs
|
||||||
|
- run: node scripts/publishSnap.mjs
|
||||||
2
.github/workflows/mobile.build-dev.yml
vendored
2
.github/workflows/mobile.build-dev.yml
vendored
@@ -16,7 +16,6 @@ jobs:
|
|||||||
working-directory: packages/mobile
|
working-directory: packages/mobile
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
if: "!contains(github.event.head_commit.message, 'skip ci')"
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
@@ -57,7 +56,6 @@ jobs:
|
|||||||
working-directory: packages/mobile
|
working-directory: packages/mobile
|
||||||
runs-on: macos-11
|
runs-on: macos-11
|
||||||
timeout-minutes: 90
|
timeout-minutes: 90
|
||||||
if: "!contains(github.event.head_commit.message, 'skip ci')"
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|||||||
7
packages/desktop/scripts/Command.mjs
Normal file
7
packages/desktop/scripts/Command.mjs
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
export const Command = function (prompt, dir, extraEnv = {}) {
|
||||||
|
return {
|
||||||
|
prompt,
|
||||||
|
dir,
|
||||||
|
extraEnv,
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,13 +1,14 @@
|
|||||||
import { spawn } from 'child_process'
|
|
||||||
import fs from 'fs'
|
|
||||||
import path from 'path'
|
import path from 'path'
|
||||||
import { fileURLToPath } from 'url'
|
import { fileURLToPath } from 'url'
|
||||||
|
import { Command } from './Command'
|
||||||
|
import { publishSnap } from './publishSnap'
|
||||||
|
import { runCommand } from './runCommand'
|
||||||
|
|
||||||
const __filename = fileURLToPath(import.meta.url)
|
const __filename = fileURLToPath(import.meta.url)
|
||||||
const __dirname = path.dirname(__filename)
|
const __dirname = path.dirname(__filename)
|
||||||
|
|
||||||
const RootDir = path.join(__dirname, '../../..')
|
const RootDir = path.join(__dirname, '../../..')
|
||||||
const DesktopDir = path.join(__dirname, '../')
|
export const DesktopDir = path.join(__dirname, '../')
|
||||||
const ScriptsDir = path.join(__dirname)
|
const ScriptsDir = path.join(__dirname)
|
||||||
|
|
||||||
async function buildTargets(targets) {
|
async function buildTargets(targets) {
|
||||||
@@ -34,30 +35,6 @@ async function buildTargets(targets) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function runCommand(commandObj) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
const { prompt, extraEnv } = commandObj
|
|
||||||
|
|
||||||
console.log(prompt, Object.keys(extraEnv).length > 0 ? extraEnv : '')
|
|
||||||
|
|
||||||
const [command, ...args] = prompt.split(' ')
|
|
||||||
const options = { cwd: commandObj.dir, env: Object.assign({}, process.env, extraEnv) }
|
|
||||||
const child = spawn(command, args, options)
|
|
||||||
|
|
||||||
child.stdout.pipe(process.stdout)
|
|
||||||
child.stderr.pipe(process.stderr)
|
|
||||||
|
|
||||||
child.on('error', reject)
|
|
||||||
child.on('close', (code) => {
|
|
||||||
if (code > 0) {
|
|
||||||
reject(code)
|
|
||||||
} else {
|
|
||||||
resolve(code)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const Targets = {
|
const Targets = {
|
||||||
Appimage: 'appimage',
|
Appimage: 'appimage',
|
||||||
AppimageArm64: 'appimage-arm64',
|
AppimageArm64: 'appimage-arm64',
|
||||||
@@ -102,14 +79,6 @@ const TargetGroups = {
|
|||||||
|
|
||||||
const arm64Env = { npm_config_target_arch: 'arm64' }
|
const arm64Env = { npm_config_target_arch: 'arm64' }
|
||||||
|
|
||||||
const Command = function (prompt, dir, extraEnv = {}) {
|
|
||||||
return {
|
|
||||||
prompt,
|
|
||||||
dir,
|
|
||||||
extraEnv,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const CompileGroups = [
|
const CompileGroups = [
|
||||||
{
|
{
|
||||||
compileCommand: Command('yarn run webpack --config desktop.webpack.prod.js', DesktopDir),
|
compileCommand: Command('yarn run webpack --config desktop.webpack.prod.js', DesktopDir),
|
||||||
@@ -192,12 +161,6 @@ const BuildCommands = {
|
|||||||
[Targets.Windows]: [Command('yarn run electron-builder --windows --x64 --ia32 --publish=never', DesktopDir)],
|
[Targets.Windows]: [Command('yarn run electron-builder --windows --x64 --ia32 --publish=never', DesktopDir)],
|
||||||
}
|
}
|
||||||
|
|
||||||
async function publishSnap() {
|
|
||||||
const packageJson = await fs.promises.readFile(path.join(DesktopDir, 'package.json'))
|
|
||||||
const version = JSON.parse(packageJson).version
|
|
||||||
await runCommand(Command(`snapcraft upload dist/standard-notes-${version}-linux-amd64.snap`, DesktopDir))
|
|
||||||
}
|
|
||||||
|
|
||||||
;(async () => {
|
;(async () => {
|
||||||
try {
|
try {
|
||||||
const input = process.argv[2]
|
const input = process.argv[2]
|
||||||
|
|||||||
11
packages/desktop/scripts/publishSnap.mjs
Normal file
11
packages/desktop/scripts/publishSnap.mjs
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import fs from 'fs'
|
||||||
|
import path from 'path'
|
||||||
|
import { Command } from './Command'
|
||||||
|
import { runCommand } from './runCommand'
|
||||||
|
import { DesktopDir } from './build'
|
||||||
|
|
||||||
|
export async function publishSnap() {
|
||||||
|
const packageJson = await fs.promises.readFile(path.join(DesktopDir, 'package.json'))
|
||||||
|
const version = JSON.parse(packageJson).version
|
||||||
|
await runCommand(Command(`snapcraft upload dist/standard-notes-${version}-linux-amd64.snap`, DesktopDir))
|
||||||
|
}
|
||||||
25
packages/desktop/scripts/runCommand.mjs
Normal file
25
packages/desktop/scripts/runCommand.mjs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
import { spawn } from 'child_process'
|
||||||
|
|
||||||
|
export function runCommand(commandObj) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const { prompt, extraEnv } = commandObj
|
||||||
|
|
||||||
|
console.log(prompt, Object.keys(extraEnv).length > 0 ? extraEnv : '')
|
||||||
|
|
||||||
|
const [command, ...args] = prompt.split(' ')
|
||||||
|
const options = { cwd: commandObj.dir, env: Object.assign({}, process.env, extraEnv) }
|
||||||
|
const child = spawn(command, args, options)
|
||||||
|
|
||||||
|
child.stdout.pipe(process.stdout)
|
||||||
|
child.stderr.pipe(process.stderr)
|
||||||
|
|
||||||
|
child.on('error', reject)
|
||||||
|
child.on('close', (code) => {
|
||||||
|
if (code > 0) {
|
||||||
|
reject(code)
|
||||||
|
} else {
|
||||||
|
resolve(code)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -23,8 +23,13 @@ function sha256(filePath) {
|
|||||||
|
|
||||||
let hashes = await Promise.all(
|
let hashes = await Promise.all(
|
||||||
files.map(async (fileName) => {
|
files.map(async (fileName) => {
|
||||||
const hash = await sha256(fileName)
|
try {
|
||||||
return `${hash} ${fileName}`
|
const hash = await sha256(fileName)
|
||||||
|
return `${hash} ${fileName}`
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Unable to hash file', fileName)
|
||||||
|
return null
|
||||||
|
}
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
hashes = hashes.join('\n')
|
hashes = hashes.join('\n')
|
||||||
|
|||||||
Reference in New Issue
Block a user