mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-11-04 07:01:31 +08:00 
			
		
		
		
	Merge pull request #201 from TriliumNext/feature/fix_build_scripts
Fix build scripts & add CI for running them
This commit is contained in:
		
						commit
						d66a70f099
					
				@ -6,4 +6,5 @@
 | 
			
		||||
/npm-debug.log
 | 
			
		||||
node_modules
 | 
			
		||||
 | 
			
		||||
src/**/*.ts
 | 
			
		||||
src/**/*.ts
 | 
			
		||||
!src/services/asset_path.ts
 | 
			
		||||
							
								
								
									
										75
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										75
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
								
							@ -7,6 +7,81 @@ env:
 | 
			
		||||
  REGISTRY: ghcr.io
 | 
			
		||||
  IMAGE_NAME: ${{ github.repository }}
 | 
			
		||||
jobs:
 | 
			
		||||
  build_darwin-x64:
 | 
			
		||||
    name: Build macOS x86_64
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Set up node & dependencies
 | 
			
		||||
        uses: actions/setup-node@v4
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: 18
 | 
			
		||||
          cache: "npm"
 | 
			
		||||
      - run: npm ci
 | 
			
		||||
      - run: ./bin/build-mac-x64.sh
 | 
			
		||||
      - uses: actions/upload-artifact@v4
 | 
			
		||||
        with:
 | 
			
		||||
          name: trilium-mac-x64.zip
 | 
			
		||||
          path: dist/trilium-mac-x64*.zip
 | 
			
		||||
  build_linux-x64:
 | 
			
		||||
    name: Build Linux x86_64
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Set up node & dependencies
 | 
			
		||||
        uses: actions/setup-node@v4
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: 18
 | 
			
		||||
          cache: "npm"
 | 
			
		||||
      - run: npm ci
 | 
			
		||||
      - run: ./bin/build-linux-x64.sh
 | 
			
		||||
      - uses: actions/upload-artifact@v4
 | 
			
		||||
        with:
 | 
			
		||||
          name: trilium-linux-x64.tar.xz
 | 
			
		||||
          path: dist/trilium-linux-x64-*.tar.xz
 | 
			
		||||
      - uses: actions/upload-artifact@v4
 | 
			
		||||
        with:
 | 
			
		||||
          name: trilium_amd64.deb
 | 
			
		||||
          path: dist/trilium_*.deb
 | 
			
		||||
  build_linux_server-x64:
 | 
			
		||||
    name: Build Linux Server x86_64
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Set up node & dependencies
 | 
			
		||||
        uses: actions/setup-node@v4
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: 18
 | 
			
		||||
          cache: "npm"
 | 
			
		||||
      - run: npm ci
 | 
			
		||||
      - run: ./bin/build-server.sh
 | 
			
		||||
      - uses: actions/upload-artifact@v4
 | 
			
		||||
        with:
 | 
			
		||||
          name: trilium-linux-x64-server.tar.xz
 | 
			
		||||
          path: dist/trilium-linux-x64-server-*.tar.xz
 | 
			
		||||
  build_windows-x64:
 | 
			
		||||
    name: Build Windows x86_64
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Set up Wine
 | 
			
		||||
        run: |
 | 
			
		||||
          sudo dpkg --add-architecture i386
 | 
			
		||||
          wget -qO - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -
 | 
			
		||||
          sudo add-apt-repository ppa:cybermax-dexter/sdl2-backport
 | 
			
		||||
          sudo apt-add-repository "deb https://dl.winehq.org/wine-builds/ubuntu $(lsb_release -cs) main"
 | 
			
		||||
          sudo apt install --install-recommends winehq-stable
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Set up node & dependencies
 | 
			
		||||
        uses: actions/setup-node@v4
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: 18
 | 
			
		||||
          cache: "npm"
 | 
			
		||||
      - run: npm ci
 | 
			
		||||
      - run: ./bin/build-win-x64.sh
 | 
			
		||||
      - uses: actions/upload-artifact@v4
 | 
			
		||||
        with:
 | 
			
		||||
          name: trilium-windows-x64.zip
 | 
			
		||||
          path: dist/trilium-windows-x64-*.zip
 | 
			
		||||
  build_docker:
 | 
			
		||||
    name: Build Docker image
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
@ -34,7 +34,8 @@ RUN set -x \
 | 
			
		||||
    && npm prune --omit=dev \
 | 
			
		||||
    && cp src/public/app/share.js src/public/app-dist/. \
 | 
			
		||||
    && cp -r src/public/app/doc_notes src/public/app-dist/. \
 | 
			
		||||
    && rm -rf src/public/app
 | 
			
		||||
    && rm -rf src/public/app \
 | 
			
		||||
    && rm src/services/asset_path.ts
 | 
			
		||||
 | 
			
		||||
# Some setup tools need to be kept
 | 
			
		||||
RUN apk add --no-cache su-exec shadow
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,8 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
shopt -s globstar
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
if [[ $# -eq 0 ]] ; then
 | 
			
		||||
    echo "Missing argument of target directory"
 | 
			
		||||
    exit 1
 | 
			
		||||
@ -9,25 +12,36 @@ if ! [[ $(which npm) ]]; then
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
n exec 18.18.2 npm run webpack || npm run webpack
 | 
			
		||||
# Trigger the TypeScript build
 | 
			
		||||
echo TypeScript build start
 | 
			
		||||
npx tsc
 | 
			
		||||
echo TypeScript build finished
 | 
			
		||||
 | 
			
		||||
# Copy the TypeScript artifacts
 | 
			
		||||
DIR="$1"
 | 
			
		||||
 | 
			
		||||
rm -rf "$DIR"
 | 
			
		||||
mkdir -pv "$DIR"
 | 
			
		||||
 | 
			
		||||
echo Webpack start
 | 
			
		||||
npm run webpack
 | 
			
		||||
echo Webpack finish
 | 
			
		||||
 | 
			
		||||
echo "Copying Trilium to build directory $DIR"
 | 
			
		||||
 | 
			
		||||
for d in 'images' 'libraries' 'src' 'db'; do
 | 
			
		||||
    cp -r "$d" "$DIR"/
 | 
			
		||||
done
 | 
			
		||||
for f in 'package.json' 'package-lock.json' 'README.md' 'LICENSE' 'config-sample.ini' 'electron.js'; do
 | 
			
		||||
 | 
			
		||||
for f in 'package.json' 'package-lock.json' 'README.md' 'LICENSE' 'config-sample.ini'; do
 | 
			
		||||
    cp "$f" "$DIR"/
 | 
			
		||||
done
 | 
			
		||||
cp webpack-* "$DIR"/      # here warning because there is no 'webpack-*', but webpack.config.js only
 | 
			
		||||
 | 
			
		||||
script_dir=$(realpath $(dirname $0))
 | 
			
		||||
cp -Rv "$script_dir/../build/src" "$DIR"
 | 
			
		||||
cp "$script_dir/../build/electron.js" "$DIR"
 | 
			
		||||
 | 
			
		||||
# run in subshell (so we return to original dir)
 | 
			
		||||
(cd $DIR && n exec 18.18.2 npm install --only=prod)
 | 
			
		||||
(cd $DIR && npm install --only=prod)
 | 
			
		||||
 | 
			
		||||
if [[ -d "$DIR"/node_modules ]]; then
 | 
			
		||||
# cleanup of useless files in dependencies
 | 
			
		||||
 | 
			
		||||
@ -27,7 +27,7 @@
 | 
			
		||||
    "build-backend-docs": "rm -rf ./docs/backend_api && ./node_modules/.bin/jsdoc -c jsdoc-conf.json -d ./docs/backend_api src/becca/entities/*.js src/services/backend_script_api.js src/services/sql.js",
 | 
			
		||||
    "build-frontend-docs": "rm -rf ./docs/frontend_api && ./node_modules/.bin/jsdoc -c jsdoc-conf.json -d ./docs/frontend_api src/public/app/entities/*.js src/public/app/services/frontend_script_api.js src/public/app/widgets/basic_widget.js src/public/app/widgets/note_context_aware_widget.js src/public/app/widgets/right_panel_widget.js",
 | 
			
		||||
    "build-docs": "npm run build-backend-docs && npm run build-frontend-docs",
 | 
			
		||||
    "webpack": "webpack -c webpack.config.js",
 | 
			
		||||
    "webpack": "webpack -c webpack.config.ts",
 | 
			
		||||
    "test-jasmine": "TRILIUM_DATA_DIR=~/trilium/data-test jasmine",
 | 
			
		||||
    "test-es6": "node -r esm spec-es6/attribute_parser.spec.js ",
 | 
			
		||||
    "test": "npm run test-jasmine && npm run test-es6",
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
const path = require('path');
 | 
			
		||||
const assetPath = require('./src/services/asset_path');
 | 
			
		||||
import path = require('path');
 | 
			
		||||
import assetPath = require('./src/services/asset_path');
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
    mode: 'production',
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user