From 485d3b574057e94aac3df68366fa1a1627258c21 Mon Sep 17 00:00:00 2001 From: mrmlnc Date: Fri, 11 Dec 2020 22:18:56 +0300 Subject: [PATCH] build: introduce GitHub Actions --- .editorconfig | 2 +- .github/workflows/benchmark.yml | 82 +++++++++++++++++++++++++++++++++ .github/workflows/main.yml | 59 ++++++++++++++++++++++++ .npmignore | 1 - .vsts/benchmark.yml | 30 ------------ .vsts/build.yml | 54 ---------------------- .vsts/steps-benchmark.yml | 27 ----------- .vsts/steps-build.yml | 15 ------ .vsts/steps-tests.yml | 15 ------ 9 files changed, 142 insertions(+), 143 deletions(-) create mode 100644 .github/workflows/benchmark.yml create mode 100644 .github/workflows/main.yml delete mode 100644 .vsts/benchmark.yml delete mode 100644 .vsts/build.yml delete mode 100644 .vsts/steps-benchmark.yml delete mode 100644 .vsts/steps-build.yml delete mode 100644 .vsts/steps-tests.yml diff --git a/.editorconfig b/.editorconfig index 77c38f57..8dcd098e 100644 --- a/.editorconfig +++ b/.editorconfig @@ -9,7 +9,7 @@ charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true -[{.travis.yml,circle.yml,appveyor.yml,.vsts/**}] +[{.travis.yml,circle.yml,appveyor.yml,.github/**}] indent_style = space indent_size = 2 diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml new file mode 100644 index 00000000..981f1368 --- /dev/null +++ b/.github/workflows/benchmark.yml @@ -0,0 +1,82 @@ +name: Benchmark + +on: + - push + +env: + BENCHMARK_LAUNCHES: 100 + BENCHMARK_MAX_STDEV: 10 + BENCHMARK_RETRIES: 3 + +jobs: + cancel: + name: Cancel previous jobs + if: github.ref != 'refs/heads/master' + runs-on: ubuntu-latest + timeout-minutes: 3 + steps: + - name: Cancel previous jobs + uses: styfle/cancel-workflow-action@0.6.0 + with: + workflow_id: 4198440 + access_token: ${{ github.token }} + + product: + name: Product benchmark + if: always() + needs: + - cancel + runs-on: ubuntu-latest + env: + BENCHMARK_TYPE: product + BENCHMARK_OPTIONS: '{}' + steps: + - name: Setup repository + uses: actions/checkout@v2 + - name: Setup environment + uses: actions/setup-node@v1 + with: + node-version: 15 + - name: Install dependencies + run: npm install + - name: Compile sources + run: npm run compile + - name: Benchmark (async) + run: npm run bench-async + - name: Benchmark (stream) + run: npm run bench-stream + - name: Benchmark (sync) + run: npm run bench-sync + + regress: + name: Regress benchmark with options (${{ matrix.benchmark_options }}) + needs: + - cancel + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + benchmark_options: + - '{}' + - '{ "objectMode": true }' + - '{ "absolute": true }' + env: + BENCHMARK_TYPE: regression + BENCHMARK_OPTIONS: ${{ matrix.benchmark_options }} + steps: + - name: Setup repository + uses: actions/checkout@v2 + - name: Setup environment + uses: actions/setup-node@v1 + with: + node-version: 15 + - name: Install dependencies + run: npm install + - name: Compile sources + run: npm run compile + - name: Benchmark (async) + run: npm run bench-async + - name: Benchmark (stream) + run: npm run bench-stream + - name: Benchmark (sync) + run: npm run bench-sync diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..5a31d587 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,59 @@ +name: CI + +on: + push: + branches: + - master + - releases/* + pull_request: + branches: + - '*' + +jobs: + cancel: + name: Cancel previous jobs + if: github.ref != 'refs/heads/master' + runs-on: ubuntu-latest + timeout-minutes: 3 + steps: + - name: Cancel previous jobs + uses: styfle/cancel-workflow-action@0.6.0 + with: + workflow_id: 4197767 + access_token: ${{ github.token }} + + test: + name: Node.js ${{ matrix.node_version }} on ${{ matrix.os }} + if: always() + needs: + - cancel + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + node_version: [8, 10, 12, 14, 15] + os: + - ubuntu-latest + - macos-latest + - windows-latest + steps: + - name: Setup repository + uses: actions/checkout@v2 + - name: Setup environment + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node_version }} + - name: Install dependencies + run: npm install + - name: Compile sources + run: npm run compile + - name: Run Hygiene Checks + run: npm run lint + - name: Run unit tests + run: npm run test + - name: Run smoke tests (sync) + run: npm run smoke:sync + - name: Run smoke tests (async) + run: npm run smoke:async + - name: Run smoke tests (stream) + run: npm run smoke:stream diff --git a/.npmignore b/.npmignore index 662e444f..545eea2d 100644 --- a/.npmignore +++ b/.npmignore @@ -2,7 +2,6 @@ .editorconfig .gitattributes .gitignore -.vsts tsconfig.json .eslintrc.json diff --git a/.vsts/benchmark.yml b/.vsts/benchmark.yml deleted file mode 100644 index 2bdf8c58..00000000 --- a/.vsts/benchmark.yml +++ /dev/null @@ -1,30 +0,0 @@ -trigger: - branches: - include: - - master - - releases/* - -variables: - node_version: 14.x - benchmark_type: $(benchmark.type) - benchmark_launches: $(benchmark.launches) - benchmark_max_stdev: $(benchmark.max_stdev) - benchmark_retries: $(benchmark.retries) - benchmark_options: $(benchmark.options) - -jobs: - - job: Benchmark - pool: - vmImage: ubuntu-latest - steps: - - template: steps-build.yml - parameters: - node_version: $(node_version) - - template: steps-benchmark.yml - parameters: - node_version: $(node_version) - benchmark_type: $(benchmark_type) - benchmark_launches: $(benchmark_launches) - benchmark_max_stdev: $(benchmark_max_stdev) - benchmark_retries: $(benchmark_retries) - benchmark_options: $(benchmark_options) diff --git a/.vsts/build.yml b/.vsts/build.yml deleted file mode 100644 index aa78d47e..00000000 --- a/.vsts/build.yml +++ /dev/null @@ -1,54 +0,0 @@ -# Unfortunately, VSTS does not currently support anchors in the YAML files. -# This promote duplication of matrices in strategies. - -trigger: - branches: - include: - - master - - releases/* - -jobs: - - job: Windows - strategy: - matrix: - (Node.js 8): { node_version: 8.x } - (Node.js 10): { node_version: 10.x } - (Node.js 12): { node_version: 12.x } - (Node.js 14): { node_version: 14.x } - pool: - vmImage: windows-latest - steps: - - template: steps-build.yml - parameters: - node_version: $(node_version) - - template: steps-tests.yml - - - job: Linux - strategy: - matrix: - (Node.js 8): { node_version: 8.x } - (Node.js 10): { node_version: 10.x } - (Node.js 12): { node_version: 12.x } - (Node.js 14): { node_version: 14.x } - pool: - vmImage: ubuntu-latest - steps: - - template: steps-build.yml - parameters: - node_version: $(node_version) - - template: steps-tests.yml - - - job: macOS - strategy: - matrix: - (Node.js 8): { node_version: 8.x } - (Node.js 10): { node_version: 10.x } - (Node.js 12): { node_version: 12.x } - (Node.js 14): { node_version: 14.x } - pool: - vmImage: macOS-latest - steps: - - template: steps-build.yml - parameters: - node_version: $(node_version) - - template: steps-tests.yml diff --git a/.vsts/steps-benchmark.yml b/.vsts/steps-benchmark.yml deleted file mode 100644 index 7f0fdc36..00000000 --- a/.vsts/steps-benchmark.yml +++ /dev/null @@ -1,27 +0,0 @@ -steps: - - script: npm run bench-sync - displayName: Benchmark (sync) - env: - BENCHMARK_TYPE: '${{parameters.benchmark_type}}' - BENCHMARK_LAUNCHES: '${{parameters.benchmark_launches}}' - BENCHMARK_MAX_STDEV: '${{parameters.benchmark_max_stdev}}' - BENCHMARK_RETRIES: '${{parameters.benchmark_retries}}' - BENCHMARK_OPTIONS: '${{parameters.benchmark_options}}' - - - script: npm run bench-async - displayName: Benchmark (async) - env: - BENCHMARK_TYPE: '${{parameters.benchmark_type}}' - BENCHMARK_LAUNCHES: '${{parameters.benchmark_launches}}' - BENCHMARK_MAX_STDEV: '${{parameters.benchmark_max_stdev}}' - BENCHMARK_RETRIES: '${{parameters.benchmark_retries}}' - BENCHMARK_OPTIONS: '${{parameters.benchmark_options}}' - - - script: npm run bench-stream - displayName: Benchmark (stream) - env: - BENCHMARK_TYPE: '${{parameters.benchmark_type}}' - BENCHMARK_LAUNCHES: '${{parameters.benchmark_launches}}' - BENCHMARK_MAX_STDEV: '${{parameters.benchmark_max_stdev}}' - BENCHMARK_RETRIES: '${{parameters.benchmark_retries}}' - BENCHMARK_OPTIONS: '${{parameters.benchmark_options}}' diff --git a/.vsts/steps-build.yml b/.vsts/steps-build.yml deleted file mode 100644 index 9524d304..00000000 --- a/.vsts/steps-build.yml +++ /dev/null @@ -1,15 +0,0 @@ -steps: - - task: NodeTool@0 - inputs: - versionSpec: '${{parameters.node_version}}' - - - script: node --version && npm --version - displayName: Environment information - - - task: Npm@0 - displayName: Install dependencies - inputs: - command: install - - - script: npm run compile - displayName: Compile Sources diff --git a/.vsts/steps-tests.yml b/.vsts/steps-tests.yml deleted file mode 100644 index f7647a04..00000000 --- a/.vsts/steps-tests.yml +++ /dev/null @@ -1,15 +0,0 @@ -steps: - - script: npm run lint - displayName: Run Hygiene Checks - - - script: npm run test - displayName: Run Unit Tests - - - script: npm run smoke:sync - displayName: Run Smoke Tests (sync) - - - script: npm run smoke:async - displayName: Run Smoke Tests (async) - - - script: npm run smoke:stream - displayName: Run Smoke Tests (stream)