Karman 10882 enable GitHub checks #18
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# Copyright (c) Dell Inc., or its subsidiaries. All Rights Reserved. | |
# | |
# Licensed 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 | |
# | |
name: build | |
on: [push, pull_request, workflow_dispatch] | |
# workflow_dispatch should make manually triggered ci/cd possible | |
# workflow file (like this) with `workflow_dispatch` after on should exist on the **master** or default branch, | |
# or there will be no ui for a manual trigger. https://github.community/t/workflow-dispatch-event-not-working/128856/2 | |
# | |
# Set 'GRADLE_OPTS' to pass additional custom parameters to each ./gradlew invocation in this workflow. | |
# Example '--info' or '--debug'. | |
#GRADLE_OPTS: --info | |
# The workflow begins with a compilation and static analysis job that also caches the build output and source code, | |
# followed by a number of parallel test jobs (which make use of that cached artifacts). | |
# | |
# Once the build job and all the test jobs complete successfully, a final (no-op) job ("build_and_test_complete") will | |
# automatically complete. This job must NOT be renamed as the GitHub Pravega Repository gates merges into master on | |
# this step passing. | |
# | |
# Finally, a "snapshot" job is triggered only for pushes (commits) to master and release branches, which publishes all | |
# artifacts to a public repository. | |
env: | |
GLOBAL_CACHE_PATH: | | |
~/.gradle | |
~/.m2 | |
GLOBAL_CACHE_KEY: gradle-m2-java-11 | |
GLOBAL_CACHE_RESTORE_KEYS: | | |
gradle-m2-java- | |
gradle-m2 | |
# We cache the class files, resources and build output. This is generated on the build job and reused in dependent jobs. | |
# If there are subsequent builds this includes test execution. | |
BUILD_CACHE_PATH: | | |
.gradle | |
./bin | |
**/bin | |
**/build | |
REPORTS_LOCATIONS: | | |
pravega-sensor-collector/build/reports | |
jobs: | |
build: | |
name: Build | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Build Information | |
run: echo Building a '${{ github.event_name }}' for target '${{ github.ref }}'. | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- uses: actions/setup-java@v2 | |
with: | |
distribution: 'temurin' | |
java-version: '11' | |
- name: Test script | |
run: ./scripts/build-installer.sh | |
- name: Clean | |
if: ${{ startsWith(github.ref, 'refs/heads/') }} | |
run: ./gradlew clean ${{env.GRADLE_OPTS}} | |
- name: Compile & Checkstyle | |
run: ./gradlew jar compileTest checkstyleMain checkstyleTest --parallel ${{env.GRADLE_OPTS}} | |
- name: Spotbugs | |
run: ./gradlew spotbugsMain spotbugsTest | |
- name: Tar Reports | |
run: tar --use-compress-program zstd -cf reports-${{github.job}}.tzst `echo ${{env.REPORTS_LOCATIONS}}` | |
- name: Upload Reports | |
uses: actions/upload-artifact@v2 | |
with: | |
name: ${{github.job}}-reports | |
retention-days: 4 | |
path: reports-${{github.job}}.tzst | |
# Uncomment these two lines if you need ssh access to debug a build. | |
# - name: Setup upterm session | |
# uses: lhotari/action-upterm@v1 | |
unit_test: | |
name: PSC Unit Tests | |
needs: build | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- uses: actions/setup-java@v2 | |
with: | |
distribution: 'temurin' | |
java-version: '11' | |
- name: Unit tests | |
run: ./gradlew build --parallel ${{env.GRADLE_OPTS}} | |
- name: PWD | |
run: pwd | |
- name: LS | |
run: ls | |
- name: LS PSC/build | |
run: ls pravega-sensor-collector/build | |
- name: Tar Reports | |
run: tar --use-compress-program zstd -cf reports-${{github.job}}.tzst `echo ${{env.REPORTS_LOCATIONS}}` | |
- name: Upload Reports | |
if: always() | |
uses: actions/upload-artifact@v2 | |
with: | |
name: ${{github.job}}-reports | |
retention-days: 4 | |
path: reports-${{github.job}}.tzst | |
# DO NOT RENAME THIS JOB. Mergers to master branch are gated on this completing successfully. | |
build_and_test_complete: | |
name: CI Complete | |
needs: [build, unit_test] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check Build Status | |
run: echo Build, static analysis, unit and integration tests successful. | |
- name: Checkout | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 2 | |
- name: Download code coverage reports | |
uses: actions/download-artifact@v2 | |
- name: Untar reports | |
run: ( ls */reports-*.tzst | xargs -n1 tar --use-compress-program zstd --keep-newer-files -xf ) | |
- name: Upload to Codecov | |
uses: codecov/codecov-action@v1 | |
snapshot: | |
name: Publish snapshot packages | |
needs: [build_and_test_complete] | |
# Only run this on PUSH (no pull requests) and only on the master branch and release branches. | |
if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/r0.') || startsWith(github.ref, 'refs/heads/r1.')) }} | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-java@v2 | |
with: | |
distribution: 'temurin' | |
java-version: '11' | |
- name: Assemble | |
run: ./gradlew assemble --parallel ${{env.GRADLE_OPTS}} | |
- name: Publish to GitHub Packages | |
run: ./gradlew publish -PpublishUrl=https://maven.pkg.github.com/${{github.repository}} -PpublishUsername=${{github.actor}} -PpublishPassword=${{secrets.GITHUB_TOKEN}} ${{env.GRADLE_OPTS}} |