diff --git a/.github/workflows/_integration_tests.yml b/.github/workflows/_integration_tests.yml new file mode 100644 index 00000000..7a4bbc9a --- /dev/null +++ b/.github/workflows/_integration_tests.yml @@ -0,0 +1,30 @@ +name: Integration Tests +on: workflow_call +jobs: + integration-tests: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - ${{ vars.UBUNTU_VERSION }} + node-version: [14.x, 16.x] + es-version: [7.6.1] + jdk-version: [oraclejdk11] + steps: + - uses: actions/checkout@v2 + - name: Install node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2-beta + with: + node-version: ${{ matrix.node-version }} + - name: Start elasticsearch ${{ matrix.es-version }} (${{ matrix.jdk-version }}) + env: + ES_VERSION: ${{ matrix.es-version }} + JDK_VERSION: ${{ matrix.jdk-version }} + run: ./scripts/setup_ci.sh + - name: Run integration tests + run: | + npm install -g npm + npm install + curl http://127.0.0.1:9200/ + ./bin/create_index + npm run integration diff --git a/.github/workflows/_unit_tests.yml b/.github/workflows/_unit_tests.yml new file mode 100644 index 00000000..53d6d0e3 --- /dev/null +++ b/.github/workflows/_unit_tests.yml @@ -0,0 +1,21 @@ +name: Unit Tests +on: workflow_call +jobs: + unit-tests: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - ${{ vars.UBUNTU_VERSION }} + node-version: [14.x, 16.x] + steps: + - uses: actions/checkout@v2 + - name: Install node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2-beta + with: + node-version: ${{ matrix.node-version }} + - name: Run unit tests + run: | + npm install -g npm + npm install + npm run test diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml new file mode 100644 index 00000000..cedb5e1e --- /dev/null +++ b/.github/workflows/pull_request.yml @@ -0,0 +1,11 @@ +name: Continuous Integration +on: pull_request +jobs: + unit-tests: + # only run this job for forks + if: github.event.pull_request.head.repo.full_name != github.repository + uses: ./.github/workflows/_unit_tests.yml + integration-tests: + # only run this job for forks + if: github.event.pull_request.head.repo.full_name != github.repository + uses: ./.github/workflows/_integration_tests.yml diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index f5c046f3..cb27eaa5 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -5,53 +5,13 @@ on: - 'v[0-9]+.[0-9]+.[0-9]+' jobs: unit-tests: - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-20.04] - node-version: [14.x, 16.x] - steps: - - uses: actions/checkout@v2 - - name: Install node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2-beta - with: - node-version: ${{ matrix.node-version }} - - name: Run unit tests - run: | - npm install -g npm - npm install - npm run test + uses: ./.github/workflows/_unit_tests.yml integration-tests: - needs: unit-tests - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-20.04] - node-version: [14.x, 16.x] - es-version: [7.6.1] - jdk-version: [oraclejdk11] - steps: - - uses: actions/checkout@v2 - - name: Install node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2-beta - with: - node-version: ${{ matrix.node-version }} - - name: Start elasticsearch ${{ matrix.es-version }} (${{ matrix.jdk-version }}) - env: - ES_VERSION: ${{ matrix.es-version }} - JDK_VERSION: ${{ matrix.jdk-version }} - run: ./scripts/setup_ci.sh - - name: Run integration tests - run: | - npm install -g npm - npm install - curl http://127.0.0.1:9200/ - ./bin/create_index - npm run integration + uses: ./.github/workflows/_integration_tests.yml npm-publish: needs: [unit-tests, integration-tests] if: github.ref == 'refs/heads/master' && github.event_name == 'push' - runs-on: ubuntu-20.04 + runs-on: ${{ vars.UBUNTU_VERSION }} steps: - uses: actions/checkout@v2 - name: Install Node.js @@ -69,7 +29,7 @@ jobs: # note: github actions won't run a job if you don't call one of the status check functions, so `always()` is called since it evalutes to `true` if: ${{ always() && needs.unit-tests.result == 'success' && (needs.npm-publish.result == 'success' || needs.npm-publish.result == 'skipped') }} needs: [unit-tests, integration-tests, npm-publish] - runs-on: ubuntu-20.04 + runs-on: ${{ vars.UBUNTU_VERSION }} steps: - uses: actions/checkout@v2 - name: Build Docker images