From 0f94cb8c17571508b058cf073040eabb14a6688c Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Thu, 31 Jul 2025 21:35:03 +0100 Subject: [PATCH] Chore: Updated script to allow deploying Transcribe server (#12828) --- .eslintignore | 1 + .github/scripts/run_ci.sh | 18 ++++++++++++++-- .github/workflows/github-actions-main.yml | 2 +- .gitignore | 1 + package.json | 1 + packages/tools/buildServerDocker.ts | 25 ++++++++++++++--------- packages/tools/git-changelog.ts | 6 +++++- packages/tools/release-transcribe.ts | 23 +++++++++++++++++++++ packages/transcribe/package.json | 2 +- readme/about/changelog/transcribe.md | 5 +++++ 10 files changed, 69 insertions(+), 15 deletions(-) create mode 100644 packages/tools/release-transcribe.ts create mode 100644 readme/about/changelog/transcribe.md diff --git a/.eslintignore b/.eslintignore index 025d324ce3..2f0d78ef80 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1765,6 +1765,7 @@ packages/tools/release-electron.js packages/tools/release-ios.js packages/tools/release-plugin-repo-cli.js packages/tools/release-server.js +packages/tools/release-transcribe.js packages/tools/saveClaConsentRecords.js packages/tools/setupNewRelease.js packages/tools/spellcheck.js diff --git a/.github/scripts/run_ci.sh b/.github/scripts/run_ci.sh index 2d93de867f..a554fb100e 100755 --- a/.github/scripts/run_ci.sh +++ b/.github/scripts/run_ci.sh @@ -7,9 +7,13 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" ROOT_DIR="$SCRIPT_DIR/../.." +TRANSCRIBE_TAG_PREFIX=transcribe +TRANSCRIBE_REPOSITORY=joplin/transcribe + IS_PULL_REQUEST=0 IS_DESKTOP_RELEASE=0 IS_SERVER_RELEASE=0 +IS_TRANSCRIBE_RELEASE=0 IS_LINUX=0 IS_MACOS=0 @@ -23,6 +27,10 @@ if [[ $GIT_TAG_NAME = $SERVER_TAG_PREFIX-* ]]; then IS_SERVER_RELEASE=1 fi +if [[ $GIT_TAG_NAME = $TRANSCRIBE_TAG_PREFIX-* ]]; then + IS_TRANSCRIBE_RELEASE=1 +fi + if [[ $GIT_TAG_NAME = v* ]]; then IS_DESKTOP_RELEASE=1 fi @@ -80,12 +88,14 @@ echo "GIT_TAG_NAME=$GIT_TAG_NAME" echo "BUILD_SEQUENCIAL=$BUILD_SEQUENCIAL" echo "SERVER_REPOSITORY=$SERVER_REPOSITORY" echo "SERVER_TAG_PREFIX=$SERVER_TAG_PREFIX" +echo "TRANSCRIBE_TAG_PREFIX=$TRANSCRIBE_TAG_PREFIX" echo "DOCKER_IMAGE_PLATFORM=$DOCKER_IMAGE_PLATFORM" echo "IS_CONTINUOUS_INTEGRATION=$IS_CONTINUOUS_INTEGRATION" echo "IS_PULL_REQUEST=$IS_PULL_REQUEST" echo "IS_DESKTOP_RELEASE=$IS_DESKTOP_RELEASE" echo "IS_SERVER_RELEASE=$IS_SERVER_RELEASE" +echo "IS_TRANSCRIBE_RELEASE=$IS_TRANSCRIBE_RELEASE" echo "RUN_TESTS=$RUN_TESTS" echo "IS_LINUX=$IS_LINUX" echo "IS_MACOS=$IS_MACOS" @@ -301,9 +311,13 @@ if [ "$IS_DESKTOP_RELEASE" == "1" ]; then USE_HARD_LINKS=false yarn dist fi elif [[ $IS_LINUX = 1 ]] && [ "$IS_SERVER_RELEASE" == "1" ]; then - echo "Step: Building Docker Image..." + echo "Step: Building Joplin Server Docker Image..." cd "$ROOT_DIR" - yarn buildServerDocker --platform $DOCKER_IMAGE_PLATFORM --tag-name $GIT_TAG_NAME --push-images --repository $SERVER_REPOSITORY + yarn buildServerDocker --docker-file Dockerfile.server --platform $DOCKER_IMAGE_PLATFORM --tag-name $GIT_TAG_NAME --push-images --repository $SERVER_REPOSITORY +elif [[ $IS_LINUX = 1 ]] && [ "$IS_TRANSCRIBE_RELEASE" == "1" ]; then + echo "Step: Building Joplin Transcribe Docker Image..." + cd "$ROOT_DIR" + yarn buildServerDocker --docker-file Dockerfile.transcribe --platform $DOCKER_IMAGE_PLATFORM --tag-name $GIT_TAG_NAME --push-images --repository $TRANSCRIBE_REPOSITORY else echo "Step: Building but *not* publishing desktop application..." diff --git a/.github/workflows/github-actions-main.yml b/.github/workflows/github-actions-main.yml index a57a3ad819..94b5c7281c 100644 --- a/.github/workflows/github-actions-main.yml +++ b/.github/workflows/github-actions-main.yml @@ -141,7 +141,7 @@ jobs: echo "DOCKER_IMAGE_PLATFORM=$DOCKER_IMAGE_PLATFORM" yarn install - yarn buildServerDocker --platform $DOCKER_IMAGE_PLATFORM --tag-name server-v0.0.0 --repository joplin/server + yarn buildServerDocker --docker-file Dockerfile.server --platform $DOCKER_IMAGE_PLATFORM --tag-name server-v0.0.0 --repository joplin/server # Basic test to ensure that the created build is valid. It should exit with # code 0 if it works. diff --git a/.gitignore b/.gitignore index a3dd43499a..e139792e88 100644 --- a/.gitignore +++ b/.gitignore @@ -1738,6 +1738,7 @@ packages/tools/release-electron.js packages/tools/release-ios.js packages/tools/release-plugin-repo-cli.js packages/tools/release-server.js +packages/tools/release-transcribe.js packages/tools/saveClaConsentRecords.js packages/tools/setupNewRelease.js packages/tools/spellcheck.js diff --git a/package.json b/package.json index 7638e10609..e9d49a250a 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "releasePluginGenerator": "node packages/tools/release-plugin-generator.js", "releasePluginRepoCli": "node packages/tools/release-plugin-repo-cli.js", "releaseServer": "node packages/tools/release-server.js", + "releaseTranscribe": "node packages/tools/release-transcribe.js", "saveClaConsentRecords": "node packages/tools/saveClaConsentRecords.js", "setupNewRelease": "node ./packages/tools/setupNewRelease", "spellcheck": "node packages/tools/spellcheck.js", diff --git a/packages/tools/buildServerDocker.ts b/packages/tools/buildServerDocker.ts index 2cabc5db55..a3d5da68fd 100644 --- a/packages/tools/buildServerDocker.ts +++ b/packages/tools/buildServerDocker.ts @@ -10,25 +10,28 @@ interface Argv { platform?: string; source?: string; addLatestTag?: boolean; + dockerFile?: string; } function parseArgv(): Argv { return require('yargs') .scriptName('yarn buildServerDocker') .usage('$0 --repository OWNER/IMAGE [args]') - .option('r', { - alias: 'repository', + .option('dockerFile', { + describe: 'Dockerfile - either Dockerfile.server or Dockerfile.transcribe', + demandOption: true, + type: 'string', + }) + .option('repository', { describe: 'Target image repository. Usually in format `OWNER/NAME`', demandOption: true, type: 'string', }) - .option('t', { - alias: 'tagName', + .option('tagName', { describe: 'Base image tag. Usually should be in format `server-v1.2.3` or `server-v1.2.3-beta`. The latest `server-v*` git tag will be used by default.', type: 'string', }) - .option('l', { - alias: 'addLatestTag', + .option('addLatestTag', { describe: 'Add `latest` tag even for pre-release images.', type: 'boolean', default: false, @@ -43,14 +46,12 @@ function parseArgv(): Argv { type: 'string', default: 'https://github.com/laurent22/joplin.git', }) - .option('p', { - alias: 'pushImages', + .option('pushImages', { describe: 'Publish images to target repository.', type: 'boolean', default: false, }) .option('dryRun', { - alias: 'dryRun', describe: 'Do not call docker, just show command instead.', type: 'boolean', default: false, @@ -80,8 +81,11 @@ async function main() { const argv = parseArgv(); if (!argv.tagName) console.info('No `--tag-name` was specified. A latest git tag will be used instead.'); + console.info('Raw arguments:', argv); + const dryRun = argv.dryRun; const addLatestTag = argv.addLatestTag; + const dockerFile = argv.dockerFile; const pushImages = argv.pushImages; const repository = argv.repository; const tagName = argv.tagName || `server-${await execCommand('git describe --tags --match v*', { showStdout: false })}`; @@ -123,6 +127,7 @@ async function main() { process.chdir(rootDir); console.info(`Running from: ${process.cwd()}`); + console.info('dockerFile:', dockerFile); console.info('repository:', repository); console.info('tagName:', tagName); console.info('platform:', platform); @@ -138,7 +143,7 @@ async function main() { if (pushImages) { cliArgs.push('--push'); } - cliArgs.push('-f Dockerfile.server'); + cliArgs.push(`--file ${dockerFile}`); cliArgs.push('.'); const dockerCommand = `docker buildx build ${cliArgs.join(' ')}`; diff --git a/packages/tools/git-changelog.ts b/packages/tools/git-changelog.ts index d50f62e88a..8f56d4e6d1 100644 --- a/packages/tools/git-changelog.ts +++ b/packages/tools/git-changelog.ts @@ -22,6 +22,7 @@ enum Platform { Desktop = 'desktop', Clipper = 'clipper', Server = 'server', + Transcribe = 'transcribe', Cloud = 'cloud', Cli = 'cli', PluginGenerator = 'plugin-generator', @@ -104,6 +105,7 @@ function platformFromTag(tagName: string): Platform { if (tagName.indexOf('clipper') === 0) return Platform.Clipper; if (tagName.indexOf('cli') === 0) return Platform.Cli; if (tagName.indexOf('server') === 0) return Platform.Server; + if (tagName.indexOf('transcribe') === 0) return Platform.Transcribe; if (tagName.indexOf('cloud') === 0) return Platform.Cloud; if (tagName.indexOf('plugin-generator') === 0) return Platform.PluginGenerator; if (tagName.indexOf('plugin-repo-cli') === 0) return Platform.PluginRepoCli; @@ -128,6 +130,7 @@ export const filesApplyToPlatform = (files: string[], platform: string): boolean if (file.startsWith('packages/react-native-') && isMobile) return true; if (file.startsWith('packages/renderer') && isMainApp) return true; if (file.startsWith('packages/server') && platform === 'server') return true; + if (file.startsWith('packages/transcribe') && platform === 'transcribe') return true; if (file.startsWith('packages/tools') && isMainApp) return true; if (file.startsWith('packages/turndown') && isMainApp) return true; } @@ -264,6 +267,7 @@ function filterLogs(logs: LogEntry[], platform: Platform) { if (platform === 'cli' && prefix.indexOf('cli') >= 0) addIt = true; if (platform === 'clipper' && prefix.indexOf('clipper') >= 0) addIt = true; if (platform === 'server' && prefix.indexOf('server') >= 0) addIt = true; + if (platform === 'transcribe' && prefix.indexOf('transcribe') >= 0) addIt = true; if (platform === 'cloud' && (prefix.indexOf('cloud') >= 0 || prefix.indexOf('server') >= 0)) addIt = true; if (isRenovate && filesApplyToPlatform(log.files, platform)) { @@ -318,7 +322,7 @@ function formatCommitMessage(commit: string, msg: string, author: Author, option const isPlatformPrefix = (prefixString: string) => { const prefix = prefixString.split(',').map(p => p.trim().toLowerCase()); for (const p of prefix) { - if (['android', 'mobile', 'ios', 'desktop', 'windows', 'linux', 'macos', 'cli', 'clipper', 'all', 'api', 'plugins', 'server', 'cloud'].indexOf(p) >= 0) return true; + if (['android', 'mobile', 'ios', 'desktop', 'windows', 'linux', 'macos', 'cli', 'clipper', 'all', 'api', 'plugins', 'server', 'transcribe', 'cloud'].indexOf(p) >= 0) return true; } return false; }; diff --git a/packages/tools/release-transcribe.ts b/packages/tools/release-transcribe.ts new file mode 100644 index 0000000000..4b2f9a5921 --- /dev/null +++ b/packages/tools/release-transcribe.ts @@ -0,0 +1,23 @@ +import { execCommand } from '@joplin/utils'; +import { rootDir, gitPullTry, completeReleaseWithChangelog } from './tool-utils'; + +const transcribeDir = `${rootDir}/packages/transcribe`; + +async function main() { + await gitPullTry(); + + process.chdir(transcribeDir); + const version = (await execCommand('npm version patch')).trim(); + const versionSuffix = ''; + const tagName = `transcribe-${version}${versionSuffix}`; + + const changelogPath = `${rootDir}/readme/about/changelog/transcribe.md`; + + await completeReleaseWithChangelog(changelogPath, version, tagName, 'Transcribe', false); +} + +main().catch((error) => { + console.error('Fatal error'); + console.error(error); + process.exit(1); +}); diff --git a/packages/transcribe/package.json b/packages/transcribe/package.json index b79bbc9b10..0e32a3843c 100644 --- a/packages/transcribe/package.json +++ b/packages/transcribe/package.json @@ -1,6 +1,6 @@ { "name": "@joplin/transcribe", - "version": "3.3.0", + "version": "3.4.4", "private": true, "scripts": { "rebuild": "yarn clean && yarn build && yarn tsc", diff --git a/readme/about/changelog/transcribe.md b/readme/about/changelog/transcribe.md new file mode 100644 index 0000000000..528de79837 --- /dev/null +++ b/readme/about/changelog/transcribe.md @@ -0,0 +1,5 @@ +# Transcribe Changelog + +## [transcribe-v3.4.4](https://github.com/laurent22/joplin/releases/tag/transcribe-v3.4.4) - 2025-07-31T17:40:57Z + +- Fixed: Removes file from temporary folder after storing it (#12795) (#12765 by [@pedr](https://github.com/pedr))