diff --git a/.github/actions/build-server/action.yml b/.github/actions/build-server/action.yml index d296838a2..13984e2ce 100644 --- a/.github/actions/build-server/action.yml +++ b/.github/actions/build-server/action.yml @@ -28,4 +28,5 @@ runs: run: | mkdir -p upload file=$(find dist -name '*.tar.xz' -print -quit) - cp "$file" "upload/TriliumNextNotes-Server-${{ github.ref_name }}-${{ inputs.os }}-${{ inputs.arch }}.tar.xz" + name=${{ github.ref_name }} + cp "$file" "upload/TriliumNextNotes-Server-${name//\//-}-${{ inputs.os }}-${{ inputs.arch }}.tar.xz" diff --git a/.github/actions/report-size/action.yml b/.github/actions/report-size/action.yml new file mode 100644 index 000000000..e39b8bab3 --- /dev/null +++ b/.github/actions/report-size/action.yml @@ -0,0 +1,79 @@ +name: 'Bundle size reporter' +description: 'Post bundle size difference compared to another branch' +inputs: + branch: + description: 'Branch to compare to' + required: true + default: 'main' + paths: + description: + 'Paths to json file bundle size report or folder containing bundles' + required: true + default: '/' + onlyDiff: + description: 'Report only different sizes' + required: false + default: 'false' + filter: + description: 'Regex filter based on file path' + required: false + unit: + description: 'Size unit' + required: false + default: 'KB' + + # Comment inputs + comment: + description: 'Post comment' + required: false + default: 'true' + header: + description: 'Comment header' + required: false + default: 'Bundle size report' + append: + description: 'Append comment' + required: false + default: 'false' + ghToken: + description: 'Github token' + required: false + +runs: + using: 'composite' + steps: + # Checkout branch to compare to [required] + - name: Checkout base branch + uses: actions/checkout@v3 + with: + ref: ${{ inputs.branch }} + path: br-base + token: ${{ inputs.ghToken }} + + # Generate the bundle size difference report [required] + - name: Generate report + id: bundleSize + uses: nejcm/bundle-size-reporter-action@v1.4.1 + with: + paths: ${{ inputs.paths }} + onlyDiff: ${{ inputs.onlyDiff }} + filter: ${{ inputs.filter }} + unit: ${{ inputs.unit }} + + # Post github action summary + - name: Post summary + if: ${{ steps.bundleSize.outputs.hasDifferences == 'true' }} # post only in case of changes + run: | + echo '${{ steps.bundleSize.outputs.summary }}' >> $GITHUB_STEP_SUMMARY + shell: bash + + # Post github action comment + - name: Post comment + uses: marocchino/sticky-pull-request-comment@v2 + if: ${{ steps.bundleSize.outputs.hasDifferences == 'true' }} # post only in case of changes + with: + number: ${{ github.event.pull_request.number }} + header: ${{ inputs.header }} + append: ${{ inputs.append }} + message: '${{ steps.bundleSize.outputs.summary }}' + GITHUB_TOKEN: ${{ inputs.ghToken }} diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index e7bff39e9..2b1bb4c1f 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -15,7 +15,73 @@ env: IMAGE_NAME: ${{ github.repository_owner }}/notes TEST_TAG: ${{ github.repository_owner }}/notes:test +permissions: + pull-requests: write # for PR comments + jobs: + report-electron-size: + name: Report Electron size + runs-on: ubuntu-latest + steps: + - name: Checkout the repository + uses: actions/checkout@v4 + + - name: Set up node & dependencies + uses: actions/setup-node@v4 + with: + node-version: 22 + cache: "npm" + + - run: npm ci + + - name: Run the build + uses: ./.github/actions/build-electron + with: + os: linux + arch: x64 + shell: bash + forge_platform: linux + + - name: Run the Electron size report + uses: ./.github/actions/report-size + with: + paths: 'upload/**/*' + onlyDiff: 'true' + branch: 'develop' + header: 'Electron size report' + unit: "MB" + ghToken: ${{ secrets.GITHUB_TOKEN }} + report-server-size: + name: Report server size + runs-on: ubuntu-latest + steps: + - name: Checkout the repository + uses: actions/checkout@v4 + + - name: Set up node & dependencies + uses: actions/setup-node@v4 + with: + node-version: 22 + cache: "npm" + + - run: npm ci + + - name: Run the build + uses: ./.github/actions/build-server + with: + os: linux + arch: x64 + + - name: Run the server size report + uses: ./.github/actions/report-size + with: + paths: 'upload/**/*' + onlyDiff: 'true' + branch: 'develop' + header: 'Server size report' + unit: "MB" + ghToken: ${{ secrets.GITHUB_TOKEN }} + test_dev: name: Test development runs-on: ubuntu-latest diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 6c14f83bd..83b9c436c 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -83,3 +83,36 @@ jobs: with: name: TriliumNextNotes ${{ matrix.os.name }} ${{ matrix.arch }} path: upload + + nightly-server: + name: Deploy server nightly + strategy: + fail-fast: false + matrix: + arch: [x64, arm64] + include: + - arch: x64 + runs-on: ubuntu-latest + - arch: arm64 + runs-on: ubuntu-24.04-arm + runs-on: ${{ matrix.runs-on }} + steps: + - uses: actions/checkout@v4 + + - name: Run the build + uses: ./.github/actions/build-server + with: + os: linux + arch: ${{ matrix.arch }} + + - name: Publish release + uses: softprops/action-gh-release@v2 + if: ${{ github.event_name != 'pull_request' }} + with: + make_latest: false + prerelease: true + draft: false + fail_on_unmatched_files: true + files: upload/*.* + tag_name: nightly + name: Nightly Build diff --git a/.gitignore b/.gitignore index 672bffee8..438043e86 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ .DS_Store node_modules/ dist/ +upload/ build/ coverage/ src/public/app-dist/