Files
greptimedb/.github/actions/upload-fuzz-artifacts/action.yaml
Weny Xu a6107fbe3d ci: optimize fuzz and split workflows (#8710)
* ci: batch fuzz targets in GitHub Actions

Signed-off-by: WenyXu <wenymedia@gmail.com>

* ci: improve fuzz test observability

Signed-off-by: WenyXu <wenymedia@gmail.com>

* fix(ci): preserve fuzz setup failure artifacts

Signed-off-by: WenyXu <wenymedia@gmail.com>

* test(ci): keep fuzz mock output in logs

Signed-off-by: WenyXu <wenymedia@gmail.com>

* ci: optimize fuzz worker cache

Signed-off-by: WenyXu <wenymedia@gmail.com>

* ci: warm fuzz target binaries

Signed-off-by: WenyXu <wenymedia@gmail.com>

* ci: isolate fuzz workflow

Signed-off-by: WenyXu <wenymedia@gmail.com>

* ci: centralize fuzz target preparation

Signed-off-by: WenyXu <wenymedia@gmail.com>

* ci: split general workflows

Signed-off-by: WenyXu <wenymedia@gmail.com>

* ci: streamline docs required checks

Signed-off-by: WenyXu <wenymedia@gmail.com>

* fix: transfer fuzz targets as artifacts

Signed-off-by: WenyXu <wenymedia@gmail.com>

* fix: preserve fuzz binary permissions

Signed-off-by: WenyXu <wenymedia@gmail.com>

* ci: streamline fuzz workers

Signed-off-by: WenyXu <wenymedia@gmail.com>

* ci: cache PR build dependencies

Signed-off-by: WenyXu <wenymedia@gmail.com>

* ci: retain main build cache policy

Signed-off-by: WenyXu <wenymedia@gmail.com>

* ci: address fuzz review feedback

Signed-off-by: WenyXu <wenymedia@gmail.com>

---------

Signed-off-by: WenyXu <wenymedia@gmail.com>
2026-08-03 07:58:29 +00:00

51 lines
2.0 KiB
YAML

name: Upload Fuzz Artifacts
description: 'Upload target-scoped fuzz diagnostics and link them from the job summary'
inputs:
artifact-name:
description: "Name of the fuzz diagnostic artifact"
required: true
artifact-root:
default: '/tmp/greptime-fuzz-artifacts'
description: "Directory containing the group manifest and target diagnostics"
retention-days:
default: '3'
description: "Number of days to retain the artifact"
outputs:
artifact-id:
description: "GitHub ID of the uploaded artifact"
value: ${{ steps.upload.outputs.artifact-id }}
artifact-url:
description: "URL of the uploaded artifact"
value: ${{ steps.upload.outputs.artifact-url }}
artifact-digest:
description: "SHA-256 digest of the uploaded artifact"
value: ${{ steps.upload.outputs.artifact-digest }}
runs:
using: composite
steps:
- name: Upload fuzz diagnostics
id: upload
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifact-name }}
path: ${{ inputs.artifact-root }}
if-no-files-found: warn
retention-days: ${{ inputs.retention-days }}
- name: Add fuzz diagnostics to job summary
shell: bash
env:
FUZZ_ARTIFACT_NAME: ${{ inputs.artifact-name }}
FUZZ_ARTIFACT_ID: ${{ steps.upload.outputs.artifact-id }}
FUZZ_ARTIFACT_URL: ${{ steps.upload.outputs.artifact-url }}
FUZZ_ARTIFACT_DIGEST: ${{ steps.upload.outputs.artifact-digest }}
FUZZ_ARTIFACT_RETENTION_DAYS: ${{ inputs.retention-days }}
run: |
{
printf '### Fuzz diagnostics\n\n'
printf -- '- Artifact: [%s](%s)\n' "${FUZZ_ARTIFACT_NAME}" "${FUZZ_ARTIFACT_URL}"
printf -- '- Artifact ID: `%s`\n' "${FUZZ_ARTIFACT_ID}"
printf -- '- SHA-256: `%s`\n' "${FUZZ_ARTIFACT_DIGEST}"
printf -- '- Retention: %s days\n' "${FUZZ_ARTIFACT_RETENTION_DAYS}"
} >>"${GITHUB_STEP_SUMMARY}"
echo "::notice title=Fuzz diagnostics uploaded::artifact=${FUZZ_ARTIFACT_NAME}, digest=${FUZZ_ARTIFACT_DIGEST}"