diff --git a/.github/workflows/plugins-ci-elasticsearch.yml b/.github/workflows/plugins-ci-elasticsearch.yml new file mode 100644 index 0000000..afb019f --- /dev/null +++ b/.github/workflows/plugins-ci-elasticsearch.yml @@ -0,0 +1,145 @@ +name: Plugin CI - Elasticsearch + +on: + workflow_call: + inputs: + auto-merge-exclude: + description: 'A semicolon seperated list of packages that you do not want to be auto-merged.' + required: false + default: 'fastify' + type: string + license-check: + description: 'Check licenses' + required: false + type: boolean + default: false + license-check-allowed-additional: + description: 'A semicolon seperated list of additional licenses to allow.' + required: false + type: string + default: '' + lint: + description: 'Set to true to run linting scripts.' + required: false + default: false + type: boolean + +jobs: + dependency-review: + name: Dependency Review + if: github.event_name == 'pull_request' + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Check out repo + uses: actions/checkout@v4 + with: + persist-credentials: false + + - name: Dependency review + uses: actions/dependency-review-action@v3 + + license-check: + if: > + !failure() && + !cancelled() && + inputs.license-check == true + name: Check Licenses + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: lts/* + + - name: Install dependencies + run: npm i --ignore-scripts + + - name: Check Licenses + run: ${{ format('npx license-checker --production --summary --onlyAllow="0BSD;Apache-2.0;BlueOak-1.0.0;BSD-2-Clause;BSD-3-Clause;ISC;MIT;{0}"', inputs.license-check-allowed-additional) }} + + linter: + name: Lint Code + if: > + !failure() && + !cancelled() && + inputs.lint == true + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Check out repo + uses: actions/checkout@v4 + with: + persist-credentials: false + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: lts/* + + - name: Install dependencies + run: npm i + + - name: Lint code + run: npm run lint + + test: + name: Node.js ${{ matrix.node-version }} + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [18, 20, 21] + db: ['elasticsearch:8.3.2'] + services: + elasticsearch: + image: ${{ matrix.db }} + ports: + - '9200:9200' + - '9300:9300' + env: + xpack.security.enabled: false + discovery.type: single-node + options: >- + --health-cmd="curl http://localhost:9200/_cluster/health" --health-interval=10s --health-timeout=5s --health-retries=10 + + steps: + - name: Check out repo + uses: actions/checkout@v4 + with: + persist-credentials: false + + - name: Setup Node ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + + - name: Install dependencies + run: npm i --ignore-scripts + + - name: Run tests + run: npm test + + automerge: + name: Automerge Dependabot PRs + if: > + github.event_name == 'pull_request' && + github.event.pull_request.user.login == 'dependabot[bot]' + needs: test + permissions: + pull-requests: write + contents: write + runs-on: ubuntu-latest + steps: + - uses: fastify/github-action-merge-dependabot@v3 + with: + exclude: ${{ inputs.auto-merge-exclude }} + github-token: ${{ secrets.GITHUB_TOKEN }} + target: major