Skip to content

Release v5.6.0#514

Open
mkolasinski-splunk wants to merge 29 commits into
mainfrom
develop
Open

Release v5.6.0#514
mkolasinski-splunk wants to merge 29 commits into
mainfrom
develop

Conversation

@mkolasinski-splunk

Copy link
Copy Markdown
Contributor

Description

(PR description goes here)

Checklist

  • README.md has been updated or is not required
  • push trigger tests
  • manual release test
  • automated releases test
  • pull request trigger tests
  • schedule trigger tests
  • workflow errors/warnings reviewed and addressed

Testing done

(for each selected checkbox, the corresponding test results link should be listed here)

mbruzda-splunk and others added 2 commits June 15, 2026 12:52
## Summary

- Fast-forwards `develop` to match `main` (tip: `36d2c0f`)
- Brings in 20 commits that landed on `main` since last sync (#492),
including fixes for PAT/GitHub App auth, spl2 tests, ubuntu 16.04 EOL
drop, and manifests pin
- No unique commits on `develop` that are missing from `main`

🤖 Generated with [Claude Code](https://claude.com/claude-code)
## What

Bumps all GitHub Actions still bundling the deprecated Node 20 runtime
to their first major version that targets Node 24, resolving the
`Node.js 20 is deprecated` warnings across all jobs in this workflow
family.

| Action | Before | After |
|---|---|---|
| `actions/checkout` | v4 | v5 |
| `actions/setup-python` | v5 | v6 |
| `actions/download-artifact` | v4 | v7 |
| `actions/upload-artifact` | v4 | v6 |
| `actions/cache` | v4 | v5 |
| `amannn/action-semantic-pull-request` | v5.5.3 | v6.1.1 |
| `aws-actions/configure-aws-credentials` | v4 | v6 |
| `dorny/test-reporter` | v1.9.1 | v3.0.0 |
| `geekyeggo/delete-artifact` | v5 | v6 |
| `softprops/action-gh-release` | v2 | v3 |

Applied consistently across all four workflow files:
- `reusable-build-test-release.yml`
- `build-test-release.yaml`
- `reusable-publish-to-splunkbase.yml`
- `reusable-validate-deploy-docs.yml`

### Left unchanged (already Node 24, or docker/composite)
`setup-java@v5`, `create-github-app-token@v3`, `amazon-ecr-login@v2`,
`svenstaro/upload-release-action@v2`, and all docker/composite actions
(`splunk/*`, `fsfe/reuse-action`, `pre-commit/action`, `trufflehog`,
`skywalking-eyes`).

## Testing

Ran the full `build-test-release` pipeline on
`splunk-add-on-for-microsoft-cloud-services` pointed at this branch —
**pipeline succeeded**, and the Node 20 deprecation warnings are gone
from every job that consumes these actions (build, setup, meta, unit
tests, all appinspect jobs, etc.).


https://github.com/splunk/splunk-add-on-for-microsoft-cloud-services/actions/runs/28662878022

### Known remaining warnings (out of scope — external sources)
- `pre-commit` job → `actions/cache@v4` is hardcoded inside
`pre-commit/action@v3.0.1` (latest release).
- `semgrep / sast-scan` job → `checkout@v4` / `upload-artifact@v4` come
from `splunk/sast-scanning/.github/workflows/sast-scan.yml@main`
(separate repo; addressed here:
splunk/sast-scanning#7).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
@mkolasinski-splunk
mkolasinski-splunk requested a review from a team as a code owner July 9, 2026 12:02
mkolasinski-splunk and others added 27 commits July 10, 2026 10:02
…n ADDON-88924 (#513)

## Summary
- Splits the single monolithic `run-spl2-tests` box-test job into a
matrix, one job per pipeline subdirectory under
`package/default/data/spl2/` (discovered dynamically in
`setup-workflow`), plus a `__root__` shard for any top-level
`*.test.json`/`*.test.spl2` fixtures.
- Each shard is scoped with `--test_dir` (using
`spl2-testing-framework`'s existing directory-scoping support — no
framework changes needed); `--code_dir` stays pointed at the full tree
so module resolution still works for TAs that don't duplicate pipeline
code per-subdirectory.
- Motivated by the AWS TA SPL2 suite, where one pipeline
(`aws_cloudtrail`) accounts for ~78% of all box tests and made the
single job take 4+ hours; sharding lets pipelines with skewed test-count
distributions run concurrently instead of serially.

## Test plan
- [x] Verify against `splunk-add-on-for-amazon-web-services`
(`feature/spl2-content-for-aws-ta`) via a throwaway PR pointing
`build-test-release.yml`'s `uses:` at this branch — confirm shard
discovery finds
`aws_cloudtrail`/`aws_cloudwatch`/`aws_cloudwatchlogs_vpcflow`/`__root__`,
all four run in parallel, and total test count/pass-fail matches the
current single-job baseline.
[link](https://github.com/splunk/splunk-add-on-for-amazon-web-services/actions/runs/28942569538/job/85878959228a)

🤖 Generated with [Claude Code](https://claude.com/claude-code)
## Summary

- Add `actions/upload-artifact@v4` step to `run-spl2-tests` job so test
results are preserved as downloadable artifacts after each run
- Matches the artifact upload pattern already used in
`run-knowledge-tests` and `run-unit-tests`
- Artifact named `spl2 test results`, contains the `test-results/`
directory with JUnit XML output

## Test plan

- [ ] Verify CI runs `run-spl2-tests` and produces a downloadable `spl2
test results` artifact
- [ ] Confirm artifact contains `test-results/report.xml`

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…sable release workflow (#503)

## Summary

This PR updates the reusable add-on build-test-release workflow to split
FOSSA findings into separate license and vulnerability checks, improve
release gating, and document the new workflow behavior.
JIRA Link - []https://splunk.atlassian.net/browse/ADDON-87374

## Changes

- Extends `fossa-scan` to run `fossa test --debug` in a dedicated step
(only when analyze succeeds) and upload its output as the
`fossa-test-output` artifact
- Adds separate lightweight FOSSA CI jobs that parse
`fossa-test-output`:
- `fossa-license-test` — extracts and counts issues from the `COMPLIANCE
ISSUES` section
- `fossa-vulnerability-test` — extracts and counts issues from the
`SECURITY ISSUES` section
  - Exposes separate pipeline outputs for:
    - active license issues
    - active vulnerability issues
    - release-blocking vulnerability issues
- Publishes separate job summaries for license and vulnerability
findings.
- Updates `pre-publish` release gating so release paths can block
independently on:
    - unresolved vulnerability issues
- Keeps merge-to-develop and other non-release workflows usable by
reporting split FOSSA results without enforcing release gating there.
- Updates README documentation for the new split FOSSA jobs and release
gating behavior.

### Checklist

- [X] `README.md` has been updated
- [ ] push trigger tests
- [ ] manual release test
- [ ] automated releases test
- [X] pull request trigger tests
- [ ] schedule trigger tests
- [ ] workflow errors/warnings reviewed and addressed

### Tested TA GitHub Actions run:
1. Successful FOSSA Tests for Apache web server TA -
[]https://github.com/splunk/splunk-add-on-for-apache-web-server/actions/runs/29075781494
2. Crowdstrike TA FOSSA tests failure -
[]https://github.com/splunk/splunk-add-on-for-crowdstrike-fdr/actions/runs/29077637023
3. Salesforce TA FOSSA tests failure -
[]https://github.com/splunk/splunk-add-on-for-salesforce/actions/runs/29077050887

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
### Description

This PR bumps matrix version to 3.2 including Splunk 10.4
### Checklist

- [ ] `README.md` has been updated or is not required
- [ ] push trigger tests
- [ ] manual release test
- [ ] automated releases test
- [ ] pull request trigger tests
- [ ] schedule trigger tests
- [ ] workflow errors/warnings reviewed and addressed

### Testing done 
(for each selected checkbox, the corresponding test results link should
be listed here)
…execution ADDON-88924" (#516)

Reverts #513
No longer needed due to improvements on spl2-cli side
## Summary
- Adds a step to the `validate-pr-title` job that enforces `ADDON-XXXXX`
(5–6 digit Jira ticket number) in the PR title, failing with a clear
`::error::` annotation if missing (runs after the existing semantic PR
title check).
- Adds a new `comment-on-jira` job: on push to `main`/`develop`, scans
commit messages for `ADDON-XXXXX` references and posts a comment on each
referenced ticket linking back to the commit (and originating PR, if
found), worded to match the existing GitLab→Jira integration convention
(`{author} mentioned this issue in a commit of {repo} on branch
{branch}:`).
- Auth via `ATLASSIAN_EMAIL`/`ATLASSIAN_TOKEN` secrets (hardcoded
`https://splunk.atlassian.net` base URL), matching the naming convention
already used by `addonfactory-docs-on-github-integration`; posts via raw
Jira REST API v3 + ADF body rather than `atlassian/gajira-comment`
(which has a known RCE, CVE-2020-14189).
- Never fails the workflow: a failed Jira API call only logs a
`::warning::`.

## Test plan
- [x] Open a PR without `ADDON-XXXXX` in the title → job fails with the
error message
- [x] Open a PR with `ADDON-12345` or `ADDON-123456` in the title → job
passes
- [x] Verify existing semantic PR title validation still works
- [x] **Live end-to-end verification against
`splunk/test-addonfactory-repo`** (sandbox repo, temporarily pointed at
this branch, reverted to `v5.4` after each round), commenting on real
ticket [ADDON-88759](https://splunk.atlassian.net/browse/ADDON-88759):
- `pull_request` event → `comment-on-jira` correctly `skipped` (job only
fires on `push`)
- Push directly to `main`, no originating PR → comment posted with
commit link only, no "via PR" clause
([run](https://github.com/splunk/test-addonfactory-repo/actions/runs/28979594348))
- Push to `main` via squash-merged PR → comment posted with commit link
**and** correct PR link
([run](https://github.com/splunk/test-addonfactory-repo/actions/runs/28979730875),
[PR #374](splunk/test-addonfactory-repo#374))
- Push with a mix of a ticket-referencing and a non-referencing commit →
only the referencing commit produced a comment (dedup/skip logic
confirmed)
([run](https://github.com/splunk/test-addonfactory-repo/actions/runs/28980385679))
- Bug found and fixed during testing: initial run 403'd on the PR lookup
(job only had `contents: read`) and leaked the raw error JSON into the
comment's link `href`
([run](https://github.com/splunk/test-addonfactory-repo/actions/runs/28978879858),
see resulting [malformed
comment](https://splunk.atlassian.net/browse/ADDON-88759)) — fixed by
adding `pull-requests: read` and guarding the `gh api` failure path
(`1c8ba82`)
- Final wording verified live: "mkolasinski-splunk mentioned this issue
in a commit of splunk/test-addonfactory-repo on branch main:"
([run](https://github.com/splunk/test-addonfactory-repo/actions/runs/28980385679))

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude <noreply@anthropic.com>
Adds a fossa-ignore-vulnerabilities workflow_call input (JSON array of
"package@version" strings) so callers can filter out known false
positives, such as urllib3@1.26.19, before the fossa-vulnerability-test
job counts issues and fails.

### Description

(PR description goes here)

### Checklist

- [ ] `README.md` has been updated or is not required
- [ ] push trigger tests
- [ ] manual release test
- [ ] automated releases test
- [ ] pull request trigger tests
- [ ] schedule trigger tests
- [ ] workflow errors/warnings reviewed and addressed

### Testing done 
(for each selected checkbox, the corresponding test results link should
be listed here)

Co-authored-by: Claude <noreply@anthropic.com>
### Description

Utilise new feature of spl2-testing-base and add --cli_cache to speed up
spl2 tests executin

### Checklist

- [ ] `README.md` has been updated or is not required
- [ ] push trigger tests
- [ ] manual release test
- [ ] automated releases test
- [ ] pull request trigger tests
- [ ] schedule trigger tests
- [ ] workflow errors/warnings reviewed and addressed

### Testing done 
(for each selected checkbox, the corresponding test results link should
be listed here)
… to main] (#519)

## Summary

- GS Scorecard tool remains available via `execute_gs_scorecard` label —
developers can still use it
- Scorecard results (pass/fail/missing) are now reported as
`::warning::` instead of `::error::` and never cause the job to fail
- Removed the `pre-publish` gate that blocked releases when scorecard
was skipped on PRs to main
- Fixes cases where scorecard flags checks as not checked,
unintentionally blocking releases



https://github.com/splunk/splunk-add-on-for-cisco-esa/actions/runs/27544575031/job/81415137332?pr=480#step:9:268

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

### Description

(PR description goes here)

### Checklist

- [ ] `README.md` has been updated or is not required
- [ ] push trigger tests
- [ ] manual release test
- [ ] automated releases test
- [ ] pull request trigger tests
- [ ] schedule trigger tests
- [ ] workflow errors/warnings reviewed and addressed

### Testing done 
(for each selected checkbox, the corresponding test results link should
be listed here)
…t selection (#522)

## Summary

Generate and publish Swagger artifacts for add-ons with UCC modinput
tests even when the UCC test job is not selected.

## Root cause

Swagger artifact upload was tied to `execute-ucc_modinput`. When that
test job was skipped, TACO later failed because the build-specific S3
prefix did not contain `swagger_client`.

## Changes

- Detect whether `tests/ucc_modinput_functional` exists.
- Use that capability, rather than test selection, when uploading and
downloading the OpenAPI artifact.
- Preserve existing UCC test-selection behavior.

## Validation

- Parsed workflow YAML.
- Ran diff whitespace checks.

## Related

- ADDON-89264
…8928) (#523)

## Summary

ADDON-88928: PR/push targeting `release/*` branches was running Splunk
tests against latest-Splunk-only instead of the full supported matrix.
The `meta` job's `determine_splunk` step only special-cased
`main`/`develop`, so `release/*` fell into the latest-only `else` branch
— exactly where full-matrix coverage matters most before cutting a
release.

## Change

- `reusable-build-test-release.yml`: extend the `determine_splunk`
condition to also treat `release/*` as full-matrix — for PR (`base_ref`)
and for push (`ref_name`, gated by `execute-tests-on-push-to-release` to
match the existing push gate).
- `README.md`: document the `release/*` full-matrix behavior.

## Validated (test-addonfactory-repo)

- PR into a `release/*` base (test-addonfactory-repo#376): `meta` job
succeeded; the job-summary consumed the **full 5-version matrix**
`[10.2.5, 10.0.8, 9.4.13, 9.3.14, 10.4.1]` instead of latest-only
`[10.4.1]`. AC confirmed.
- A control PR against unmodified `@develop` reproduced a pre-existing
`startup_failure` (missing `GH_TOKEN_ADMIN` passthrough in the caller),
proving the failure was environmental and independent of this change;
adding the passthrough unblocked the run.

JIRA: https://splunk.atlassian.net/browse/ADDON-88928

---------

Co-authored-by: Claude <noreply@anthropic.com>
…DDON-89094) (#524)

## Summary
- Bump GitHub Action pins: `actions/checkout@v7`,
`actions/upload-artifact@v7`, `actions/download-artifact@v8`,
`actions/cache@v6.1.0`, `fsfe/reuse-action@v6.0.0`,
`trufflesecurity/trufflehog@v3.95.9`,
`splunk/appinspect-cli-action@v2.13.0`; normalize `matrix-action@v3.1` →
`@v3.2`.
- Bump `POETRY_VERSION` to `2.4.1` and `POETRY_EXPORT_PLUGIN_VERSION` to
`1.10.0` (latest on PyPI as of this bump).
- Bump the `python-version` input default from `3.9` to `3.13`, since
poetry 2.4.1 requires Python >=3.10. README updated to match.

## Validation
Two-tier validation against `splunk/test-addonfactory-repo`, branched
off the PR that repoints test-repo `main` at `@release/5.6.0`
(splunk/test-addonfactory-repo#378) to inherit `GH_TOKEN_ADMIN` and the
release-pinned reusable workflow.

- Control run (python-version 3.9, all other bumps applied): all jobs
green, including `quality-appinspect-cloud` —
https://github.com/splunk/test-addonfactory-repo/actions/runs/29605639162
- Validation run (python-version 3.13):
https://github.com/splunk/test-addonfactory-repo/actions/runs/29637138898
- `run-unit-tests`: **PASS** — confirms the poetry/Python version fix
(poetry 2.4.1 requires >=3.10; the prior default of 3.9 broke `pip
install poetry==2.4.1`).
- `quality-appinspect-cloud`: fails on
`check_all_python_files_are_well_formed`, flagging vendored third-party
files (`lib/pkg_resources/_vendor/...`) in the test-repo's fixture TA.
This is expected: with `PYTHON_VERSION=3.13` appinspect now validates
against the 3.13 interpreter, and the fixture TA's vendored libs aren't
3.13-clean. The workflow is behaving correctly (validating against the
interpreter the TA will actually run on); this is a property of the
fixture TA, not a workflow defect. Real consumer TAs address this via
`.appinspect.expect.yaml`.
- `run-ui-tests (10.4.1, ...)`: fails on a Selenium `TimeoutException:
Could not log in to the Splunk instance` after retries — an infra flake
unrelated to this change.
- `Validate PR title`: fails on both this run and the control run —
pre-existing, unrelated (semantic-PR check on the throwaway validation
PR's title).

## Test plan
- [x] Control run confirms all other bumps validated clean
- [x] Validation run confirms `run-unit-tests` green under
python-version 3.13
- [x] appinspect-cloud failure root-caused to fixture-TA vendored libs,
not a workflow defect
- [x] UI test failure confirmed to be Splunk-login-timeout infra flake,
unrelated
## Summary
- `dorny/test-reporter@v3.0.0` (bumped in #512) defaults
`use-actions-summary` to `true`, which skips check-run creation entirely
— the code path that sets the `url`/`url_html` outputs never runs.
That's why the Test Report stage's rendering changed and why
`job_summary.txt`'s report-link column went empty.
- Sets `use-actions-summary: false` on all 8 `Test Report` steps to
restore v1.9.1 behavior: check run created, `url_html` populated,
`job_summary.txt` -> artifact -> aggregated Report Link table works as
before.

## Test plan
- [x] YAML validated (`yaml.safe_load`)
- [ ] Confirm a downstream TA run shows a populated Report Link in the
aggregated summary table
…526)

## Summary
- Sibling validation for ADDON-87662 (Splunk 9.4 `python.version`
support in `server.conf`) passed against real TAs via throwaway sibling
PRs (not for merge):
[salesforce#897](splunk/splunk-add-on-for-salesforce#897),
[aws#1707](splunk/splunk-add-on-for-amazon-web-services#1707),
[sysmon#369](splunk/splunk-add-on-for-microsoft-sysmon#369).
- Bumps default pins so `release/5.6.0` actually picks up the
capability:
- `k8s-manifests-branch` default `v4.2` -> `v4.3` (postStart hook sets
`python.version` in `server.conf` for Splunk 9.4 variants) —
[ta-automation-k8s-manifests#148](splunk/ta-automation-k8s-manifests#148)
- `wfe-test-runner-action@v5.2` -> `@main` (`server-conf-python-version`
input) —
[wfe-test-runner-action#50](splunk/wfe-test-runner-action#50)
(no release tag yet, pinning to `main` for now)
- `addonfactory-test-matrix-action@v3.2` -> `@v3.3`
(`supportedSplunkModinput` output with `python.version` variants) —
[addonfactory-test-matrix-action#213](splunk/addonfactory-test-matrix-action#213)

## Test plan
- [x] YAML validated (`yaml.safe_load`)
- [ ] Confirm downstream TA CI run picks up python.version variants
correctly
Splits run-unit-tests into run-unit-tests-py39 and run-unit-tests-py313
so TAs are validated against both supported interpreters in CI, since
release/5.6.0 had bumped the python-version input default to 3.13,
which silently skipped installing dependencies for TAs still
constrained to <3.10 in poetry. Reverts the input default back to 3.9.
POETRY_VERSION 2.4.1 and POETRY_EXPORT_PLUGIN_VERSION 1.10.0 require
Python >=3.10, which breaks every job now that python-version defaults
back to 3.9 (and breaks the new run-unit-tests-py39 job outright).
Poetry dropped 3.9 support starting at 2.3.0; 2.2.1 is the latest
release still supporting both 3.9 and 3.13, paired with
poetry-plugin-export 1.9.0 (last version requiring poetry>=3.9).
run-unit-tests-py39/py313 should gate publishing, not the build job
itself, so build can proceed in parallel with unit tests instead of
waiting on them.
…g build

Adds build-py313 mirroring the build job's compile/package steps under
Python 3.13, without uploading artifacts or publishing anywhere
downstream - it only verifies the package builds successfully.

run-unit-tests-py39 is now a required upstream of build, and
run-unit-tests-py313 is now a required upstream of build-py313, so
each Python version's unit tests gate its own build job. Both build
and build-py313 gate pre-publish.
…508)

- `run-modinput-tests` and `run-ucc-modinput-tests` jobs use new
`matrix_splunkModinput` output (from `addonfactory-test-matrix-action`)
which contains two entries for Splunk 9.4: `serverConfPythonVersion:
python3` and `serverConfPythonVersion: force_python3` — resulting in two
separate test runs per modinput job
- All other test types (btool, knowledge, ui, upgrade, scripted inputs,
spl2) use `matrix_Splunk` (standard output, no variants) — single run
per Splunk version as before
- `server-conf-python-version` is passed to `wfe-test-runner-action`
only for modinput and ucc-modinput jobs; all other jobs pass empty
string
- Default values restored: `k8s-manifests-branch` → `v4.2`,
`addonfactory-test-matrix-action` → `@v3.1`, `wfe-test-runner-action` →
`@v5.2`

## Why

Splunk 9.4 requires explicit `python.version` configuration in
`server.conf [general]`. Only modinput tests are affected — they execute
scripted inputs whose Python version is controlled by this setting.
Running two variants (`python3` and `force_python3`) ensures the add-on
works under both configurations.

Other test types (btool, knowledge, UI) do not interact with the Python
runtime selection and do not benefit from duplicate runs.

## Dependencies

Requires the following PRs to be merged and tagged first:
- `splunk/addonfactory-test-matrix-action` — provides
`supportedSplunkModinput` output
- `splunk/wfe-test-runner-action` — provides
`server-conf-python-version` input forwarding
- `splunk/ta-automation-k8s-manifests` — applies `python.version` in the
Splunk pod

## Test plan

- [x] Verify PR to `main` triggers 2 modinput runs for Splunk 9.4
(`python3` and `force_python3`)
- [x] Verify all other test types have 1 run per Splunk version (no
duplicate 9.4 runs)
- [x] Verify `btool server list general | grep python` returns correct
value in each modinput run
- [x] Verify non-9.4 Splunk versions are unaffected

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Marcin Kolasinski <mkolasinski@splunk.com>
Co-authored-by: mkolasinski-splunk <105011638+mkolasinski-splunk@users.noreply.github.com>
Fixes stale defaults (k8s-manifests-branch, python-version, gs-image-version), documents spl2-generate and fossa-ignore-vulnerabilities inputs, and notes the modinput python.version matrix variants and split unit-test jobs.
### Description

Release 5.6.0 of the reusable workflow.

- **ADDON-87662 / ADDON-88928** — Modinput tests now support running
against multiple `python.version` server.conf variants (`python3`,
`force_python3`) per Splunk version, driven by
`addonfactory-test-matrix-action@v3.3`'s `supportedSplunkModinput`
output and forwarded via `wfe-test-runner-action@v5.3`'s new
`server-conf-python-version` input. Applies to `run-modinput-tests` and
`run-ucc-modinput-tests`.
- **ADDON-89094** — Ensures the full supported Splunk matrix (not just
latest) runs on PRs to and pushes on `release/*`/`main` branches.
- **ADDON-88923** — Restores the check-run URL in test report steps.
- Unit tests now run separately on Python 3.9 and 3.13
(`run-unit-tests-py39`, `run-unit-tests-py313`), with a new
`build-py313` job depending on the matching unit test job; `build`
remains gated on the 3.9 run. Poetry pinned to a version compatible with
both.
- Action pin bumps (`k8s-manifests-branch` → `v4.3`, `gs-image-version`
→ `1.2`, poetry `2.2.1`, `poetry-plugin-export` `1.9.0`) and
`python-version` default reverted to `3.9`.

Tests:
splunk/splunk-add-on-for-box#819
splunk/splunk-add-on-for-crowdstrike-fdr#988
splunk/splunk-add-on-for-salesforce#899

splunk/splunk-add-on-for-amazon-web-services#1710

### Checklist

- [x] `README.md` has been updated or is not required
- [x] push trigger tests
- [ ] manual release test
- [x] automated releases test
- [x] pull request trigger tests
- [ ] schedule trigger tests
- [ ] workflow errors/warnings reviewed and addressed

### Testing done
(pending)
## Summary

- Removes `GH_TOKEN_ADMIN` (service account PAT) from the
`workflow_call` secrets — it is no longer accepted by callers
- Adds a **Generate app token** step at the start of the `publish` job
using `actions/create-github-app-token@v3` with
`GH_APP_CLIENT_ID`/`GH_APP_PRIVATE_KEY`, consistent with every other job
in this workflow
- Passes `steps.app-token.outputs.token` to
`splunk/semantic-release-action` (git push + tag to `main`) and
`softprops/action-gh-release` (custom-version releases)

## Why the PAT didn't work

The `main` branch ruleset on consumer repos has a bypass actor for the
`splunk-ta-helper` GitHub App. A PAT from the service account is not the
app, so pushes from semantic-release were rejected with 403. The
short-lived app token passes the bypass check.

## Callers must remove `GH_TOKEN_ADMIN` from their secrets block

```yaml
# remove this line from your workflow
GH_TOKEN_ADMIN: ${{ secrets.GH_TOKEN_ADMIN }}
```

Ensure `SPLUNK_TA_HELPER_APP_ID` / `SPLUNK_TA_HELPER_PRIVATE_KEY` are
set as repo secrets and passed as `GH_APP_CLIENT_ID` /
`GH_APP_PRIVATE_KEY`.

## Test plan

- [ ] Trigger a push to `main` on a consumer repo and verify the
`publish` job completes (semantic-release pushes signed tag + commit
without 403)
- [ ] Trigger a `workflow_dispatch` with `custom-version` set and verify
`action-gh-release` creates the release successfully
- [ ] Confirm `GH_TOKEN_ADMIN` secret can be removed from consumer repos
after adopting this version

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…#528)

## Summary
- Add yamlfmt as a pre-commit hook (with a `.yamlfmt` config preserving
multi-line `run:` blocks) so YAML formatting is configured and
enforceable, not just linted.
- Expand `.gitignore` beyond `actionlint`/`.idea` to cover editors/IDEs,
OS files, local env/secrets, and logs/temp.
- Replace the single `.github/CODEOWNERS` wildcard with explicit
per-path rules whose union covers every tracked file, keeping the
wildcard only as a trailing fallback.

Addresses the top action items from an agent-readiness assessment of
this repo (`formatter`, `gitignore_comprehensive` blocking Level 1;
`codeowners` blocking Level 2).

## Test plan
- [x] `pre-commit run --all-files` passes (check-merge-conflict,
yamlfmt, actionlint all green)
- [x] `yamlfmt -lint` is idempotent (no further changes) after the
one-time reformat
- [x] Confirmed the yamlfmt diff is whitespace/quote-style only — no
`run:` blocks collapsed, no semantic changes to workflow YAML
- [x] `git check-ignore -v` confirms new `.gitignore` rules match
`.DS_Store`, `.env`, `*.log`, `tmp/`, `.vscode/`
- [x] Verified every tracked file in the repo matches a non-wildcard
CODEOWNERS rule

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants