name: Hubot Slack Adapter CI Builds
on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]
permissions:
  contents: write
  issues: write
  pull-requests: write
  id-token: write
jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version:
          - '24.x'
    steps:
      - name: Checkout
        uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - name: Setup Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v6
        with:
          node-version: ${{ matrix.node-version }}
          cache: 'npm'
      - name: Install dependencies
        run: npm ci
      - name: Install hubot
        run: npm i hubot
      - name: Verify the integrity of provenance attestations and registry signatures for installed dependencies
        run: npm audit signatures
  test:
    name: Fast Tests
    runs-on: ubuntu-latest
    needs: build
    strategy:
      matrix:
        node-version:
          - '24.x'
    steps:
      - name: Checkout
        uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - name: Setup Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v6
        with:
          node-version: ${{ matrix.node-version }}
          cache: 'npm'
      - run: npm ci
      - run: npm i hubot
      - run: npm test
  release:
    needs: [build, test]
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version:
          - 22.14.0
    if: ${{ github.ref == 'refs/heads/main' && success() }}
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Set up Node.js
        uses: actions/setup-node@v6
        with:
          node-version: ${{ matrix.node-version }}
          cache: 'npm'
          registry-url: 'https://registry.npmjs.org'
      - name: Release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: npx semantic-release
