name: Build and Publish on Tag on: push: tags: - 'v*' permissions: contents: write jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: ['lts/*'] steps: - uses: actions/checkout@v5 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} - run: npm install - name: Run unit tests run: npx vitest run - run: npm i -g grunt-cli - run: grunt publish-windows: runs-on: windows-latest steps: - uses: actions/checkout@v5 - name: Set up Node.js uses: actions/setup-node@v6 with: node-version: 'lts/*' - name: Install dependencies run: npm install - name: Fix dependencies before run: node ./scripts/fix-packages-publish.js before - name: Publish Windows application run: npm run publish-windows env: GH_TOKEN: ${{ github.token }} GITHUB_TOKEN: ${{ github.token }} - name: Fix dependencies after run: node ./scripts/fix-packages-publish.js after - name: Upload Windows build to GitHub Release uses: softprops/action-gh-release@v2.5.0 with: tag_name: ${{ github.ref_name }} token: ${{ github.token }} fail_on_unmatched_files: true overwrite_files: true files: | dist/*.exe dist/*.blockmap dist/latest.yml package-and-release-macos: runs-on: macos-latest steps: - uses: actions/checkout@v5 - name: Set up Node.js uses: actions/setup-node@v6 with: node-version: 'lts/*' - name: Install dependencies run: npm install - name: Fix dependencies before run: node ./scripts/fix-packages-publish.js before - name: Build and package macOS app run: npm run publish-macos - name: Fix dependencies after run: node ./scripts/fix-packages-publish.js after - name: Upload macOS build to GitHub Release uses: softprops/action-gh-release@v2.5.0 with: tag_name: ${{ github.ref_name }} token: ${{ github.token }} fail_on_unmatched_files: true overwrite_files: true files: | dist/*.dmg dist/*.zip dist/*.blockmap dist/latest-mac.yml snap-arm64: runs-on: ubuntu-24.04-arm steps: - uses: actions/checkout@v5 - name: Set up Node.js uses: actions/setup-node@v6 with: node-version: 'lts/*' - name: Install dependencies run: | npm install rm -rf node_modules/cpu-features/ || true - name: Update apt and install snapcraft run: | sudo apt-get update sudo snap install snapcraft --classic - name: Fix dependencies before run: | node ./scripts/fix-packages-publish.js before node ./scripts/fix-packages-publish.js snap-before - name: Build arm64 snap env: SNAPCRAFT_BUILD_ENVIRONMENT: host run: npm run publish-electron-arm64 - name: Fix dependencies after run: | node ./scripts/fix-packages-publish.js snap-after node ./scripts/fix-packages-publish.js after - name: Upload arm64 snap to Snap Store env: SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }} run: | cd dist snapcraft upload --release=stable p3x-onenote_*_arm64.snap