Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
110 changes: 110 additions & 0 deletions .github/workflows/build-common.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
name: Reusable - Common

on:
workflow_call:
inputs:
cache-read-only:
type: boolean
required: false
no-build-cache:
type: boolean
required: false

permissions:
contents: read

jobs:
build:
name: Build
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for this project building and testing on different oses and java versions might be an overkill

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, I'll send a follow-up to remove the different OSes at least

os:
- macos-latest
- macos-13
- ubuntu-latest
test-java-version:
- 8
- 11
- 17
- 21
- 25 # renovate: datasource=java-version
# macos-latest drops support for java 8 temurin. Run java 8 on macos-13. Run java 11+ on macos-latest.
exclude:
- os: macos-latest
test-java-version: 8
- os: macos-13
test-java-version: 11
- os: macos-13
test-java-version: 17
- os: macos-13
test-java-version: 21
- os: macos-13
test-java-version: 25 # renovate: datasource=java-version

steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0

- id: setup-java-test
name: Set up Java ${{ matrix.test-java-version }} for tests
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
with:
distribution: temurin
java-version: ${{ matrix.test-java-version }}

- id: setup-java
name: Set up Java for build
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
with:
distribution: temurin
java-version: 17

- uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0

- name: build
run: >
./gradlew
build
-PtestJavaVersion=${{ matrix.test-java-version }}
-Porg.gradle.java.installations.paths=${{ steps.setup-java-test.outputs.path }},${{ steps.setup-java.outputs.path }}
- name: generate
# Skip running on macos-latest which doesn't have docker
if: matrix.os == 'ubuntu-latest'
run: ./gradlew generateSemanticConventions --console=plain

# Run spotless after generate to format generated code
- name: spotless
run: ./gradlew spotlessApply

- name: Check that semconv generation is up to date
run: |
# need to "git add" in case any generated files did not already exist
# select files from both /semconv and /semconv-incubating
git add semconv**
if git diff --cached --quiet
then
echo "No diff detected."
else
echo "Diff detected - did you run './gradlew generateSemanticConventions spotlessApply'?"
echo $(git diff --cached --name-only)
echo $(git diff --cached)
exit 1
fi
- name: Check that API diffs are up to date
run: |
# need to "git add" in case any generated files did not already exist
git add docs/apidiffs/
if git diff --cached --quiet
then
echo "No diff detected in apidiffs."
else
echo "Diff detected in apidiffs - did you run './gradlew jApiCmp'?"
echo $(git diff --cached --name-only)
echo $(git diff --cached)
exit 1
fi
Comment on lines +95 to +107
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this didn't exist previously, which is why #317 is passing even though the apidiffs are wrong after my last push to the PR

misspell-check:
uses: ./.github/workflows/reusable-misspell-check.yml
31 changes: 31 additions & 0 deletions .github/workflows/build-pull-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Build Pull Request

on:
pull_request:

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true

jobs:
common:
uses: ./.github/workflows/build-common.yml
with:
cache-read-only: true

link-check:
uses: ./.github/workflows/reusable-link-check.yml

required-status-check:
if: always()
needs:
- common
- link-check # wait for link check to complete, but don't require it to pass for merging
runs-on: ubuntu-latest
steps:
# The reusable workflow success depends on all its jobs passing
- if: needs.common.result != 'success'
run: exit 1 # fail
109 changes: 3 additions & 106 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,115 +4,12 @@ on:
push:
branches:
- main
pull_request:
- release/*
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

build wasn't running on push to release branch previously

workflow_dispatch:

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true

jobs:
build:
name: Build
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- macos-latest
- macos-13
- ubuntu-latest
test-java-version:
- 8
- 11
- 17
- 21
- 25 # renovate: datasource=java-version
# macos-latest drops support for java 8 temurin. Run java 8 on macos-13. Run java 11+ on macos-latest.
exclude:
- os: macos-latest
test-java-version: 8
- os: macos-13
test-java-version: 11
- os: macos-13
test-java-version: 17
- os: macos-13
test-java-version: 21
- os: macos-13
test-java-version: 25 # renovate: datasource=java-version

steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0

- id: setup-java-test
name: Set up Java ${{ matrix.test-java-version }} for tests
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
with:
distribution: temurin
java-version: ${{ matrix.test-java-version }}

- id: setup-java
name: Set up Java for build
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
with:
distribution: temurin
java-version: 17

- uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0

- name: build
run: >
./gradlew
build
-PtestJavaVersion=${{ matrix.test-java-version }}
-Porg.gradle.java.installations.paths=${{ steps.setup-java-test.outputs.path }},${{ steps.setup-java.outputs.path }}

- name: generate
# Skip running on macos-latest which doesn't have docker
if: matrix.os == 'ubuntu-latest'
run: ./gradlew generateSemanticConventions --console=plain

# Run spotless after generate to format generated code
- name: spotless
run: ./gradlew spotlessApply

- name: Check for diff
run: |
# need to "git add" in case any generated files did not already exist
# select files from both /semconv and /semconv-incubating
git add semconv**
if git diff --cached --quiet
then
echo "No diff detected."
else
echo "Diff detected - did you run './gradlew generateSemanticConventions spotlessApply'?"
echo $(git diff --cached --name-only)
echo $(git diff --cached)
exit 1
fi

link-check:
# release branches are excluded to avoid unnecessary maintenance
if: ${{ !startsWith(github.ref_name, 'release/') }}
uses: ./.github/workflows/reusable-link-check.yml

misspell-check:
# release branches are excluded to avoid unnecessary maintenance
if: ${{ !startsWith(github.ref_name, 'release/') }}
uses: ./.github/workflows/reusable-misspell-check.yml

required-status-check:
# markdown-link-check is not required so pull requests are not blocked if external links break
# misspell-check is not required so pull requests are not blocked if the misspell dictionary is
# updated
needs:
- build
runs-on: ubuntu-latest
if: always()
steps:
- if: |
needs.build.result != 'success'
run: exit 1
common:
uses: ./.github/workflows/build-common.yml
5 changes: 5 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,15 @@ permissions:
contents: read

jobs:
build:
uses: ./.github/workflows/build-common.yml
Comment on lines +9 to +10
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and release workflow wasn't running build


release:
permissions:
contents: write # for creating the release
runs-on: ubuntu-latest
needs:
- build
outputs:
version: ${{ steps.create-github-release.outputs.version }}
prior-version: ${{ steps.create-github-release.outputs.prior-version }}
Expand Down