name: Publish npm packages # # Npm packages are published for every new tag on: push: tags: - 'v*.*.*' jobs: build-and-pack: runs-on: ubuntu-latest name: Build and pack npm packages steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Set up environment uses: ./.github/actions/setup - name: Pack the core package run: | yarn workspace @actual-app/core pack --filename @actual-app/core.tgz - name: Build Web run: yarn build:server - name: Pack the web and server packages run: | yarn workspace @actual-app/web pack --filename @actual-app/web.tgz yarn workspace @actual-app/sync-server pack --filename @actual-app/sync-server.tgz - name: Build API run: yarn build:api - name: Pack the api package run: | yarn workspace @actual-app/api pack --filename @actual-app/api.tgz - name: Build CLI run: yarn workspace @actual-app/cli build - name: Pack the cli package run: | yarn workspace @actual-app/cli pack --filename @actual-app/cli.tgz - name: Upload package artifacts uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 with: name: npm-packages path: | packages/loot-core/@actual-app/core.tgz packages/desktop-client/@actual-app/web.tgz packages/sync-server/@actual-app/sync-server.tgz packages/api/@actual-app/api.tgz packages/cli/@actual-app/cli.tgz publish: runs-on: ubuntu-latest name: Publish npm packages needs: build-and-pack permissions: contents: read packages: write steps: - name: Download the artifacts uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: npm-packages - name: Setup node and npm registry uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: 22 registry-url: 'https://registry.npmjs.org' - name: Publish Core run: | npm publish loot-core/@actual-app/core.tgz --access public env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Publish Web run: | npm publish desktop-client/@actual-app/web.tgz --access public env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Publish Sync-Server run: | npm publish sync-server/@actual-app/sync-server.tgz --access public env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Publish API run: | npm publish api/@actual-app/api.tgz --access public env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Publish CLI run: | npm publish cli/@actual-app/cli.tgz --access public env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}