diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d731cb43..20f64f4a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,18 +3,25 @@ name: Node.js CI env: - NODE_VERSION: "20.x" + NODE_VERSION: "24" on: [push] +permissions: + # Required for OIDC token for NPM Trusted Publishers. + # See https://docs.github.com/en/actions/concepts/security/openid-connect + # and https://docs.npmjs.com/trusted-publishers. + id-token: write + contents: read + jobs: lint: name: ✅ Lint runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 #4.3.1 - name: Setup Node - uses: actions/setup-node@v4 + uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 #v6.2.0 with: node-version: ${{env.NODE_VERSION}} - run: npm ci @@ -23,9 +30,9 @@ jobs: name: Unit Test runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 #4.3.1 - name: Setup Node - uses: actions/setup-node@v4 + uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 #v6.2.0 with: node-version: ${{env.NODE_VERSION}} - run: npm ci @@ -34,9 +41,9 @@ jobs: name: Type Check runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 #4.3.1 - name: Setup Node - uses: actions/setup-node@v4 + uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 #v6.2.0 with: node-version: ${{env.NODE_VERSION}} - run: npm ci @@ -49,8 +56,8 @@ jobs: needs: [lint, typeCheck, test] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 #4.3.1 + - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 #v6.2.0 with: node-version: ${{env.NODE_VERSION}} - run: npm ci @@ -70,13 +77,12 @@ jobs: needs: [lint, typeCheck, test] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 #4.3.1 + - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 #v6.2.0 with: node-version: ${{env.NODE_VERSION}} registry-url: https://registry.npmjs.org/ + package-manager-cache: false # Do not cache when publishing to prevent cache pollution attacks - run: npm ci - run: npm run build - - run: npm publish - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - run: npm publish --provenance # Provenance required for Trusted Publishers