1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-24 10:27:10 +02:00

Tools: Allow building Docker image from CI

This commit is contained in:
Laurent Cozic 2021-06-11 18:24:59 +02:00
parent c5c38a323f
commit 8459b46cd0
10 changed files with 85 additions and 14 deletions

View File

@ -1604,6 +1604,9 @@ packages/renderer/pathUtils.js.map
packages/renderer/utils.d.ts packages/renderer/utils.d.ts
packages/renderer/utils.js packages/renderer/utils.js
packages/renderer/utils.js.map packages/renderer/utils.js.map
packages/tools/buildServerDocker.d.ts
packages/tools/buildServerDocker.js
packages/tools/buildServerDocker.js.map
packages/tools/generate-database-types.d.ts packages/tools/generate-database-types.d.ts
packages/tools/generate-database-types.js packages/tools/generate-database-types.js
packages/tools/generate-database-types.js.map packages/tools/generate-database-types.js.map

View File

@ -122,7 +122,13 @@ fi
cd "$ROOT_DIR/packages/app-desktop" cd "$ROOT_DIR/packages/app-desktop"
if [[ $GIT_TAG_NAME = v* ]]; then if [[ $GIT_TAG_NAME = v* ]]; then
echo "Building and publishing desktop application..."
USE_HARD_LINKS=false npm run dist USE_HARD_LINKS=false npm run dist
elif [[ $GIT_TAG_NAME = server-v* ]] && [[ $IS_LINUX = 1 ]]; then
echo "Building Docker Image..."
cd "$ROOT_DIR"
npm run buildServerDocker -- --tag-name $GIT_TAG_NAME
else else
echo "Building but *not* publishing desktop application..."
USE_HARD_LINKS=false npm run dist -- --publish=never USE_HARD_LINKS=false npm run dist -- --publish=never
fi fi

View File

@ -12,6 +12,7 @@ jobs:
# exist) since otherwise it will make the whole build fails, even though # exist) since otherwise it will make the whole build fails, even though
# it might work without update. libsecret-1-dev is required for keytar - # it might work without update. libsecret-1-dev is required for keytar -
# https://github.com/atom/node-keytar # https://github.com/atom/node-keytar
- name: Install Linux dependencies - name: Install Linux dependencies
if: runner.os == 'Linux' if: runner.os == 'Linux'
run: | run: |
@ -19,12 +20,33 @@ jobs:
sudo apt-get install -y gettext sudo apt-get install -y gettext
sudo apt-get install -y libsecret-1-dev sudo apt-get install -y libsecret-1-dev
- name: Install Docker Engine
if: runner.os == 'Linux'
run: |
sudo apt-get install -y apt-transport-https
sudo apt-get install -y ca-certificates
sudo apt-get install -y curl
sudo apt-get install -y gnupg
sudo apt-get install -y lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update || true
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: olegtarasov/get-tag@v2.1 - uses: olegtarasov/get-tag@v2.1
- uses: actions/setup-node@v2 - uses: actions/setup-node@v2
with: with:
node-version: '12' node-version: '12'
- uses: docker/login-action@v1
if: runner.os == 'Linux'
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Run script... - name: Run script...
env: env:
APPLE_ASC_PROVIDER: ${{ secrets.APPLE_ASC_PROVIDER }} APPLE_ASC_PROVIDER: ${{ secrets.APPLE_ASC_PROVIDER }}

3
.gitignore vendored
View File

@ -1590,6 +1590,9 @@ packages/renderer/pathUtils.js.map
packages/renderer/utils.d.ts packages/renderer/utils.d.ts
packages/renderer/utils.js packages/renderer/utils.js
packages/renderer/utils.js.map packages/renderer/utils.js.map
packages/tools/buildServerDocker.d.ts
packages/tools/buildServerDocker.js
packages/tools/buildServerDocker.js.map
packages/tools/generate-database-types.d.ts packages/tools/generate-database-types.d.ts
packages/tools/generate-database-types.js packages/tools/generate-database-types.js
packages/tools/generate-database-types.js.map packages/tools/generate-database-types.js.map

View File

@ -36,6 +36,7 @@
"releaseIOS": "node packages/tools/release-ios.js", "releaseIOS": "node packages/tools/release-ios.js",
"releasePluginGenerator": "node packages/tools/release-plugin-generator.js", "releasePluginGenerator": "node packages/tools/release-plugin-generator.js",
"releaseServer": "node packages/tools/release-server.js", "releaseServer": "node packages/tools/release-server.js",
"buildServerDocker": "node packages/tools/buildServerDocker.js",
"setupNewRelease": "node ./packages/tools/setupNewRelease", "setupNewRelease": "node ./packages/tools/setupNewRelease",
"test-ci": "lerna run test-ci --stream", "test-ci": "lerna run test-ci --stream",
"test": "lerna run test --stream", "test": "lerna run test --stream",

View File

@ -1,6 +1,6 @@
{ {
"name": "@joplin/server", "name": "@joplin/server",
"version": "2.0.6", "version": "2.0.7",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@ -1,6 +1,6 @@
{ {
"name": "@joplin/server", "name": "@joplin/server",
"version": "2.0.6", "version": "2.0.7",
"private": true, "private": true,
"scripts": { "scripts": {
"start-dev": "nodemon --config nodemon.json --ext ts,js,mustache,css,tsx dist/app.js --env dev", "start-dev": "nodemon --config nodemon.json --ext ts,js,mustache,css,tsx dist/app.js --env dev",

View File

@ -0,0 +1,39 @@
import { execCommand2, rootDir } from './tool-utils';
function getVersionFromTag(tagName: string): string {
if (tagName.indexOf('server-') !== 0) throw new Error(`Invalid tag: ${tagName}`);
const s = tagName.split('-');
return s[1];
}
function getIsPreRelease(tagName: string): boolean {
return tagName.indexOf('-beta') > 0;
}
async function main() {
const argv = require('yargs').argv;
if (!argv.tagName) throw new Error('--tag-name not provided');
const tagName = argv.tagName;
const imageVersion = getVersionFromTag(tagName);
const isPreRelease = getIsPreRelease(tagName);
process.chdir(rootDir);
console.info(`Running from: ${process.cwd()}`);
console.info('tagName:', tagName);
console.info('imageVersion:', imageVersion);
console.info('isPreRelease:', isPreRelease);
await execCommand2(`docker build -t "joplin/server:${imageVersion}" -f Dockerfile.server .`);
await execCommand2(`docker tag "joplin/server:${imageVersion}" "joplin/server:latest"`);
await execCommand2(`docker push joplin/server:${imageVersion}`);
if (!isPreRelease) await execCommand2('docker push joplin/server:latest');
}
main().catch((error) => {
console.error('Fatal error');
console.error(error);
process.exit(1);
});

View File

@ -11,18 +11,8 @@ async function main() {
process.chdir(serverDir); process.chdir(serverDir);
const version = (await execCommand2('npm version patch')).trim(); const version = (await execCommand2('npm version patch')).trim();
const versionShort = version.substr(1); const versionSuffix = isPreRelease ? '-beta' : '';
const imageVersion = versionShort + (isPreRelease ? '-beta' : ''); const tagName = `server-${version}${versionSuffix}`;
const tagName = `server-${version}`;
process.chdir(rootDir);
console.info(`Running from: ${process.cwd()}`);
await execCommand2(`docker build -t "joplin/server:${imageVersion}" -f Dockerfile.server .`);
await execCommand2(`docker tag "joplin/server:${imageVersion}" "joplin/server:latest"`);
await execCommand2(`docker push joplin/server:${imageVersion}`);
if (!isPreRelease) await execCommand2('docker push joplin/server:latest');
const changelogPath = `${rootDir}/readme/changelog_server.md`; const changelogPath = `${rootDir}/readme/changelog_server.md`;
await completeReleaseWithChangelog(changelogPath, version, tagName, 'Server', isPreRelease); await completeReleaseWithChangelog(changelogPath, version, tagName, 'Server', isPreRelease);

View File

@ -1,5 +1,12 @@
# Joplin Server Changelog # Joplin Server Changelog
## [server-v2.0.7](https://github.com/laurent22/joplin/releases/tag/server-v2.0.7) (Pre-release) - 2021-06-11T15:34:30Z
- New: Add navbar on login and sign up page (7a3a208)
- New: Added option to enable or disable stack traces (5614eb9)
- Improved: Handle custom user content URLs (a36b13d)
- Fixed: Fixed error when creating user (594084e)
## [server-v2.0.6](https://github.com/laurent22/joplin/releases/tag/server-v2.0.6) (Pre-release) - 2021-06-07T17:27:27Z ## [server-v2.0.6](https://github.com/laurent22/joplin/releases/tag/server-v2.0.6) (Pre-release) - 2021-06-07T17:27:27Z
- New: Add Stripe integration (770af6a) - New: Add Stripe integration (770af6a)