diff --git a/.github/workflows/monograph.publish.yml b/.github/workflows/monograph.publish.yml new file mode 100644 index 000000000..acffe5dd7 --- /dev/null +++ b/.github/workflows/monograph.publish.yml @@ -0,0 +1,83 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +# GitHub recommends pinning actions to a commit SHA. +# To get a newer version, you will need to update the SHA. +# You can also reference a tag or branch, but the action may change without warning. + +name: Publish @notesnook/monograph + +on: workflow_dispatch + +jobs: + push_to_registry: + name: Push Docker image to Docker Hub + runs-on: ubuntu-latest + permissions: + packages: write + contents: read + attestations: write + id-token: write + steps: + - name: Check out the repo + uses: actions/checkout@v4 + + - name: Setup Node + uses: ./.github/actions/setup-node-with-cache + + - name: Install packages + run: | + npm ci --ignore-scripts --prefer-offline --no-audit + npm run bootstrap -- --scope=monograph + + - name: Generate build + run: npx nx build @notesnook/monograph + + # Setup Buildx + - name: Docker Setup Buildx + uses: docker/setup-buildx-action@v3 + with: + platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v8 + + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + ecr: auto + logout: true + + # Pull previous image from docker hub to use it as cache to improve the image build time. + - name: docker pull cache image + continue-on-error: true + run: docker pull streetwriters/monograph:latest + + # Setup QEMU + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: streetwriters/monograph + + - name: Build and push Docker image + id: push + uses: docker/build-push-action@v6 + with: + context: apps/monograph + file: apps/monograph/Dockerfile + push: true + platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v8 + tags: ${{ steps.meta.outputs.tags }} + cache-from: streetwriters/monograph:latest + + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 + with: + subject-name: index.docker.io/streetwriters/monograph + subject-digest: ${{ steps.push.outputs.digest }} + push-to-registry: true diff --git a/apps/monograph/package-lock.json b/apps/monograph/package-lock.json index 87c023b90..63dccbda5 100644 --- a/apps/monograph/package-lock.json +++ b/apps/monograph/package-lock.json @@ -1,11 +1,11 @@ { - "name": "monograph", + "name": "@notesnook/monograph", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "monograph", + "name": "@notesnook/monograph", "version": "1.0.0", "dependencies": { "@emotion/cache": "11.11.0", diff --git a/apps/monograph/package.json b/apps/monograph/package.json index f111cd57d..6af61d2bb 100644 --- a/apps/monograph/package.json +++ b/apps/monograph/package.json @@ -1,5 +1,5 @@ { - "name": "monograph", + "name": "@notesnook/monograph", "version": "1.0.0", "private": true, "sideEffects": false, diff --git a/scripts/bootstrap.mjs b/scripts/bootstrap.mjs index c7ce59863..6f4088433 100644 --- a/scripts/bootstrap.mjs +++ b/scripts/bootstrap.mjs @@ -31,6 +31,7 @@ const THREADS = Math.max(4, process.env.THREADS || os.cpus().length / 2); const scopes = { mobile: "apps/mobile", web: "apps/web", + monograph: "apps/monograph", vericrypt: "apps/vericrypt", desktop: "apps/desktop", core: "packages/core",