From 38d8cf3d6d5a45a5cf0b9b1b1cc833bd0624af10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltr=C3=A1n?= Date: Fri, 12 Jan 2024 12:26:02 +0100 Subject: [PATCH 1/4] chore: add ci workflow --- .github/workflows/ci.yml | 23 ++++++++++++ .github/workflows/verifications.yml | 55 +++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/verifications.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..7803a1f7 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,23 @@ +name: CI + +on: + pull_request: + merge_group: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + validations: + name: Run validations + uses: ./.github/workflows/verifications.yml + + required-checks: + name: Require CI status checks + runs-on: ubuntu-latest + if: ${{ !cancelled() && github.event.action != 'closed' }} + needs: [validations] + steps: + - run: ${{ !contains(needs.*.result, 'failure') }} + - run: ${{ !contains(needs.*.result, 'cancelled') }} diff --git a/.github/workflows/verifications.yml b/.github/workflows/verifications.yml new file mode 100644 index 00000000..d2fbf176 --- /dev/null +++ b/.github/workflows/verifications.yml @@ -0,0 +1,55 @@ +name: Verifications + +on: + workflow_call: + +jobs: + code-validation: + name: 'Code Validation: ${{ matrix.validation-script }}' + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + validation-script: + ['lint', 'type-check', 'format:check', 'generate-all:check'] + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Node + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + + - name: Install dependencies + uses: bahmutov/npm-install@v1 + + - name: Run script + run: npm run ${{ matrix.validation-script }} + + tests: + name: Tests (Node v${{ matrix.node }} - ESLint v${{ matrix.eslint }}) + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + # The .x indicates "the most recent one" + node: [19.x, 18.x, 17.x, 16.x, 14.x, 14.17.0, 12.x, 12.22.0] + eslint: [7.5, 7, 8] + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Node + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node }} + + - name: Install dependencies + uses: bahmutov/npm-install@v1 + + - name: Install ESLint v${{ matrix.eslint }} + run: npm install --no-save --force eslint@${{ matrix.eslint }} + + - name: Run tests + run: npm run test:ci From e98fa0ac05c7845661c3689ffea431aefa3972b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltr=C3=A1n?= Date: Fri, 12 Jan 2024 12:33:04 +0100 Subject: [PATCH 2/4] chore: add release workflow --- .github/workflows/release.yml | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..f6f6bfdd --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,43 @@ +name: Release + +on: + push: + branches: + # semantic-release valid branches + - '+([0-9])?(.{+([0-9]),x}).x' + - 'main' + - 'next' + - 'next-major' + - 'beta' + - 'alpha' + +concurrency: + group: release + cancel-in-progress: false + +jobs: + publish: + name: Publish NPM package + runs-on: ubuntu-latest + # Avoid publishing in forks + if: github.repository == 'testing-library/eslint-plugin-testing-library' + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Node + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + + - name: Install dependencies + uses: bahmutov/npm-install@v1 + + - name: Build package + run: npm run build + + - name: Release new version + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_AUTOMATION_TOKEN }} + run: npx semantic-release From b0d0e371b648db8be354ff97e571cefb31465f87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltr=C3=A1n?= Date: Fri, 12 Jan 2024 12:34:31 +0100 Subject: [PATCH 3/4] chore: remove old pipeline workflow --- .github/workflows/pipeline.yml | 109 --------------------------------- 1 file changed, 109 deletions(-) delete mode 100644 .github/workflows/pipeline.yml diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml deleted file mode 100644 index 1a253d40..00000000 --- a/.github/workflows/pipeline.yml +++ /dev/null @@ -1,109 +0,0 @@ -name: Pipeline - -on: - push: - branches: - # semantic-release valid branches and all-contributors branches - - '+([0-9])?(.{+([0-9]),x}).x' - - 'main' - - 'next' - - 'next-major' - - 'beta' - - 'alpha' - - 'all-contributors/**' - pull_request: - types: [opened, synchronize] - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - code_validation: - name: 'Code Validation: ${{ matrix.validation_script }}' - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - validation_script: - ['lint', 'type-check', 'format:check', 'generate-all:check'] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Use Node - uses: actions/setup-node@v4 - with: - node-version-file: '.nvmrc' - - - name: Install dependencies - uses: bahmutov/npm-install@v1 - with: - useLockFile: false - - - name: Run script - run: npm run ${{ matrix.validation_script }} - - tests: - name: Tests (Node v${{ matrix.node }} - ESLint v${{ matrix.eslint }}) - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - # The .x indicates "the most recent one" - node: [19.x, 18.x, 17.x, 16.x, 14.x, 14.17.0, 12.x, 12.22.0] - eslint: [7.5, 7, 8] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Use Node - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node }} - - - name: Install dependencies - uses: bahmutov/npm-install@v1 - with: - useLockFile: false - - - name: Install ESLint v${{ matrix.eslint }} - run: npm install --no-save --force eslint@${{ matrix.eslint }} - - - name: Run tests - run: npm run test:ci - - release: - name: NPM Release - needs: [code_validation, tests] - runs-on: ubuntu-latest - if: - ${{ github.repository == 'testing-library/eslint-plugin-testing-library' && - contains('refs/heads/main,refs/heads/beta,refs/heads/next,refs/heads/alpha', - github.ref) && github.event_name == 'push' }} - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Use Node - uses: actions/setup-node@v4 - with: - node-version-file: '.nvmrc' - - - name: Install dependencies - uses: bahmutov/npm-install@v1 - with: - useLockFile: false - - - name: Build package - run: npm run build - - - name: Release the new version to NPM - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NPM_TOKEN: ${{ secrets.NPM_AUTOMATION_TOKEN }} - run: npx semantic-release From 72d99d39aac9d1620774006fcbe60928a5911cf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltr=C3=A1n?= Date: Fri, 12 Jan 2024 13:01:55 +0100 Subject: [PATCH 4/4] chore: update verifications references --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7803a1f7..970bb07c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,15 +9,15 @@ concurrency: cancel-in-progress: true jobs: - validations: - name: Run validations + verifications: + name: Verifications uses: ./.github/workflows/verifications.yml required-checks: name: Require CI status checks runs-on: ubuntu-latest if: ${{ !cancelled() && github.event.action != 'closed' }} - needs: [validations] + needs: [verifications] steps: - run: ${{ !contains(needs.*.result, 'failure') }} - run: ${{ !contains(needs.*.result, 'cancelled') }}