From 2d4376672be0dcc61c84ccdf9ece061b92d46e25 Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Tue, 30 Jun 2026 13:25:39 -0400 Subject: [PATCH] add Forgejo CI mirror and telemetry disclosure Mirrors .github/workflows/ci.yml to .forgejo/workflows/ for self-hosted runner on git.ariccamarata.com. Adds failure-reporting hook stub (server registration via nself sentry ci enable is a server-side step). Adds telemetry disclosure section to README. --- .forgejo/workflows/ci.yml | 138 ++++++++++++++++++++++++++++++++++++++ README.md | 4 ++ 2 files changed, 142 insertions(+) create mode 100644 .forgejo/workflows/ci.yml diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml new file mode 100644 index 00000000..c5e3a1cf --- /dev/null +++ b/.forgejo/workflows/ci.yml @@ -0,0 +1,138 @@ +# Forgejo CI mirror — git.ariccamarata.com +# Mirrors .github/workflows/ci.yml for the self-hosted Forgejo Actions runner. +# Keep in sync with the GitHub workflow; only addition is the nSentry failure step. +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + test: + name: Test (Node ${{ matrix.node }}) + runs-on: ubuntu-latest + strategy: + matrix: + node: [20, 22, 24] + steps: + - uses: actions/checkout@v4 + - name: Enable corepack + run: corepack enable + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node }} + cache: pnpm + - run: pnpm install --frozen-lockfile + - run: pnpm build + - run: node --test test.mjs + - run: node --test test-cjs.cjs + - name: Report failure to nSentry + if: failure() + run: | + # nself sentry ci enable must be run on the CamClaw server first. + # Once registered, the runner's nself-sentry-sync hook delivers this report + # to ~/Sites/acamarata/.claude/inbox via root@sentry-errors.ariccamarata.com. + echo "CI_FAILURE repo=${{ github.repository }} job=${{ github.job }} run=${{ github.run_id }}" >&2 + + lint: + name: Lint & Format + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Enable corepack + run: corepack enable + - uses: actions/setup-node@v4 + with: + node-version: 24 + cache: pnpm + - run: pnpm install --frozen-lockfile + - run: pnpm run lint + - run: pnpm run format:check + - name: Report failure to nSentry + if: failure() + run: | + # nself sentry ci enable must be run on the CamClaw server first. + # Once registered, the runner's nself-sentry-sync hook delivers this report + # to ~/Sites/acamarata/.claude/inbox via root@sentry-errors.ariccamarata.com. + echo "CI_FAILURE repo=${{ github.repository }} job=${{ github.job }} run=${{ github.run_id }}" >&2 + + typecheck: + name: Typecheck + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Enable corepack + run: corepack enable + - uses: actions/setup-node@v4 + with: + node-version: 24 + cache: pnpm + - run: pnpm install --frozen-lockfile + - run: pnpm run typecheck + - name: Report failure to nSentry + if: failure() + run: | + # nself sentry ci enable must be run on the CamClaw server first. + # Once registered, the runner's nself-sentry-sync hook delivers this report + # to ~/Sites/acamarata/.claude/inbox via root@sentry-errors.ariccamarata.com. + echo "CI_FAILURE repo=${{ github.repository }} job=${{ github.job }} run=${{ github.run_id }}" >&2 + + pack-check: + name: Pack check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Enable corepack + run: corepack enable + - uses: actions/setup-node@v4 + with: + node-version: 24 + cache: pnpm + - run: pnpm install --frozen-lockfile + - run: pnpm build + - name: Verify pack contents + run: | + PACK=$(npm pack --dry-run 2>&1) + echo "$PACK" + for f in dist/index.cjs dist/index.mjs dist/index.d.ts dist/index.d.mts README.md LICENSE CHANGELOG.md; do + echo "$PACK" | grep -q "$f" || (echo "Missing: $f" && exit 1) + done + echo "$PACK" | grep -q "src/" && (echo "ERROR: src/ should not be in pack" && exit 1) || true + echo "Pack check passed" + - name: Report failure to nSentry + if: failure() + run: | + # nself sentry ci enable must be run on the CamClaw server first. + # Once registered, the runner's nself-sentry-sync hook delivers this report + # to ~/Sites/acamarata/.claude/inbox via root@sentry-errors.ariccamarata.com. + echo "CI_FAILURE repo=${{ github.repository }} job=${{ github.job }} run=${{ github.run_id }}" >&2 + + coverage: + name: Coverage + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Enable corepack + run: corepack enable + - uses: actions/setup-node@v4 + with: + node-version: 24 + cache: pnpm + - run: pnpm install --frozen-lockfile + - run: pnpm build + - run: pnpm run coverage + - name: Upload to Codecov + uses: codecov/codecov-action@v4 + with: + files: ./coverage/lcov.info + token: ${{ secrets.CODECOV_TOKEN }} + fail_ci_if_error: false + - name: Report failure to nSentry + if: failure() + run: | + # nself sentry ci enable must be run on the CamClaw server first. + # Once registered, the runner's nself-sentry-sync hook delivers this report + # to ~/Sites/acamarata/.claude/inbox via root@sentry-errors.ariccamarata.com. + echo "CI_FAILURE repo=${{ github.repository }} job=${{ github.job }} run=${{ github.run_id }}" >&2 diff --git a/README.md b/README.md index 69a42cdf..68645a74 100644 --- a/README.md +++ b/README.md @@ -58,3 +58,7 @@ Images are in the public domain per NASA's [media usage guidelines](https://www. ## License MIT. See [LICENSE](LICENSE) for the full text. + +## Telemetry + +This package supports optional, anonymous usage telemetry via [`@acamarata/telemetry`](https://github.com/acamarata/telemetry). It is **off by default**. See [TELEMETRY.md](https://github.com/acamarata/telemetry/blob/main/TELEMETRY.md) for what is collected and how to enable or disable it. \ No newline at end of file