Skip to content

GH-968: add missing digest functionality to path plugins #3108

GH-968: add missing digest functionality to path plugins

GH-968: add missing digest functionality to path plugins #3108

Workflow file for this run

name: Build
on:
pull_request:
branches: [main, 'v*']
push:
branches: [main]
schedule:
# Run every week on a Sunday. The time we run at (3:43am) is
# arbitrary, in the spirit of not contributing to the flood of
# GitHub builds that will occur at midnight/on the hour/on the
# half hour.
- cron: "43 3 * * 6"
workflow_dispatch: {}
jobs:
validate:
name: Validate
runs-on: ubuntu-latest
timeout-minutes: 5
outputs:
default_maven_version: ${{ steps.determine_default_maven_version.outputs.default_maven_version }}
steps:
- name: Checkout repository
uses: actions/checkout@v6
###
### Lint scripts and configuration files.
###
- name: Validate shell scripts
uses: ludeeus/action-shellcheck@master
if: ${{ ! cancelled() }}
with:
check_together: 'yes'
scandir: ./scripts
- name: Validate codecov.yml
shell: bash
if: ${{ ! cancelled() }}
run: curl -si --fail-with-body --data-binary @codecov.yml https://codecov.io/validate
###
### Lint GitHub Actions for issues.
###
- name: Lint GitHub Actions
shell: bash
if: ${{ ! cancelled() }}
run: >-
docker run
--rm
--user "$(id -u "${USER}"):$(id -g "${USER}")"
--volume "$(pwd):/repo"
--workdir /repo
rhysd/actionlint:latest
-color
-verbose
###
### Lint Java, export information about current environment for
### the next jobs to utilise.
###
- name: Initialize Java
uses: actions/setup-java@v5
if: always()
with:
cache: maven
distribution: zulu
java-version: 25
- name: Validate license headers and code style
shell: bash
if: ${{ ! cancelled() }}
# Purposely compile here so errorprone can run
run: ./mvnw -B validate compile test-compile -DskipTests
- name: Determine default Maven version
id: determine_default_maven_version
shell: bash
if: always()
run: |-
maven_version=$(./mvnw help:evaluate -Dexpression=maven.version -DforceStdout=true --quiet)
echo "Maven Version: ${maven_version}"
echo "default_maven_version=${maven_version}" >> "${GITHUB_OUTPUT}"
test:
name: Test (${{ matrix.title }})
runs-on: ${{ matrix.os-name }}
timeout-minutes: 25
needs:
- validate
strategy:
fail-fast: false
matrix:
include:
###
### Note, if adding or removing from this matrix, make sure to update the
### `after_n_builds` attribute in codecov.yml to reflect the cardinality of this
### matrix. Otherwise, coverage reporting may fail.
###
- title: lnx/x86/mvn3.9.6/jdk17
os-name: ubuntu-24.04
java-version: 17
maven-version: 3.9.6 # Minimum version
# Note: this runner is expensive!
- title: osx/arm/mvn${{ needs.validate.outputs.default_maven_version }}/jdk17
os-name: macos-26
java-version: 17
maven-version: "${{ needs.validate.outputs.default_maven_version }}"
- title: win/x86/mvn${{ needs.validate.outputs.default_maven_version }}/jdk17
os-name: windows-2025
java-version: 17
maven-version: "${{ needs.validate.outputs.default_maven_version }}"
- title: win/arm/mvn${{ needs.validate.outputs.default_maven_version }}/jdk21
os-name: windows-11-arm
java-version: 21 # This is the earliest-supported version on Windows ARM
maven-version: "${{ needs.validate.outputs.default_maven_version }}"
- title: lnx/arm/mvn${{ needs.validate.outputs.default_maven_version }}/jdk17
os-name: ubuntu-24.04-arm
java-version: 17
maven-version: "${{ needs.validate.outputs.default_maven_version }}"
- title: lnx/x86/mvn${{ needs.validate.outputs.default_maven_version }}/jdk17
os-name: ubuntu-24.04
java-version: 17
maven-version: "${{ needs.validate.outputs.default_maven_version }}"
- title: lnx/x86/mvn${{ needs.validate.outputs.default_maven_version }}/jdk21
os-name: ubuntu-24.04
java-version: 21
maven-version: "${{ needs.validate.outputs.default_maven_version }}"
- title: lnx/x86/mvn${{ needs.validate.outputs.default_maven_version }}/jdk25
os-name: ubuntu-24.04
java-version: 25
maven-version: "${{ needs.validate.outputs.default_maven_version }}"
- title: lnx/x86/mvn4.0.0/jdk17
os-name: ubuntu-24.04
java-version: 17
maven-version: 4.0.0-rc-5
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Initialize Java
uses: actions/setup-java@v5
with:
cache: maven
java-version: ${{ matrix.java-version }}
distribution: zulu
- name: Install dependencies
shell: bash
run: |-
scripts/prepare-runner.sh
scripts/install-protoc-to-github-runner.sh
scripts/install-grpc-java-to-github-runner.sh
- name: Override Maven version in project
shell: bash
run: |-
./mvnw -B -T1 -q wrapper:wrapper "-Dmaven=${{ matrix.maven-version }}"
./mvnw --version
- name: Build and test
shell: bash
run: time ./mvnw -B -e -Dcheckstyle.skip -Dlicense.skip clean verify
- name: Publish coverage to Codecov
uses: codecov/codecov-action@v5
continue-on-error: true
if: ${{ ! cancelled() }}
with:
flags: maven-${{ matrix.maven-version }}-java-${{ matrix.java-version }}-${{ matrix.os-name }}
report_type: coverage
token: ${{ secrets.CODECOV_TOKEN }}
- name: Publish test results to Codecov
uses: codecov/codecov-action@v5
continue-on-error: true
if: ${{ ! cancelled() }}
with:
flags: maven-${{ matrix.maven-version }}-java-${{ matrix.java-version }}-${{ matrix.os-name }}
report_type: test_results
token: ${{ secrets.CODECOV_TOKEN }}
- name: Upload build logs as artifacts
uses: actions/upload-artifact@v7
if: always()
with:
name: jdk-${{ matrix.java-version }}-${{ matrix.os-name }}-${{ matrix.maven-version }}
path: |-
**/build.log
**/maven-status/**
**/*-reports/**.txt
**/*-reports/**.xml
**/*.dumpstream
compression-level: 9
retention-days: 7
include-hidden-files: true
if-no-files-found: warn
documentation:
name: Documentation
runs-on: ubuntu-latest
timeout-minutes: 10
needs:
- validate
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Initialize Java
uses: actions/setup-java@v5
with:
cache: maven
distribution: zulu
java-version: 25
- name: Build site
shell: bash
run: |-
./mvnw -B -e site \
-Dmaven.test.skip \
-Dinvoker.skip \
-Dcheckstyle.skip \
-Dlicense.skip
- name: Upload generated site as artifact
uses: actions/upload-artifact@v7
with:
name: site
path: protobuf-maven-plugin/target/site/**
compression-level: 9
retention-days: 7
include-hidden-files: true
if-no-files-found: error