From 9e6b5adc6e373ed213819e9674725aa4ef8a2ae3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leonard=20Br=C3=BCnings?= Date: Mon, 23 Mar 2026 19:05:22 +0100 Subject: [PATCH 1/3] Add typing information for use by typesafegithub (#814) Introduces type descriptor YAML files for GitHub Actions in the repository, improving type safety and documentation for action inputs and outputs. It also adds a new GitHub Actions workflow to validate these typings automatically on pushes and pull requests. The changes are grouped into the addition of type descriptor files for various actions and the automation of their validation. https://github.com/typesafegithub/github-actions-typing **Type descriptor files for GitHub Actions:** * Added `action-types.yml` files to `setup-gradle`, `dependency-submission`, and `wrapper-validation` actions, specifying input and output types for each action to improve type safety and documentation. [[1]](diffhunk://#diff-542de74831b6dc1954ff20a4c329b170053c82087ea7df742bd536156133f25bR1-R171) [[2]](diffhunk://#diff-44708a3af3d0f3cfed1873f9b77d7e815c6c14e941fa3dd5ed08835a69d67855R1-R146) [[3]](diffhunk://#diff-3fe1028d7aa5ee815c90fa580d4f62e646f0b9a4b7372f227fc131a56948ace0R1-R17) **Automation and validation:** * Introduced a new GitHub Actions workflow `.github/workflows/ci-validate-typings.yml` to automatically validate action typings on pushes to `main` and `release/**` branches, as well as on pull requests. This uses the `github-actions-typing` action for validation. --- .github/workflows/ci-validate-typings.yml | 19 +++ dependency-submission/action-types.yml | 146 ++++++++++++++++++ setup-gradle/action-types.yml | 171 ++++++++++++++++++++++ wrapper-validation/action-types.yml | 17 +++ 4 files changed, 353 insertions(+) create mode 100644 .github/workflows/ci-validate-typings.yml create mode 100644 dependency-submission/action-types.yml create mode 100644 setup-gradle/action-types.yml create mode 100644 wrapper-validation/action-types.yml diff --git a/.github/workflows/ci-validate-typings.yml b/.github/workflows/ci-validate-typings.yml new file mode 100644 index 00000000..3cea55db --- /dev/null +++ b/.github/workflows/ci-validate-typings.yml @@ -0,0 +1,19 @@ +name: ci-validate-typings.yml +on: + push: + branches: + - 'main' + - 'release/**' + paths-ignore: + - 'dist/**' + pull_request: + +permissions: + contents: read + +jobs: + validate-typings: + runs-on: "ubuntu-latest" + steps: + - uses: actions/checkout@v6 + - uses: typesafegithub/github-actions-typing@v2 diff --git a/dependency-submission/action-types.yml b/dependency-submission/action-types.yml new file mode 100644 index 00000000..09f0f8be --- /dev/null +++ b/dependency-submission/action-types.yml @@ -0,0 +1,146 @@ +# Type descriptors based on https://github.com/typesafegithub/github-actions-typing +inputs: + # Gradle execution configuration + gradle-version: + type: string + + build-root-directory: + type: string + + dependency-resolution-task: + type: string + + additional-arguments: + type: string + + # Cache configuration + cache-disabled: + type: boolean + + cache-read-only: + type: boolean + + cache-write-only: + type: boolean + + cache-overwrite-existing: + type: boolean + + cache-encryption-key: + type: string + + cache-cleanup: + type: enum + allowed-values: + - never + - on-success + - always + + gradle-home-cache-cleanup: + type: boolean + + gradle-home-cache-includes: + type: list + separator: '\n' + list-item: + type: string + + gradle-home-cache-excludes: + type: list + separator: '\n' + list-item: + type: string + + # Job summary configuration + add-job-summary: + type: enum + allowed-values: + - never + - always + - on-failure + + add-job-summary-as-pr-comment: + type: enum + allowed-values: + - never + - always + - on-failure + + # Dependency Graph configuration + dependency-graph: + type: enum + allowed-values: + - generate-and-submit + - generate-submit-and-upload + - generate-and-upload + - download-and-submit + + dependency-graph-report-dir: + type: string + + dependency-graph-continue-on-failure: + type: boolean + + dependency-graph-exclude-projects: + type: string + + dependency-graph-include-projects: + type: string + + dependency-graph-exclude-configurations: + type: string + + dependency-graph-include-configurations: + type: string + + artifact-retention-days: + type: integer + + # Build Scan configuration + build-scan-publish: + type: boolean + + build-scan-terms-of-use-url: + type: enum + allowed-values: + - https://gradle.com/terms-of-service + - https://gradle.com/help/legal-terms-of-use + + build-scan-terms-of-use-agree: + type: enum + allowed-values: + - 'yes' + + develocity-access-key: + type: string + + develocity-token-expiry: + type: integer + + # Wrapper validation configuration + validate-wrappers: + type: boolean + + allow-snapshot-wrappers: + type: boolean + + # Experimental action inputs + gradle-home-cache-strict-match: + type: boolean + + # Internal action inputs + workflow-job-context: + type: string + + github-token: + type: string + +outputs: + build-scan-url: + type: string + + dependency-graph-file: + type: string + + gradle-version: + type: string diff --git a/setup-gradle/action-types.yml b/setup-gradle/action-types.yml new file mode 100644 index 00000000..b7e62812 --- /dev/null +++ b/setup-gradle/action-types.yml @@ -0,0 +1,171 @@ +# Type descriptors based on https://github.com/typesafegithub/github-actions-typing +inputs: + gradle-version: + type: string + + # Cache configuration + cache-disabled: + type: boolean + + cache-read-only: + type: boolean + + cache-write-only: + type: boolean + + cache-overwrite-existing: + type: boolean + + cache-encryption-key: + type: string + + cache-cleanup: + type: enum + allowed-values: + - never + - on-success + - always + + gradle-home-cache-cleanup: + type: boolean + + gradle-home-cache-includes: + type: list + separator: '\n' + list-item: + type: string + + gradle-home-cache-excludes: + type: list + separator: '\n' + list-item: + type: string + + # Job summary configuration + add-job-summary: + type: enum + allowed-values: + - never + - always + - on-failure + + add-job-summary-as-pr-comment: + type: enum + allowed-values: + - never + - always + - on-failure + + # Dependency Graph configuration + dependency-graph: + type: enum + allowed-values: + - disabled + - generate + - generate-and-submit + - generate-and-upload + - download-and-submit + + dependency-graph-report-dir: + type: string + + dependency-graph-continue-on-failure: + type: boolean + + dependency-graph-exclude-projects: + type: string + + dependency-graph-include-projects: + type: string + + dependency-graph-exclude-configurations: + type: string + + dependency-graph-include-configurations: + type: string + + artifact-retention-days: + type: integer + + # Build Scan configuration + build-scan-publish: + type: boolean + + build-scan-terms-of-use-url: + type: enum + allowed-values: + - https://gradle.com/terms-of-service + - https://gradle.com/help/legal-terms-of-use + + build-scan-terms-of-use-agree: + type: enum + allowed-values: + - 'yes' + + develocity-access-key: + type: string + + develocity-token-expiry: + type: integer + + develocity-injection-enabled: + type: boolean + + develocity-url: + type: string + + develocity-allow-untrusted-server: + type: boolean + + develocity-capture-file-fingerprints: + type: boolean + + develocity-enforce-url: + type: boolean + + develocity-plugin-version: + type: string + + develocity-ccud-plugin-version: + type: string + + gradle-plugin-repository-url: + type: string + + gradle-plugin-repository-username: + type: string + + gradle-plugin-repository-password: + type: string + + # Wrapper validation configuration + validate-wrappers: + type: boolean + + allow-snapshot-wrappers: + type: boolean + + # Deprecated action inputs + arguments: + type: string + + # Experimental action inputs + gradle-home-cache-strict-match: + type: boolean + + # Internal action inputs + workflow-job-context: + type: string + + github-token: + type: string + +outputs: + build-scan-url: + type: string + + dependency-graph-file: + type: string + + gradle-version: + type: string diff --git a/wrapper-validation/action-types.yml b/wrapper-validation/action-types.yml new file mode 100644 index 00000000..1e573863 --- /dev/null +++ b/wrapper-validation/action-types.yml @@ -0,0 +1,17 @@ +# Type descriptors based on https://github.com/typesafegithub/github-actions-typing +inputs: + min-wrapper-count: + type: integer + + allow-snapshots: + type: boolean + + allow-checksums: + type: list + separator: ',' + list-item: + type: string + +outputs: + failed-wrapper: + type: string From f663ed9f3df12f3ffa85c5933a22d9ed4089c04e Mon Sep 17 00:00:00 2001 From: Daz DeBoer Date: Mon, 23 Mar 2026 12:10:10 -0600 Subject: [PATCH 2/3] Ignore internal action files for type validation --- .github/workflows/ci-validate-typings.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/ci-validate-typings.yml b/.github/workflows/ci-validate-typings.yml index 3cea55db..be89e914 100644 --- a/.github/workflows/ci-validate-typings.yml +++ b/.github/workflows/ci-validate-typings.yml @@ -17,3 +17,8 @@ jobs: steps: - uses: actions/checkout@v6 - uses: typesafegithub/github-actions-typing@v2 + with: + ignored-action-files: | + .github/actions/build-dist/action.yml + .github/actions/init-integ-test/action.yml + action.yml From 3d0e2a88dadc8577c2e0616f03a95b9b60f3410b Mon Sep 17 00:00:00 2001 From: Daz DeBoer Date: Mon, 23 Mar 2026 12:11:47 -0600 Subject: [PATCH 3/3] Pin version for github actions --- .github/workflows/ci-validate-typings.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-validate-typings.yml b/.github/workflows/ci-validate-typings.yml index be89e914..0005d0f9 100644 --- a/.github/workflows/ci-validate-typings.yml +++ b/.github/workflows/ci-validate-typings.yml @@ -15,8 +15,8 @@ jobs: validate-typings: runs-on: "ubuntu-latest" steps: - - uses: actions/checkout@v6 - - uses: typesafegithub/github-actions-typing@v2 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: typesafegithub/github-actions-typing@9ddf35b71a482be7d8922b28e8d00df16b77e315 # v2.2.2 with: ignored-action-files: | .github/actions/build-dist/action.yml