From 226a82f7570166fbf5e7481e5f0bb40e6681c1a7 Mon Sep 17 00:00:00 2001 From: Elise Shanholtz Date: Tue, 23 Nov 2021 13:12:18 -0800 Subject: [PATCH 1/3] chore: migrate to github actions --- .github/workflows/release.yml | 50 +++++++++++++++++++ .github/workflows/test.yml | 50 +++++++++++++++++++ .maven.xml | 24 --------- .travis.yml | 34 ------------- README.md | 2 +- .../com/sendgrid/TestRequiredFilesExist.java | 6 --- 6 files changed, 101 insertions(+), 65 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/test.yml delete mode 100644 .maven.xml delete mode 100644 .travis.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..d4317b90 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,50 @@ +name: Release +on: + push: + tags: + - '*' + workflow_dispatch: + +jobs: + release: + name: Release + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Set up Sonatype Maven + uses: actions/setup-java@v2 + with: + java-version: 8 + distribution: temurin + server-id: ossrh + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} + gpg-passphrase: GPG_PASSPHRASE + + - run: mvn install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B -V + - name: Publish to Maven + env: + MAVEN_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + run: mvn clean deploy -DskipTests=true -B -U -Prelease + + notify-on-failure: + name: Slack notify on failure + if: ${{ failure() }} + needs: [release] + runs-on: ubuntu-latest + steps: + - uses: rtCamp/action-slack-notify@v2 + env: + SLACK_COLOR: 'danger' + SLACK_ICON_EMOJI: ':github:' + SLACK_MESSAGE: ${{ format('Failed to release {1}{3} {0}/{1}/actions/runs/{2}', github.server_url, github.repository, github.run_id, ':') }} + SLACK_TITLE: Release Failure + 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/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..ce25bf56 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,50 @@ +name: Tests +on: + push: + branches: [ '*' ] + 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: + java: [8, 11] + steps: + - uses: actions/checkout@v2 + + - name: Set up Java + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: ${{ matrix.java }} + cache: 'maven' + + - run: mvn install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B -V + - name: Run Unit Tests + run: make test-docker + + notify-on-failure: + name: Slack notify on failure + if: ${{ failure() && github.ref == 'refs/heads/main' && github.event_name != 'pull_request' }} + needs: [test] + runs-on: ubuntu-latest + steps: + - uses: rtCamp/action-slack-notify@v2 + env: + SLACK_COLOR: ${{ needs.test.status }} + SLACK_ICON_EMOJI: ':github:' + SLACK_MESSAGE: ${{ format('Build {2} in {1} failed{3} {0}/{1}/actions/runs/{2}', github.server_url, github.repository, github.run_id, ':') }} + SLACK_TITLE: Build Failure + 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/.maven.xml b/.maven.xml deleted file mode 100644 index bef1ab68..00000000 --- a/.maven.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - ossrh - ${env.SONATYPE_USERNAME} - ${env.SONATYPE_PASSWORD} - - - - - - ossrh - - true - - - ${env.GPG_EXECUTABLE} - ${env.GPG_PASSPHRASE} - - - - diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index d4b2a0ac..00000000 --- a/.travis.yml +++ /dev/null @@ -1,34 +0,0 @@ -language: java -jdk: openjdk8 -before_install: -- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - -- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" -- sudo apt-get update -- sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce -- docker --version -- echo $GPG_SECRET_KEYS | base64 --decode | $GPG_EXECUTABLE --import --batch || true -- echo $GPG_OWNERTRUST | base64 --decode | $GPG_EXECUTABLE --import-ownertrust --batch || true -env: -- version=8 -- version=11 -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 -deploy: -- provider: script - script: mvn clean deploy --settings .maven.xml -DskipTests=true -B -U -Prelease - edge: true - on: - tags: true - condition: "$version = 8" - branch: main -notifications: - slack: - if: branch = main - on_pull_requests: false - on_success: never - on_failure: change - rooms: - secure: NGGQe8OMWfbAOM6O7odDHtY/UVdqJ6oLQzB96QlTNkGgbyINKdufHxHaiv0SC/w4alUzzs6gw1h2WCpxw1PPl+pnVAeSVLfvRLYQApCGigWF0s5AyfVxtoG7bZOQLhsddC1ldQr12G4zclew+7k+0bgra4ENkbvv1OGiQdPJ08U= diff --git a/README.md b/README.md index d8ac5954..4b140912 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![SendGrid Logo](twilio_sendgrid_logo.png) -[![Travis Badge](https://travis-ci.com/sendgrid/sendgrid-java.svg?branch=main)](https://travis-ci.com/sendgrid/sendgrid-java) +[![BuildStatus](https://github.com/sendgrid/sendgrid-java/actions/workflows/test.yml/badge.svg)](https://github.com/sendgrid/sendgrid-java/actions/workflows/test.yml) [![Maven Central](https://img.shields.io/maven-central/v/com.sendgrid/sendgrid-java.svg)](http://mvnrepository.com/artifact/com.sendgrid/sendgrid-java) [![Twitter Follow](https://img.shields.io/twitter/follow/sendgrid.svg?style=social&label=Follow)](https://twitter.com/sendgrid) [![GitHub contributors](https://img.shields.io/github/contributors/sendgrid/sendgrid-java.svg)](https://github.com/sendgrid/sendgrid-java/graphs/contributors) diff --git a/src/test/java/com/sendgrid/TestRequiredFilesExist.java b/src/test/java/com/sendgrid/TestRequiredFilesExist.java index d6e000d0..dba8c0d5 100644 --- a/src/test/java/com/sendgrid/TestRequiredFilesExist.java +++ b/src/test/java/com/sendgrid/TestRequiredFilesExist.java @@ -25,12 +25,6 @@ public void checkGitIgnoreExists() { assertTrue(new File("./.gitignore").exists()); } - // ./.travis.yml - @Test - public void checkTravisExists() { - assertTrue(new File("./.travis.yml").exists()); - } - // ./.codeclimate.yml @Test public void checkCodeClimateExists() { From adebeec6ce0b66f85025991d4d896c1046cca737 Mon Sep 17 00:00:00 2001 From: Elise Shanholtz Date: Wed, 24 Nov 2021 10:21:24 -0800 Subject: [PATCH 2/3] fix java version setup --- .github/workflows/test.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ce25bf56..15c0a552 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,16 +20,16 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up Java - uses: actions/setup-java@v2 - with: - distribution: 'temurin' - java-version: ${{ matrix.java }} - cache: 'maven' - - - run: mvn install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B -V +# - name: Set up Java +# uses: actions/setup-java@v2 +# with: +# distribution: 'temurin' +# java-version: ${{ matrix.java }} +# cache: 'maven' +# +# - run: mvn install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B -V - name: Run Unit Tests - run: make test-docker + run: make test-docker version=${{ matrix.java }} notify-on-failure: name: Slack notify on failure From 563f51a44f10ef892cc21387b04f5e8452851d17 Mon Sep 17 00:00:00 2001 From: Elise Shanholtz Date: Wed, 24 Nov 2021 10:48:20 -0800 Subject: [PATCH 3/3] fix tests --- .codeclimate.yml | 8 -------- .github/workflows/test.yml | 8 -------- src/test/java/com/sendgrid/SendGridTest.java | 8 ++++---- src/test/java/com/sendgrid/TestRequiredFilesExist.java | 6 ------ 4 files changed, 4 insertions(+), 26 deletions(-) delete mode 100644 .codeclimate.yml diff --git a/.codeclimate.yml b/.codeclimate.yml deleted file mode 100644 index 5b82009c..00000000 --- a/.codeclimate.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -plugins: - checkstyle: - enabled: true - fixme: - enabled: true - pmd: - enabled: true diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 15c0a552..d981dca6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,14 +20,6 @@ jobs: steps: - uses: actions/checkout@v2 -# - name: Set up Java -# uses: actions/setup-java@v2 -# with: -# distribution: 'temurin' -# java-version: ${{ matrix.java }} -# cache: 'maven' -# -# - run: mvn install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B -V - name: Run Unit Tests run: make test-docker version=${{ matrix.java }} diff --git a/src/test/java/com/sendgrid/SendGridTest.java b/src/test/java/com/sendgrid/SendGridTest.java index cd8b1673..089c4a11 100644 --- a/src/test/java/com/sendgrid/SendGridTest.java +++ b/src/test/java/com/sendgrid/SendGridTest.java @@ -2193,25 +2193,25 @@ public void test_suppression_invalid_emails__email__delete() throws IOException } @Test - public void test_suppression_spam_report__email__get() throws IOException { + public void test_suppression_spam_reports__email__get() throws IOException { SendGrid sg = new SendGrid("SENDGRID_API_KEY"); sg.addRequestHeader("X-Mock", "200"); Request request = new Request(); request.setMethod(Method.GET); - request.setEndpoint("suppression/spam_report/{email}"); + request.setEndpoint("suppression/spam_reports/{email}"); Response response = sg.api(request); Assert.assertEquals(200, response.getStatusCode()); } @Test - public void test_suppression_spam_report__email__delete() throws IOException { + public void test_suppression_spam_reports__email__delete() throws IOException { SendGrid sg = new SendGrid("SENDGRID_API_KEY"); sg.addRequestHeader("X-Mock", "204"); Request request = new Request(); request.setMethod(Method.DELETE); - request.setEndpoint("suppression/spam_report/{email}"); + request.setEndpoint("suppression/spam_reports/{email}"); Response response = sg.api(request); Assert.assertEquals(204, response.getStatusCode()); } diff --git a/src/test/java/com/sendgrid/TestRequiredFilesExist.java b/src/test/java/com/sendgrid/TestRequiredFilesExist.java index dba8c0d5..71209ea1 100644 --- a/src/test/java/com/sendgrid/TestRequiredFilesExist.java +++ b/src/test/java/com/sendgrid/TestRequiredFilesExist.java @@ -25,12 +25,6 @@ public void checkGitIgnoreExists() { assertTrue(new File("./.gitignore").exists()); } - // ./.codeclimate.yml - @Test - public void checkCodeClimateExists() { - assertTrue(new File("./.codeclimate.yml").exists()); - } - // ./CHANGELOG.md @Test public void checkChangelogExists() {