aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/ci.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/ci.yml')
-rw-r--r--.github/workflows/ci.yml106
1 files changed, 106 insertions, 0 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..da82e7d
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,106 @@
+#
+# CI build that assembles artifacts and runs tests.
+# If validation is successful this workflow releases from the main dev branch.
+#
+# - skipping CI: add [skip ci] to the commit message
+# - skipping release: add [skip release] to the commit message
+#
+name: CI
+
+on:
+ push:
+ branches:
+ - main
+ tags-ignore:
+ - v* # release tags are automatically generated after a successful CI build, no need to run CI against them
+ pull_request:
+ branches:
+ - main
+
+jobs:
+
+ #
+ # SINGLE-JOB
+ #
+ verify:
+ runs-on: ubuntu-latest
+ if: "! contains(toJSON(github.event.commits.*.message), '[skip ci]')"
+
+ steps:
+
+ - name: 1. Check out code
+ uses: actions/checkout@v2 # https://github.com/actions/checkout
+
+ - name: 2. Set up Java 8
+ uses: actions/setup-java@v1 # https://github.com/actions/setup-java
+ with:
+ java-version: 8
+
+ - name: 3. Validate Gradle wrapper
+ uses: gradle/wrapper-validation-action@v1 # https://github.com/gradle/wrapper-validation-action
+
+ #
+ # Main build job
+ #
+ build:
+ needs: [verify]
+ runs-on: ubuntu-latest
+
+ # Definition of the build matrix
+ strategy:
+ matrix:
+ mock-maker: ['mock-maker-default', 'mock-maker-inline']
+ kotlin: ['1.3.50', '1.4.21']
+ # Note that the old Travis CI referenced other Kotlin versions: '1.0.7', '1.1.61', '1.2.50'
+ # However, those versions of Kotlin don't work with latest Gradle
+
+ steps:
+
+ - name: 1. Check out code
+ uses: actions/checkout@v2 # https://github.com/actions/checkout
+
+ - name: 2. Set up Java 8
+ uses: actions/setup-java@v1 # https://github.com/actions/setup-java
+ with:
+ java-version: 8
+
+ - name: 3. Build with Kotlin ${{ matrix.kotlin }} and mock-maker ${{ matrix.mock-maker }}
+ run: |
+ ops/mockMakerInline.sh
+ ./gradlew build
+ env:
+ KOTLIN_VERSION: ${{ matrix.kotlin }}
+ MOCK_MAKER: ${{ matrix.mock-maker }}
+
+ #
+ # Release job, only for pushes to the main development branch
+ #
+ release:
+ runs-on: ubuntu-latest
+ needs: [build] # build job must pass before we can release
+
+ if: github.event_name == 'push'
+ && github.ref == 'refs/heads/main'
+ && github.repository == 'mockito/mockito-kotlin'
+ && !contains(toJSON(github.event.commits.*.message), '[skip release]')
+
+ steps:
+
+ - name: Check out code
+ uses: actions/checkout@v2 # https://github.com/actions/checkout
+ with:
+ fetch-depth: '0' # https://github.com/shipkit/shipkit-changelog#fetch-depth-on-ci
+
+ - name: Set up Java 8
+ uses: actions/setup-java@v1
+ with:
+ java-version: 8
+
+ - name: Build and release
+ run: ./gradlew githubRelease publishToSonatype closeAndReleaseStagingRepository
+ env:
+ GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
+ NEXUS_TOKEN_USER: ${{secrets.NEXUS_TOKEN_USER}}
+ NEXUS_TOKEN_PWD: ${{secrets.NEXUS_TOKEN_PWD}}
+ PGP_KEY: ${{secrets.PGP_KEY}}
+ PGP_PWD: ${{secrets.PGP_PWD}}