name: build-and-publish on: push: branches: [main] tags: ['v*'] workflow_dispatch: jobs: build-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 - uses: pnpm/action-setup@v4 with: version: 11.7.0 - run: pnpm install --frozen-lockfile - run: pnpm install vitest - run: pnpm -r build - run: pnpm test - run: pnpm -r pack publish: if: startsWith(github.ref, 'refs/tags/v') needs: build-test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 - uses: pnpm/action-setup@v4 with: version: 11.7.0 - run: pnpm install --frozen-lockfile - run: pnpm -r build - name: Authenticate to Gitea npm registry run: | printf '//git.byte-mate.ru/api/packages/Coder/npm/:_authToken=%s\n' "${{ secrets.NPM_TOKEN }}" >> "$HOME/.npmrc" - name: Publish unpublished packages env: GITEA_NPM_TOKEN: ${{ secrets.NPM_TOKEN }} run: | node scripts/check-published.mjs > .unpublished while IFS= read -r pkg; do [ -z "$pkg" ] && continue echo "Publishing $pkg" pnpm --filter "$pkg" publish --no-git-checks done < .unpublished