From 84c1f71f0de2c487b791966424ce0d40f61fe1d3 Mon Sep 17 00:00:00 2001 From: Daniel Dyla Date: Mon, 6 Jan 2020 14:22:53 -0500 Subject: [PATCH] ci: add test to ensure plugins support latest module versions --- .circleci/config.yml | 24 ++++++++++++++++++++++ package.json | 1 + scripts/check-plugin-supported-versions.js | 17 +++++++++++++++ scripts/check-plugin-supported-versions.sh | 10 +++++++++ 4 files changed, 52 insertions(+) create mode 100644 scripts/check-plugin-supported-versions.js create mode 100755 scripts/check-plugin-supported-versions.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index 3b044134523..c50d79bc57c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -150,6 +150,20 @@ browsers_unit_tests: &browsers_unit_tests command: if [ "$CIRCLE_NODE_VERSION" = "v12" ]; then yarn codecov:browser; fi jobs: + check-plugin-supported-versions: + docker: + - image: node:12 + steps: + - checkout + - run: + name: Install Dependencies + command: yarn install + - run: + name: Compile code + command: yarn compile + - run: + name: Check plugin supported versions + command: yarn check-plugin-supported-versions lint_&_docs: docker: - image: node:12 @@ -224,6 +238,16 @@ jobs: workflows: version: 2 + nightly: + jobs: + - check-plugin-supported-versions + triggers: + - schedule: + cron: "0 0 * * *" + filters: + branches: + only: + - master build: jobs: - lint_&_docs: diff --git a/package.json b/package.json index 052b201c210..8a3f19c459a 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "precompile": "tsc --version", "version:update": "lerna run version:update", "compile": "lerna run compile", + "check-plugin-supported-versions": "scripts/check-plugin-supported-versions.sh", "test": "lerna run test", "test:browser": "lerna run test:browser", "bootstrap": "lerna bootstrap", diff --git a/scripts/check-plugin-supported-versions.js b/scripts/check-plugin-supported-versions.js new file mode 100644 index 00000000000..e464cc4dda8 --- /dev/null +++ b/scripts/check-plugin-supported-versions.js @@ -0,0 +1,17 @@ +const [node, script, pack] = process.argv; + +const child_process = require("child_process"); + +const plugin = require(pack).plugin; +const isSupportedVersion = require("../packages/opentelemetry-node/build/src/instrumentation/utils").isSupportedVersion; + +if (plugin && plugin.supportedVersions) { + const version = child_process.execSync(`npm show ${plugin.moduleName} version`).toString("utf-8").trim(); + if (!isSupportedVersion(version, plugin.supportedVersions)) { + console.log(`${plugin.moduleName} does not support ${version}. Supported versions: ${JSON.stringify(plugin.supportedVersions)}`); + process.exit(1); + } else { + console.log(`${plugin.moduleName} supports the latest version`); + } +} + diff --git a/scripts/check-plugin-supported-versions.sh b/scripts/check-plugin-supported-versions.sh new file mode 100755 index 00000000000..628a8b957e6 --- /dev/null +++ b/scripts/check-plugin-supported-versions.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# exit if any command fails +set -e + +packages=$(lerna list -p --scope @opentelemetry/plugin-*) +for package in $packages +do + node scripts/check-plugin-supported-versions.js $package +done