From 04aaa723c74f51f43df5209bf0104e1bc248ebe1 Mon Sep 17 00:00:00 2001 From: AlCalzone Date: Thu, 7 Nov 2019 11:27:34 +0100 Subject: [PATCH] Switch to Github Actions (#297) The tests are not enabled yet, because a test tag push to master is required --- .github/workflows/test-and-release.yml | 124 +++++++++++++++++++++++++ .travis.yml | 22 ----- package.json | 1 + 3 files changed, 125 insertions(+), 22 deletions(-) create mode 100644 .github/workflows/test-and-release.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/test-and-release.yml b/.github/workflows/test-and-release.yml new file mode 100644 index 00000000..6d124249 --- /dev/null +++ b/.github/workflows/test-and-release.yml @@ -0,0 +1,124 @@ +# This is a composition of lint and test scripts +# Make sure to update this file along with the others + +name: Test and Release + +# Run this job on all pushes and pull requests +# as well as tags with a semantic version +on: + push: + branches: + - '*' + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + pull_request: {} + +jobs: + # Performs quick checks before the expensive test runs + check-and-lint: + if: contains(github.event.head_commit.message, '[skip ci]') == false + + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [12.x] + + steps: + - uses: actions/checkout@v1 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + + - name: Install Dependencies + run: npm ci + + - name: Perform a type check + run: npm run check:ts + env: + CI: true + # - name: Lint TypeScript code + # run: npm run lint + - name: Test package files + run: npm run test:package + + # Runs adapter tests on all supported node versions and OSes + adapter-tests: + if: contains(github.event.head_commit.message, '[skip ci]') == false + + needs: [check-and-lint] + + runs-on: ${{ matrix.os }} + strategy: + matrix: + node-version: [8.x, 10.x, 12.x] + os: [ubuntu-latest, windows-latest, macos-latest] + exclude: + # Don't test Node.js 8 on Windows. npm is weird here + - os: windows-latest + node-version: 8.x + + steps: + - uses: actions/checkout@v1 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + - name: Install Dependencies + run: npm ci + + - name: Run local tests + run: npm test + - name: Run unit tests + run: npm run test:unit + - name: Run integration tests # (linux/osx) + if: startsWith(runner.OS, 'windows') == false + run: DEBUG=testing:* npm run test:integration + - name: Run integration tests # (windows) + if: startsWith(runner.OS, 'windows') + run: set DEBUG=testing:* & npm run test:integration + + # Deploys the final package to NPM + deploy: + needs: [adapter-tests] + + # Trigger this step only when a commit on master is tagged with a version number + if: | + contains(github.event.head_commit.message, '[skip ci]') == false && + github.event_name == 'push' && + github.event.base_ref == 'refs/heads/master' && + startsWith(github.ref, 'refs/tags/v') + + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [12.x] + + steps: + - uses: actions/checkout@v1 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + - name: Install Dependencies + run: npm ci + + - name: Create a clean build + run: npm run build + - name: Publish package to npm + run: | + npm config set //registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }} + npm whoami + npm publish + + # Dummy job for skipped builds - without this, github reports the build as failed + skip-ci: + if: contains(github.event.head_commit.message, '[skip ci]') + runs-on: ubuntu-latest + steps: + - name: Skip build + run: echo "Build skipped!" diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 37f800c5..00000000 --- a/.travis.yml +++ /dev/null @@ -1,22 +0,0 @@ -language: node_js -node_js: - - '8' - - '10' - - '12' -os: - - linux - - osx -before_install: - - sudo chmod +x ./travis/setup.sh - - ./travis/setup.sh -before_script: - - export NPMVERSION=$(echo "$($(which npm) -v)"|cut -c1) - - 'if [[ $NPMVERSION == 5 ]]; then npm install -g npm@5; fi' - - npm -v -script: - - 'npm run test:package' - - 'npm run test:unit' - - 'export DEBUG=testing:*' - - 'npm run test:integration' -notifications: - email: false diff --git a/package.json b/package.json index b991c48a..651b4a81 100644 --- a/package.json +++ b/package.json @@ -89,6 +89,7 @@ "fixSourceMaps": "rexreplace \"\\\"sources\\\"\\:\\[\\\"../../\" \"\\\"sources\\\"\\:\\[\\\"../\" \"{build/**,build}/*.map\"", "prebuild:ts": "rimraf ./build", "build:ts": "tsc -p src/tsconfig.json", + "check:ts": "tsc -p src/tsconfig.json --noEmit", "postbuild:ts": "npm run restoreBuildDirectoryStructure && npm run fixSourceMaps", "build:parcel": "parcel build admin/src/index.tsx -d admin/build", "build": "npm run build:ts && npm run build:parcel",