name: Dev on: push: branches: [ develop ] pull_request: branches: [ develop ] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: GHCR_REGISTRY: ghcr.io DOCKERHUB_REGISTRY: docker.io 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 - uses: pnpm/action-setup@v4 - name: Set up node & dependencies uses: actions/setup-node@v4 with: node-version: 22 cache: 'pnpm' - name: Install dependencies run: pnpm install --frozen-lockfile - 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 - uses: pnpm/action-setup@v4 - name: Set up node & dependencies uses: actions/setup-node@v4 with: node-version: 22 cache: "pnpm" - run: pnpm install --frozen-lockfile - 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 steps: - name: Checkout the repository uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 - name: Set up node & dependencies uses: actions/setup-node@v4 with: node-version: 22 cache: "pnpm" - run: pnpm install --frozen-lockfile - name: Run the unit tests run: pnpm run test build_docker: name: Build Docker image runs-on: ubuntu-latest needs: - test_dev steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 - name: Install dependencies run: pnpm install --frozen-lockfile - name: Update build info run: pnpm run chore:update-build-info - name: Trigger build run: pnpm nx run server:build - uses: docker/setup-buildx-action@v3 - uses: docker/build-push-action@v6 with: context: apps/server cache-from: type=gha cache-to: type=gha,mode=max test_docker: name: Check Docker build runs-on: ubuntu-latest needs: - build_docker strategy: matrix: include: - dockerfile: Dockerfile.alpine - dockerfile: Dockerfile steps: - name: Checkout the repository uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 - name: Install dependencies run: pnpm install --frozen-lockfile - name: Update build info run: pnpm run chore:update-build-info - name: Trigger build run: pnpm nx run server:build - name: Set IMAGE_NAME to lowercase run: echo "IMAGE_NAME=${IMAGE_NAME,,}" >> $GITHUB_ENV - name: Set TEST_TAG to lowercase run: echo "TEST_TAG=${TEST_TAG,,}" >> $GITHUB_ENV - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build and export to Docker uses: docker/build-push-action@v6 with: context: apps/server file: apps/server/${{ matrix.dockerfile }} load: true tags: ${{ env.TEST_TAG }} cache-from: type=gha cache-to: type=gha,mode=max - name: Validate container run output run: | CONTAINER_ID=$(docker run -d --log-driver=journald --rm --name trilium_local ${{ env.TEST_TAG }}) echo "Container ID: $CONTAINER_ID" - name: Wait for the healthchecks to pass uses: stringbean/docker-healthcheck-action@v3 with: container: trilium_local wait-time: 50 require-status: running require-healthy: true # Print the entire log of the container thus far, regardless if the healthcheck failed or succeeded - name: Print entire log if: always() run: journalctl -u docker CONTAINER_NAME=trilium_local --no-pager