name: Test and Release # Run this job on all pushes and pull requests # as well as tags with a semantic version on: push: branches: - "master" tags: # normal versions - "v[0-9]+.[0-9]+.[0-9]+" # pre-releases - "v[0-9]+.[0-9]+.[0-9]+-**" pull_request: {} # Cancel previous PR/branch runs when a new commit is pushed concurrency: group: ${{ github.ref }} cancel-in-progress: true jobs: # Performs quick checks before the expensive test runs check-and-lint: if: contains(github.event.head_commit.message, '[skip ci]') == false runs-on: ubuntu-latest steps: - uses: ioBroker/testing-action-check@v1 with: node-version: '24.x' lint: true adapter-tests: needs: [check-and-lint] if: contains(github.event.head_commit.message, '[skip ci]') == false runs-on: ${{ matrix.os }} strategy: matrix: node-version: [20.x, 22.x, 24.x] os: [ubuntu-latest, windows-latest, macos-latest] steps: - uses: ioBroker/testing-action-adapter@v1 with: node-version: ${{ matrix.node-version }} os: ${{ matrix.os }} build: true deploy: needs: [check-and-lint, adapter-tests] # Permissions are required to create GitHub releases and npm trusted publishing permissions: contents: write id-token: write if: | contains(github.event.head_commit.message, '[skip ci]') == false && github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') runs-on: ubuntu-latest steps: - uses: ioBroker/testing-action-deploy@v1 with: node-version: '24.x' github-token: ${{ secrets.GITHUB_TOKEN }} build: true