diff options
author | Christopher Tubbs <ctubbsii@apache.org> | 2021-01-13 16:00:03 +0000 |
---|---|---|
committer | Damien Diederen <ddiederen@apache.org> | 2021-01-13 16:00:03 +0000 |
commit | d7ed7f305661c08927eb954700f7141cd18d4ff9 (patch) | |
tree | c9af41215f65d8ac25944c3112f539dff7fae544 /.github | |
parent | 7fad7ea33365304f8c268279689a6cbeed6698bc (diff) | |
download | zookeeper-d7ed7f305661c08927eb954700f7141cd18d4ff9.tar.gz |
ZOOKEEPER-3973: Add GitHub Actions for CI
* Add GitHub Actions workflows
* Add a CI workflow for PRs and branches
* Add a manual workflow for custom builds
* Remove redundant builds from Travis config (leave only s390x)
* Update build status badges on README
* Move inline links to bottom of the Markdown page for readability
* Other: normalize URLs by using https and removing trailing slashes
and unnecessary trailing .html, and fix syntax for section header
* Remove extraneous unactivated configuration from pom.xml files
(and update an XML comment to remove an extra confusing backslash)
* Add ability to disable cppunit tests independently of surefire tests
* Build only selected tests in CI workflow for now
Author: Christopher Tubbs <ctubbsii@apache.org>
Reviewers: Enrico Olivelli <eolivelli@apache.org>, Damien Diederen <ddiederen@apache.org>
Closes #1508 from ctubbsii/ZOOKEEPER-3973-github-actions
Diffstat (limited to '.github')
-rw-r--r-- | .github/workflows/ci.yaml | 88 | ||||
-rw-r--r-- | .github/workflows/manual.yaml | 85 |
2 files changed, 173 insertions, 0 deletions
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 000000000..0b578f981 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,88 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# This workflow will build a Java project with Maven +# See also: +# https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven + +name: CI + +on: + push: + branches: [ '*' ] + pull_request: + branches: [ '*' ] + +jobs: + mvn: + strategy: + matrix: + profile: + - name: 'full-build-jdk8' + jdk: 8 + args: '-Pfull-build apache-rat:check verify -DskipTests spotbugs:check checkstyle:check' + - name: 'full-build-jdk11' + jdk: 11 + args: '-Pfull-build apache-rat:check verify -DskipTests spotbugs:check checkstyle:check' + - name: 'full-build-java-tests' + jdk: 11 + args: '-Pfull-build verify -Dsurefire-forkcount=1C -DskipCppUnit -Dsurefire.rerunFailingTestsCount=5' + - name: 'full-build-cppunit-tests' + jdk: 11 + args: '-Pfull-build verify -Dtest=_ -DfailIfNoTests=false' + fail-fast: false + timeout-minutes: 360 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up JDK ${{ matrix.profile.jdk }} + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.profile.jdk }} + - name: Cache local maven repository + uses: actions/cache@v2 + with: + path: | + ~/.m2/repository/ + !~/.m2/repository/org/apache/zookeeper + key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2 + - name: Show the first log message + run: git log -n1 + - name: Install C Dependencies + run: sudo apt-get install libcppunit-dev libsasl2-dev + - name: Build with Maven (${{ matrix.profile.name }}) + run: mvn -B -V -e -ntp "-Dstyle.color=always" ${{ matrix.profile.args }} + env: + MAVEN_OPTS: -Djansi.force=true + - name: Upload unit test results + if: ${{ failure() }} + uses: actions/upload-artifact@v2 + with: + name: surefire-reports-${{ matrix.profile.name }} + path: ./**/target/surefire-reports/ + if-no-files-found: ignore + - name: Upload integration test results + if: ${{ failure() }} + uses: actions/upload-artifact@v2 + with: + name: failsafe-reports-${{ matrix.profile.name }} + path: ./**/target/failsafe-reports/ + if-no-files-found: ignore + diff --git a/.github/workflows/manual.yaml b/.github/workflows/manual.yaml new file mode 100644 index 000000000..191a8b0cd --- /dev/null +++ b/.github/workflows/manual.yaml @@ -0,0 +1,85 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# This workflow will build a Java project with Maven +# See also: +# https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven +# https://docs.github.com/en/actions/reference/events-that-trigger-workflows#manual-events + +name: Manual Build + +on: + workflow_dispatch: + inputs: + buildRef: + description: Ref to build (commit, branch, or refs/pull/1234/head or refs/pull/1234/merge) + required: true + default: refs/pull/1234/merge + mvnOpts: + description: Maven options + required: true + default: --fail-at-end + goals: + description: Maven goals + required: true + default: -Pfull-build apache-rat:check verify -DskipTests spotbugs:check checkstyle:check javadoc:jar +jobs: + mvn: + name: mvn (triggered by ${{ github.event.sender.login }}) + timeout-minutes: 360 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + ref: ${{ github.event.inputs.buildRef }} + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + java-version: 11 + - name: Cache local maven repository + uses: actions/cache@v2 + with: + path: | + ~/.m2/repository/ + !~/.m2/repository/org/apache/zookeeper + key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2 + - name: Show the first log message + run: git log -n1 + - name: Install C Dependencies + run: sudo apt-get install libcppunit-dev libsasl2-dev + - name: Build with Maven + run: mvn -B -V -e -ntp "-Dstyle.color=always" ${{ github.event.inputs.mvnOpts }} ${{ github.event.inputs.goals }} + env: + MAVEN_OPTS: -Djansi.force=true + - name: Upload unit test results + if: ${{ failure() }} + uses: actions/upload-artifact@v2 + with: + name: surefire-reports + path: ./**/target/surefire-reports/ + if-no-files-found: ignore + - name: Upload integration test results + if: ${{ failure() }} + uses: actions/upload-artifact@v2 + with: + name: failsafe-reports + path: ./**/target/failsafe-reports/ + if-no-files-found: ignore + |