name: Build
on: [push]

env:
  CI_BUILD_NUM: ${{ github.run_id }}
  CI_BRANCH: ${{ github.ref_name }}

jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
        with:
          persist-credentials: false
      - name: Use Node.js 24.x
        uses: actions/setup-node@v6
        with:
          node-version: '24.x'
      - run: npm ci
      - run: npm run test-ci
      - uses: codecov/codecov-action@v5
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
      - name: Semantic Release (Dry Run)
        run: npm run semantic-release-dry
        env:
          GITHUB_TOKEN: ${{ secrets.ADOBE_BOT_GITHUB_TOKEN }}
          NPM_TOKEN: ${{ secrets.ADOBE_BOT_NPM_TOKEN }}
          SLACK_TOKEN: ${{ secrets.SLACK_TOKEN }}
          SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}

  release:
    name: Release
    runs-on: ubuntu-latest
    needs: test
    if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/1.x' || github.ref == 'refs/heads/prerelease'
    permissions:
      contents: write
      issues: write
      pull-requests: write
      id-token: write # needed for npm trusted publishers with OIDC
    steps:
      - uses: actions/checkout@v5
        with:
          persist-credentials: false
      - name: Use Node.js 24.x
        uses: actions/setup-node@v6
        with:
          node-version: '24.x'
      - run: npm ci
      - run: npm run semantic-release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NPM_TOKEN: ${{ secrets.ADOBE_BOT_NPM_TOKEN }}
          SLACK_TOKEN: ${{ secrets.SLACK_TOKEN }}
          SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}