From 32516106d27e8e228a09e147bd6d8150f6c6f4a1 Mon Sep 17 00:00:00 2001 From: Shwetha Radhakrishna Date: Mon, 31 Jan 2022 16:04:36 -0600 Subject: [PATCH] chore: migrate to gh actions (#1329) * chore: migrate to gh actions --- .codeclimate.yml | 15 ----- .github/workflows/test-and-deploy.yml | 85 +++++++++++++++++++++++++++ .travis.yml | 34 ----------- packages/contact-importer/README.md | 2 +- test/files.spec.js | 8 +-- 5 files changed, 88 insertions(+), 56 deletions(-) delete mode 100644 .codeclimate.yml create mode 100644 .github/workflows/test-and-deploy.yml delete mode 100644 .travis.yml diff --git a/.codeclimate.yml b/.codeclimate.yml deleted file mode 100644 index a1b1d52bd..000000000 --- a/.codeclimate.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -engines: - duplication: - enabled: true - config: - languages: - - javascript - eslint: - enabled: true -ratings: - paths: - - "**.js" -exclude_paths: -- node_modules/ -- test/ diff --git a/.github/workflows/test-and-deploy.yml b/.github/workflows/test-and-deploy.yml new file mode 100644 index 000000000..2f3d6a5f8 --- /dev/null +++ b/.github/workflows/test-and-deploy.yml @@ -0,0 +1,85 @@ +name: Test and Deploy +on: + push: + branches: [ '*' ] + tags: [ '*' ] + pull_request: + branches: [ main ] + schedule: + # Run automatically at 8AM PST Monday-Friday + - cron: '0 15 * * 1-5' + workflow_dispatch: + +jobs: + test: + name: Test + runs-on: ubuntu-latest + timeout-minutes: 20 + strategy: + matrix: + node: [ 6, 7, 8, 10, lts/* ] + steps: + - name: Checkout sendgrid-nodejs + uses: actions/checkout@v2 + + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_AUTH_TOKEN }} + + - name: Set up Node + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node }} + + - run: npm install + - name: Run Tests + run: make test-docker + + deploy: + name: Deploy + if: success() && github.ref_type == 'tag' + needs: [ test ] + runs-on: ubuntu-latest + steps: + - name: Checkout sendgrid-nodejs + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Set up Node + uses: actions/setup-node@v2 + with: + node-version: 10 + + - name: Create GitHub Release + uses: sendgrid/dx-automator/actions/release@main + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - run: npm install + - name: Publish + run: | + npm config set //registry.npmjs.org/:_authToken ${NODE_AUTH_TOKEN} + lerna publish from-package --yes --no-verify-access + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + + notify-on-failure: + name: Slack notify on failure + if: failure() && github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || github.ref_type == 'tag') + needs: [ test, deploy ] + runs-on: ubuntu-latest + steps: + - uses: rtCamp/action-slack-notify@v2 + env: + SLACK_COLOR: failure + SLACK_ICON_EMOJI: ':github:' + SLACK_MESSAGE: ${{ format('Tests *{0}*, Deploy *{1}*, {2}/{3}/actions/runs/{4}', needs.test.result, needs.deploy.result, github.server_url, github.repository, github.run_id) }} + SLACK_TITLE: Action Failure - ${{ github.repository }} + SLACK_USERNAME: GitHub Actions + SLACK_MSG_AUTHOR: twilio-dx + SLACK_FOOTER: Posted automatically using GitHub Actions + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} + MSG_MINIMAL: true diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index a95833d81..000000000 --- a/.travis.yml +++ /dev/null @@ -1,34 +0,0 @@ -language: node_js -node_js: -- 10 -env: -- version=6 -- version=8 -- version=10 -- version=lts -- version=latest -services: -- docker -script: -- if [[ "$TRAVIS_BRANCH" == "main" || "$TRAVIS_BRANCH" == "travis" ]] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then - echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin; - fi -- make test-docker -before_deploy: -- echo "//registry.npmjs.org/:_authToken=\${NPM_TOKEN}" >> $HOME/.npmrc 2> /dev/null -- git reset HEAD --hard -deploy: -- provider: script - script: lerna publish from-package --yes --no-verify-access - skip_cleanup: true - on: - tags: true - condition: "$version = 10" -notifications: - slack: - if: branch = main - on_pull_requests: false - on_success: never - on_failure: change - rooms: - secure: ArC04W9wjgu0Mk7sJOFcJoWb7yVS1Pe48I9Y0gV+gg3o/S61NZWF7e7qvNTwE7S8bfL7fQibrcFxoewiwp7zwi+huD+p5uyhKVxS7ee0BRqzjFVDlz66lJ1jrqZAvNtcrEP17YtAE/EZuQ2VCBUmbX9if5XTloCzYeMQZUrYkZs= diff --git a/packages/contact-importer/README.md b/packages/contact-importer/README.md index a74fa70ae..9dc8eff77 100644 --- a/packages/contact-importer/README.md +++ b/packages/contact-importer/README.md @@ -1,4 +1,4 @@ -[![BuildStatus](https://travis-ci.com/sendgrid/sendgrid-nodejs.svg?branch=main)](https://travis-ci.com/sendgrid/sendgrid-nodejs) +[![Test and Deploy](https://github.com/sendgrid/sendgrid-nodejs/actions/workflows/test-and-deploy.yml/badge.svg)](https://github.com/sendgrid/sendgrid-nodejs/actions/workflows/test-and-deploy.yml) [![npm version](https://badge.fury.io/js/%40sendgrid%2Fclient.svg)](https://www.npmjs.com/org/sendgrid) [![Email Notifications Badge](https://dx.sendgrid.com/badge/nodejs)](https://dx.sendgrid.com/newsletter/nodejs) diff --git a/test/files.spec.js b/test/files.spec.js index 25b8ff7da..f26ae68db 100644 --- a/test/files.spec.js +++ b/test/files.spec.js @@ -20,12 +20,8 @@ describe('sendgrid-nodejs repo', function() { assert(fileExists('.gitignore')); }); - it('should have ./.travis.yml file', function() { - assert(fileExists('.travis.yml')); - }); - - it('should have ./.codeclimate.yml file', function() { - assert(fileExists('.codeclimate.yml')); + it('should have ./.github/workflows/test-and-deploy file', function() { + assert(fileExists('.github/workflows/test-and-deploy.yml')); }); it('should have ./CHANGELOG.md file', function() {