mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-10-31 21:11:30 +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
					
				| @ -7,3 +7,4 @@ | |||||||
| node_modules | 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 |   REGISTRY: ghcr.io | ||||||
|   IMAGE_NAME: ${{ github.repository }} |   IMAGE_NAME: ${{ github.repository }} | ||||||
| jobs: | 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: |   build_docker: | ||||||
|     name: Build Docker image |     name: Build Docker image | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|  | |||||||
| @ -34,7 +34,8 @@ RUN set -x \ | |||||||
|     && npm prune --omit=dev \ |     && npm prune --omit=dev \ | ||||||
|     && cp src/public/app/share.js src/public/app-dist/. \ |     && cp src/public/app/share.js src/public/app-dist/. \ | ||||||
|     && cp -r src/public/app/doc_notes 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 | # Some setup tools need to be kept | ||||||
| RUN apk add --no-cache su-exec shadow | RUN apk add --no-cache su-exec shadow | ||||||
|  | |||||||
| @ -1,5 +1,8 @@ | |||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
| 
 | 
 | ||||||
|  | shopt -s globstar | ||||||
|  | set -e | ||||||
|  | 
 | ||||||
| if [[ $# -eq 0 ]] ; then | if [[ $# -eq 0 ]] ; then | ||||||
|     echo "Missing argument of target directory" |     echo "Missing argument of target directory" | ||||||
|     exit 1 |     exit 1 | ||||||
| @ -9,25 +12,36 @@ if ! [[ $(which npm) ]]; then | |||||||
|     exit 1 |     exit 1 | ||||||
| fi | 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" | DIR="$1" | ||||||
| 
 |  | ||||||
| rm -rf "$DIR" | rm -rf "$DIR" | ||||||
| mkdir -pv "$DIR" | mkdir -pv "$DIR" | ||||||
| 
 | 
 | ||||||
|  | echo Webpack start | ||||||
|  | npm run webpack | ||||||
|  | echo Webpack finish | ||||||
|  | 
 | ||||||
| echo "Copying Trilium to build directory $DIR" | echo "Copying Trilium to build directory $DIR" | ||||||
| 
 | 
 | ||||||
| for d in 'images' 'libraries' 'src' 'db'; do | for d in 'images' 'libraries' 'src' 'db'; do | ||||||
|     cp -r "$d" "$DIR"/ |     cp -r "$d" "$DIR"/ | ||||||
| done | 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"/ |     cp "$f" "$DIR"/ | ||||||
| done | 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) | # 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 | if [[ -d "$DIR"/node_modules ]]; then | ||||||
| # cleanup of useless files in dependencies | # 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-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-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", |     "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-jasmine": "TRILIUM_DATA_DIR=~/trilium/data-test jasmine", | ||||||
|     "test-es6": "node -r esm spec-es6/attribute_parser.spec.js ", |     "test-es6": "node -r esm spec-es6/attribute_parser.spec.js ", | ||||||
|     "test": "npm run test-jasmine && npm run test-es6", |     "test": "npm run test-jasmine && npm run test-es6", | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| const path = require('path'); | import path = require('path'); | ||||||
| const assetPath = require('./src/services/asset_path'); | import assetPath = require('./src/services/asset_path'); | ||||||
| 
 | 
 | ||||||
| module.exports = { | module.exports = { | ||||||
|     mode: 'production', |     mode: 'production', | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Elian Doran
						Elian Doran