Update/uwebsocket #604
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Workflow | |
on: | |
push: | |
branches: | |
- master | |
- 2-dev | |
pull_request: # This syntax stand for all PRs events | |
env: | |
NODE_LTS_ACTIVE_VERSION: "16" | |
NODE_LTS_CURRENT_VERSION: "18" # Stand for the latest LTS version | |
DOCKER_PLATFORMS: "linux/amd64,linux/arm64" | |
jobs: | |
prepare-matrix: | |
name: Forge Node LTS Matrix | |
runs-on: ubuntu-latest | |
steps: | |
- id: set-matrix | |
run: | | |
echo "::set-output name=matrix::{\"node-version\": [\"$NODE_LTS_ACTIVE_VERSION\", \"$NODE_LTS_CURRENT_VERSION\"]}" | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} | |
node_lts_active_version: ${{ env.NODE_LTS_ACTIVE_VERSION }} | |
node_lts_current_version: ${{ env.NODE_LTS_CURRENT_VERSION }} | |
docker_platforms: ${{ env.DOCKER_PLATFORMS }} | |
error-codes-check: | |
name: Documentation - Error codes check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v2 | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.os }}-${{ env.NODE_LTS_CURRENT_VERSION }}-${{ hashFiles('**/package-lock.json') }} | |
- run: npm install | |
- name: Test error codes | |
run: ./.ci/scripts/check-error-codes-documentation.sh | |
lint: | |
name: Lint - Node.js LTS ${{ matrix.node-version }} | |
runs-on: ubuntu-latest | |
needs: [prepare-matrix] | |
strategy: | |
matrix: | |
node-version: ${{ fromJson(needs.prepare-matrix.outputs.matrix).node-version }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- uses: actions/cache@v2 | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.os }}-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }} | |
- uses: ./.github/actions/es-lint | |
unit-tests: | |
name: Unit Tests | |
needs: [lint, prepare-matrix] | |
strategy: | |
matrix: | |
node-version: ${{ fromJson(needs.prepare-matrix.outputs.matrix).node-version }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/install-packages | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- uses: actions/cache@v2 | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.os }}-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }} | |
- uses: ./.github/actions/unit-tests | |
env: | |
NODE_VERSION: ${{ matrix.node-version }} | |
# ----------------------------------------------------------------------------- | |
# E2E Tests: Functional tests, Monkey tests, Docker image tests | |
# ----------------------------------------------------------------------------- | |
build-and-run-kuzzle: | |
needs: [unit-tests, prepare-matrix] | |
name: Build and Run ${{ matrix.kuzzle-image }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: ${{ fromJson(needs.prepare-matrix.outputs.matrix).node-version }} | |
kuzzle-image: ["kuzzle"] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/install-packages | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- uses: actions/cache@v2 | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.os }}-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }} | |
- uses: ./.github/actions/build-and-run-kuzzle | |
with: | |
KUZZLE_IMAGE: ${{ matrix.kuzzle-image }} | |
functional-tests: | |
name: Functional Tests - ${{ matrix.test_set }} - Node.js v${{ matrix.node-version }} | |
needs: [unit-tests, prepare-matrix] | |
strategy: | |
matrix: | |
test_set: | |
[ | |
jest, | |
http, | |
websocket, | |
"legacy:mqtt", | |
"legacy:http", | |
"legacy:websocket", | |
] | |
node-version: ${{ fromJson(needs.prepare-matrix.outputs.matrix).node-version }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/install-packages | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- uses: actions/cache@v2 | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.os }}-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }} | |
- uses: ./.github/actions/functional-tests | |
with: | |
test-set: test:functional:${{ matrix.test_set }} | |
node-version: ${{ matrix.node-version }} | |
env: | |
REBUILD: "true" | |
cluster-monkey-tests: | |
name: Cluster Monkey Tests | |
needs: [functional-tests, build-and-run-kuzzle, prepare-matrix] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: ${{ fromJson(needs.prepare-matrix.outputs.matrix).node-version }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/install-packages | |
- name: Cloning Monkey Tester | |
uses: actions/checkout@v3 | |
with: | |
repository: kuzzleio/kuzzle-monkey-tests | |
path: "kuzzle-monkey-tests" | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- uses: actions/cache@v2 | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.os }}-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }} | |
- uses: ./.github/actions/monkey-tests | |
with: | |
node-version: ${{ matrix.node-version }} | |
env: | |
REBUILD: "true" | |
deploy-workflow: | |
name: Deployment Workflow | |
needs: [cluster-monkey-tests, prepare-matrix] | |
uses: ./.github/workflows/workflow-deployments.yaml | |
secrets: inherit | |
with: | |
node_lts_active_version: ${{ needs.prepare-matrix.outputs.node_lts_active_version }} | |
node_lts_current_version: ${{ needs.prepare-matrix.outputs.node_lts_current_version }} | |
docker_platforms: ${{ needs.prepare-matrix.outputs.docker_platforms }} |