diff --git a/.editorconfig b/.editorconfig index 2ec3ed9fa..c0aba9b74 100644 --- a/.editorconfig +++ b/.editorconfig @@ -15,3 +15,9 @@ indent_size = 2 indent_style = space insert_final_newline = true trim_trailing_whitespace = true + +[*.yml] +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true \ No newline at end of file diff --git a/.github/actions/build-electron/action.yml b/.github/actions/build-electron/action.yml new file mode 100644 index 000000000..f9dd2ffa5 --- /dev/null +++ b/.github/actions/build-electron/action.yml @@ -0,0 +1,34 @@ +inputs: + os: + description: "One of the supported platforms: macos, linux, windows" + required: true + arch: + description: "The architecture to build for: x64, arm64" + required: true + extension: + description: "Platform specific extension to build: dmg, deb, exe" + required: true +runs: + using: composite + steps: + - name: Set up Python for appdmg to be installed + if: ${{ inputs.os == 'macos' }} + shell: bash + run: brew install python-setuptools + - name: Install dependencies + shell: bash + run: npm ci + - name: Update build info + shell: bash + run: npm run update-build-info + - name: Run electron-forge + shell: bash + run: npm run make-electron -- --arch=${{ inputs.arch }} + - name: Prepare artifacts + shell: bash + run: | + mkdir -p upload + file=$(find out/make -name '*.zip' -print -quit) + cp "$file" "upload/TriliumNextNotes-${{ github.ref_name }}-${{ inputs.os }}-${{ inputs.arch }}.zip" + file=$(find out/make -name '*.${{ matrix.os.extension }}' -print -quit) + cp "$file" "upload/TriliumNextNotes-${{ github.ref_name }}-${{ inputs.os }}-${{ inputs.arch }}.${{ matrix.os.extension }}" \ No newline at end of file diff --git a/.github/actions/build-server/action.yml b/.github/actions/build-server/action.yml new file mode 100644 index 000000000..162116e87 --- /dev/null +++ b/.github/actions/build-server/action.yml @@ -0,0 +1,28 @@ +inputs: + arch: + description: "The architecture to build for: x64, arm64" + required: true +runs: + using: composite + steps: + - name: Set up node & dependencies + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: "npm" + - name: Install dependencies + shell: bash + run: npm ci + - name: Run Linux server build + env: + MATRIX_ARCH: ${{ inputs.arch }} + shell: bash + run: | + npm run update-build-info + ./bin/build-server.sh + - name: Prepare artifacts + shell: bash + run: | + mkdir -p upload + file=$(find dist -name '*.tar.xz' -print -quit) + cp "$file" "upload/TriliumNextNotes-linux-${{ inputs.arch }}-${{ github.ref_name }}.tar.xz" diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0b20762de..0a852bcd4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -7,7 +7,7 @@ on: paths-ignore: - "docs/**" - ".github/workflows/main-docker.yml" - workflow_dispatch: + workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -37,31 +37,12 @@ jobs: uses: actions/setup-node@v4 with: node-version: 20 - - name: Set up Python for appdmg to be installed - if: ${{ matrix.os.name == 'macos' }} - run: brew install python-setuptools - - name: Install dependencies - run: npm ci - - name: Update build info - run: npm run update-build-info - - name: Run electron-forge - run: npm run make-electron -- --arch=${{ matrix.arch }} - - name: Prepare artifacts (Unix) - if: runner.os != 'windows' - run: | - mkdir -p upload - file=$(find out/make -name '*.zip' -print -quit) - cp "$file" "upload/TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}-${{ github.ref_name }}.zip" - file=$(find out/make -name '*.${{ matrix.os.extension }}' -print -quit) - cp "$file" "upload/TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}-${{ github.ref_name }}.${{ matrix.os.extension }}" - - name: Prepare artifacts (Windows) - if: runner.os == 'windows' - run: | - mkdir upload - $file = Get-ChildItem -Path out/make -Filter '*.zip' -Recurse | Select-Object -First 1 - Copy-Item -Path $file.FullName -Destination "upload/TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}-${{ github.ref_name }}.zip" - $file = Get-ChildItem -Path out/make -Filter '*.${{ matrix.os.extension }}' -Recurse | Select-Object -First 1 - Copy-Item -Path $file.FullName -Destination "upload/TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}-${{ github.ref_name }}.${{ matrix.os.extension }}" + - name: Run the build + uses: ./.github/actions/build-electron + with: + os: ${{ matrix.os.name }} + arch: ${{ matrix.arch }} + extension: ${{ matrix.os.extension }} - name: Publish artifacts uses: actions/upload-artifact@v4 with: @@ -86,24 +67,10 @@ jobs: runs-on: ${{ matrix.runs-on }} steps: - uses: actions/checkout@v4 - - name: Set up node & dependencies - uses: actions/setup-node@v4 + - name: Run the build + uses: ./.github/actions/build-server with: - node-version: 20 - cache: "npm" - - name: Install dependencies - run: npm ci - - name: Run Linux server build - env: - MATRIX_ARCH: ${{ matrix.arch }} - run: | - npm run update-build-info - ./bin/build-server.sh - - name: Prepare artifacts - run: | - mkdir -p upload - file=$(find dist -name '*.tar.xz' -print -quit) - cp "$file" "upload/TriliumNextNotes-linux-${{ matrix.arch }}-${{ github.ref_name }}.tar.xz" + arch: ${{ matrix.arch }} - uses: actions/upload-artifact@v4 with: name: TriliumNextNotes linux server ${{ matrix.arch }} diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 2378d9f46..e3d98817c 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -12,7 +12,7 @@ permissions: contents: write jobs: nightly-electron: - name: Deploy nightly + name: Deploy nightly strategy: fail-fast: false matrix: @@ -27,52 +27,21 @@ jobs: - name: windows image: windows-latest extension: exe - runs-on: ${{ matrix.os.image }} + runs-on: ${{ matrix.os.image }} steps: - uses: actions/checkout@v4 - name: Set up node & dependencies uses: actions/setup-node@v4 with: node-version: 20 - - name: Set up Python for appdmg to be installed - if: ${{ matrix.os.name == 'macos' }} - run: brew install python-setuptools - - name: Install dependencies - run: npm ci - - name: Update build info - run: npm run update-build-info - name: Update nightly version run: npm run ci-update-nightly-version - - name: Run electron-forge - run: npm run make-electron -- --arch=${{ matrix.arch }} - - name: Prepare artifacts (Unix) - if: runner.os != 'windows' - run: | - mkdir -p upload - file=$(find out/make -name '*.zip' -print -quit) - cp "$file" "upload/TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}.zip" - file=$(find out/make -name '*.${{ matrix.os.extension }}' -print -quit) - cp "$file" "upload/TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}.${{ matrix.os.extension }}" - - name: Prepare artifacts (Windows) - if: runner.os == 'windows' - run: | - mkdir upload - $file = Get-ChildItem -Path out/make -Filter '*.zip' -Recurse | Select-Object -First 1 - Copy-Item -Path $file.FullName -Destination "upload/TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}.zip" - $file = Get-ChildItem -Path out/make -Filter '*.${{ matrix.os.extension }}' -Recurse | Select-Object -First 1 - Copy-Item -Path $file.FullName -Destination "upload/TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}.${{ matrix.os.extension }}" - - name: Publish artifacts - uses: actions/upload-artifact@v4 + - name: Run the build + uses: ./.github/actions/build-electron with: - name: TriliumNextNotes ${{ matrix.os.name }} ${{ matrix.arch }} - path: upload/*.zip - overwrite: true - - name: Publish installer artifacts - uses: actions/upload-artifact@v4 - with: - name: TriliumNextNotes ${{ matrix.os.name }} ${{ matrix.arch }} - path: upload/*.${{ matrix.os.extension }} - overwrite: true + os: ${{ matrix.os.name }} + arch: ${{ matrix.arch }} + extension: ${{ matrix.os.extension }} - name: Deploy release uses: WebFreak001/deploy-nightly@v3.2.0 @@ -82,6 +51,7 @@ jobs: asset_path: upload/TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}.zip # path to archive to upload asset_name: TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}-nightly.zip # name to upload the release as, use $$ to insert date (YYYYMMDD) and 6 letter commit hash asset_content_type: application/zip # required by GitHub API + - name: Deploy installer release uses: WebFreak001/deploy-nightly@v3.2.0 with: @@ -104,28 +74,11 @@ jobs: runs-on: ${{ matrix.runs-on }} steps: - uses: actions/checkout@v4 - - name: Set up node & dependencies - uses: actions/setup-node@v4 + + - name: Run the build + uses: ./.github/actions/build-server with: - node-version: 20 - cache: "npm" - - name: Install dependencies - run: npm ci - - name: Run Linux server build - env: - MATRIX_ARCH: ${{ matrix.arch }} - run: | - npm run update-build-info - ./bin/build-server.sh - - name: Prepare artifacts - run: | - mkdir -p upload - file=$(find dist -name '*.tar.xz' -print -quit) - cp "$file" "upload/TriliumNextNotes-linux-${{ matrix.arch }}-${{ github.ref_name }}.tar.xz" - - uses: actions/upload-artifact@v4 - with: - name: TriliumNextNotes linux server ${{ matrix.arch }} - path: upload/TriliumNextNotes-linux-${{ matrix.arch }}-${{ github.ref_name }}.tar.xz + arch: ${{ matrix.arch }} - name: Deploy release uses: WebFreak001/deploy-nightly@v3.2.0 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8ea938236..06aefbefb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,7 @@ on: push: tags: - "v*" - workflow_dispatch: + workflow_dispatch: permissions: contents: write concurrency: @@ -34,31 +34,12 @@ jobs: uses: actions/setup-node@v4 with: node-version: 20 - - name: Set up Python for appdmg to be installed - if: ${{ matrix.os.name == 'macos' }} - run: brew install python-setuptools - - name: Install dependencies - run: npm ci - - name: Update build info - run: npm run update-build-info - - name: Run electron-forge - run: npm run make-electron -- --arch=${{ matrix.arch }} - - name: Prepare artifacts (Unix) - if: runner.os != 'windows' - run: | - mkdir -p upload - file=$(find out/make -name '*.zip' -print -quit) - cp "$file" "upload/TriliumNextNotes-${{ github.ref_name }}-${{ matrix.os.name }}-${{ matrix.arch }}.zip" - file=$(find out/make -name '*.${{ matrix.os.extension }}' -print -quit) - cp "$file" "upload/TriliumNextNotes-${{ github.ref_name }}-${{ matrix.os.name }}-${{ matrix.arch }}.${{ matrix.os.extension }}" - - name: Prepare artifacts (Windows) - if: runner.os == 'windows' - run: | - mkdir upload - $file = Get-ChildItem -Path out/make -Filter '*.zip' -Recurse | Select-Object -First 1 - Copy-Item -Path $file.FullName -Destination "upload/TriliumNextNotes-${{ github.ref_name }}-${{ matrix.os.name }}-${{ matrix.arch }}.zip" - $file = Get-ChildItem -Path out/make -Filter '*.${{ matrix.os.extension }}' -Recurse | Select-Object -First 1 - Copy-Item -Path $file.FullName -Destination "upload/TriliumNextNotes-${{ github.ref_name }}-${{ matrix.os.name }}-${{ matrix.arch }}.${{ matrix.os.extension }}" + - name: Run the build + uses: ./.github/actions/build-electron + with: + os: ${{ matrix.os.name }} + arch: ${{ matrix.arch }} + extension: ${{ matrix.os.extension }} - name: Publish release uses: softprops/action-gh-release@v2 with: @@ -79,27 +60,15 @@ jobs: runs-on: ${{ matrix.runs-on }} steps: - uses: actions/checkout@v4 - - name: Set up node & dependencies - uses: actions/setup-node@v4 + + - name: Run the build + uses: ./.github/actions/build-server with: - node-version: 20 - cache: "npm" - - name: Install dependencies - run: npm ci - - name: Run Linux server build - env: - MATRIX_ARCH: ${{ matrix.arch }} - run: | - npm run update-build-info - ./bin/build-server.sh - - name: Prepare artifacts - run: | - mkdir -p upload - file=$(find dist -name '*.tar.xz' -print -quit) - cp "$file" "upload/TriliumNextNotes-linux-${{ matrix.arch }}-${{ github.ref_name }}.tar.xz" + arch: ${{ matrix.arch }} + - name: Publish release uses: softprops/action-gh-release@v2 with: draft: true fail_on_unmatched_files: true - files: upload/*.* \ No newline at end of file + files: upload/*.*