Skip to content

Migrate tests to Node's built-in test runner #3044

Migrate tests to Node's built-in test runner

Migrate tests to Node's built-in test runner #3044

Workflow file for this run

name: Continuous Integration
on:
push:
pull_request:
permissions: read-all
env:
# https://github.com/actions/checkout/issues/1590
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
prebuilds-linux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
container: ['node:14.0.0']
node_api_target: ['14.0.0', '15.0.0', '16.0.0', '17.0.1', '18.0.0']
include:
- container: 'node:16.0.0'
node_api_target: '20.0.0'
- container: 'node:16.0.0'
node_api_target: '21.2.0'
container: ${{ matrix.container }}
steps:
- name: Checkout
uses: actions/checkout@v3
- uses: actions/setup-node@v3
- name: Install npm dependencies
run: npm ci --ignore-scripts --no-optional
- name: Prebuild
run: npm run prebuild:os ${{ matrix.node_api_target }}
- name: upload prebuilds
uses: actions/upload-artifact@v3
with:
name: prebuilds-linux
path: prebuilds
prebuilds-linux-arm64:
runs-on: [self-hosted, Linux, ARM64]
strategy:
fail-fast: false
matrix:
container: ['node:14.0.0']
node_api_target: ['14.0.0', '15.0.0', '16.0.0', '17.0.1', '18.0.0']
include:
- container: 'node:16.0.0'
node_api_target: '20.0.0'
- container: 'node:16.0.0'
node_api_target: '21.2.0'
container: ${{ matrix.container }}
steps:
- name: Checkout
uses: actions/checkout@v3
- uses: actions/setup-node@v3
- name: Install npm dependencies
run: npm ci --ignore-scripts --no-optional
- name: Prebuild
run: npm run prebuild:os ${{ matrix.node_api_target }}
- name: upload prebuilds
uses: actions/upload-artifact@v3
with:
name: prebuilds-linux-arm64
path: prebuilds
prebuilds-macos-windows:
strategy:
fail-fast: false
matrix:
os: [windows-2019, macos-12]
node_api_target: ['14.0.0', '15.0.0', '16.0.0', '17.0.1', '18.0.0', '20.0.0', '21.2.0']
include:
- os: macos-12
python_version: '3.11'
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python_version }}
- uses: actions/setup-node@v3
with:
node-version: '16'
- name: Install npm dependencies
run: npm ci --ignore-scripts
- name: Prebuild
run: npm run prebuild:os ${{ matrix.node_api_target }}
- name: upload prebuilds
uses: actions/upload-artifact@v3
with:
name: prebuilds-macos-windows
path: prebuilds
create-package:
needs: [prebuilds-linux, prebuilds-macos-windows, prebuilds-linux-arm64]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- uses: actions/setup-node@v3
with:
node-version: '16'
- name: download prebuilds
uses: actions/download-artifact@v3
- name: copy prebuilds
run: |
mkdir -p prebuilds
cp -r prebuilds-linux/* prebuilds
cp -r prebuilds-macos-windows/* prebuilds
cp -r prebuilds-linux-arm64/* prebuilds
- name: Install npm dependencies
run: npm ci --ignore-scripts
- name: Build
run: npm run compile
- name: Pack
id: pack
run: |
echo "::set-output name=package_file::$(npm pack)"
- name: Upload package
uses: actions/upload-artifact@v3
with:
name: ${{ steps.pack.outputs.package_file }}
path: ${{ steps.pack.outputs.package_file }}
unit-tests:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ['ubuntu-latest', 'macos-latest']
nodejs: ['18', '20', '21']
include:
- os: 'macos-latest'
python_version: '3.11'
- os: 'windows-2019'
nodejs: '18.20.1'
- os: 'windows-2019'
nodejs: '20.12.1'
- os: 'windows-2019'
nodejs: '21.7.2'
steps:
- name: Checkout
uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python_version }}
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.nodejs }}
- name: Install npm dependencies
run: npm ci
- name: Test
run: npm run test
- name: Report Coverage
if: ${{matrix.nodejs == '16' && matrix.os == 'ubuntu-latest'}}
uses: codecov/codecov-action@v3
with:
verbose: true
unit-tests-arm64:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ['ARM64']
nodejs: ['18', '20', '21']
container: node:${{ matrix.nodejs }}
steps:
- name: Checkout
uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python_version }}
- name: Install npm dependencies
run: npm ci --unsafe-perm
- name: Test
run: npm run test
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 1
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Install npm dependencies
run: npm ci
- name: Build
run: npm run compile
- name: Generate metadata YAML
run: node scripts/generate-metadata-yaml.js > splunk-otel-js-metadata.yaml
- name: Upload metadata yaml
uses: actions/upload-artifact@v3
with:
name: splunk-otel-js-metadata.yaml
path: splunk-otel-js-metadata.yaml
# centos-build-check:
# runs-on: ubuntu-latest
# strategy:
# fail-fast: false
# matrix:
# nodejs: [14]
# include:
# - container: 'centos:7'
# - cmd: 'curl -sL https://rpm.nodesource.com/setup_${NODE_VERSION}.x | bash - && yum install -y nodejs gcc-c++ make'
# name: CentOS build check - ${{ matrix.container }} - Node.js ${{ matrix.nodejs }}
# container: ${{ matrix.container }}
# env:
# NODE_VERSION: ${{ matrix.nodejs }}
# steps:
# - name: Setup container
# run: |
# sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
# sed -i 's|#baseurl=http://mirror.centos.org|baseurl=https://archive.kernel.org/centos-vault|g' /etc/yum.repos.d/CentOS-*
# yum update -y
# ${{ matrix.cmd }}
# - name: Checkout
# uses: actions/checkout@v3
# - name: Install npm dependencies
# run: npm ci --ignore-scripts --no-optional
# - name: Compile native
# run: npm run prebuild:current
# - name: Run tests
# run: npm run test
# centos-prebuild-check:
# needs: [prebuilds-linux]
# runs-on: ubuntu-latest
# strategy:
# fail-fast: false
# matrix:
# container: ['centos:7']
# nodejs: [14, 16]
# name: Centos check - ${{ matrix.container }} - Node.js ${{ matrix.nodejs }}
# container: ${{ matrix.container }}
# env:
# NODE_VERSION: ${{ matrix.nodejs }}
# steps:
# - name: Setup container
# run: |
# sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
# sed -i 's|#baseurl=http://mirror.centos.org|baseurl=https://archive.kernel.org/centos-vault|g' /etc/yum.repos.d/CentOS-*
# yum update -y
# curl -sL https://rpm.nodesource.com/setup_${NODE_VERSION}.x | bash - && yum install -y nodejs gcc-c++ make
# - name: Checkout
# uses: actions/checkout@v3
# - name: Download
# uses: actions/download-artifact@v3
# - name: copy prebuilds
# run: |
# mkdir -p prebuilds
# cp -r prebuilds-linux/* prebuilds
# - name: Install npm dependencies
# run: npm ci --ignore-scripts --no-optional --loglevel verbose
# - name: Run tests
# run: npm run test
e2e-local:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- target: ''
name: 'Basic'
- target: '-f express.override.yml'
name: 'Express'
- target: '-f mixed.override.yml'
name: 'Mixed'
- target: '-f log-injection.override.yml'
name: 'Log injection'
- target: '-f profiling.override.yml'
name: 'Profiling'
- target: '-f typescript.override.yml'
name: 'TypeScript'
name: e2e local ${{ matrix.name }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Test ${{ matrix.name }} example
working-directory: test/examples
run: docker compose -f e2e.docker-compose.yml ${{ matrix.target }} up --exit-code-from test