[VOL-5495] Add full GHA suite
Combines verify, release, and dependabot workflows.
Signed-off-by: Eric Ball <eball@linuxfoundation.org>
Change-Id: I5a85b7feead8a66fbc1ec3d83cdba717413eb920
diff --git a/.github/workflows/gerrit-comment-handler.yaml b/.github/workflows/gerrit-comment-handler.yaml
new file mode 100644
index 0000000..e6fbbda
--- /dev/null
+++ b/.github/workflows/gerrit-comment-handler.yaml
@@ -0,0 +1,126 @@
+---
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2026 The Linux Foundation
+name: Gerrit Comment Handler
+
+# yamllint disable-line rule:truthy
+on:
+ workflow_dispatch:
+ inputs:
+ GERRIT_BRANCH:
+ description: "Branch that change is against"
+ required: true
+ type: string
+ GERRIT_CHANGE_ID:
+ description: "The ID for the change"
+ required: true
+ type: string
+ GERRIT_CHANGE_NUMBER:
+ description: "The Gerrit number"
+ required: true
+ type: string
+ GERRIT_CHANGE_URL:
+ description: "URL to the change"
+ required: true
+ type: string
+ GERRIT_EVENT_TYPE:
+ description: "Gerrit event type"
+ required: true
+ type: string
+ GERRIT_PATCHSET_NUMBER:
+ description: "The patch number for the change"
+ required: true
+ type: string
+ GERRIT_PATCHSET_REVISION:
+ description: "The revision sha"
+ required: true
+ type: string
+ GERRIT_PROJECT:
+ description: "Project in Gerrit"
+ required: true
+ type: string
+ GERRIT_REFSPEC:
+ description: "Gerrit refspec of change"
+ required: true
+ type: string
+ GERRIT_COMMENT:
+ description: "The full gha-run command line from the Gerrit comment"
+ required: true
+ type: string
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.inputs.GERRIT_CHANGE_ID || github.run_id }}
+ cancel-in-progress: true
+
+jobs:
+ # ==========================================================================
+ # JOB 1: parse-command
+ # ==========================================================================
+ # Parse GERRIT_COMMENT into a job name and parameters.
+ # ==========================================================================
+ parse-command:
+ runs-on: ubuntu-latest
+ outputs:
+ job-name: ${{ steps.parse.outputs.job-name }}
+ params: ${{ steps.parse.outputs.params }}
+ steps:
+ - name: Parse gha-run command
+ id: parse
+ env:
+ GERRIT_COMMENT: ${{ inputs.GERRIT_COMMENT }}
+ run: |
+ # Strip the leading "gha-run" verb.
+ command="${GERRIT_COMMENT#gha-run }"
+ # The first remaining token is the job name.
+ job_name="${command%% *}"
+ # Everything after the job name is the parameter string.
+ params="${command#"${job_name}"}"
+ params="${params# }"
+ echo "job-name=${job_name}" >> "${GITHUB_OUTPUT}"
+ echo "params=${params}" >> "${GITHUB_OUTPUT}"
+ echo "Parsed job name: ${job_name}"
+ echo "Parsed parameters: ${params}"
+
+ # ==========================================================================
+ # JOB 2: run-job (Route and Execute)
+ # ==========================================================================
+ # Use the parsed job name to decide what to do. A case statement keeps the
+ # routing explicit and rejects unknown job names.
+ # ==========================================================================
+ run-job:
+ needs: parse-command
+ if: ${{ needs.parse-command.outputs.job-name == 'sanity-test' }}
+ uses: opencord/shared-workflows/.github/workflows/sanity-test.yaml@main
+ secrets: inherit
+ with:
+ GERRIT_URL: ${{ inputs.GERRIT_URL }}
+ GERRIT_REFSPEC: ${{ inputs.GERRIT_REFSPEC }}
+ GERRIT_PROJECT: ${{ inputs.GERRIT_PROJECT }}
+ EXTRA_HELM_FLAGS: "--set global.image_tag=master --set onos-classic.image.tag=master"
+
+ # ==========================================================================
+ # JOB 3: report-status (Comment-Only Result Notification)
+ # ==========================================================================
+ # Report the outcome back to the Gerrit change as a comment. Use comment-only
+ # mode so the handler never casts a Verified vote on demand.
+ # ==========================================================================
+ report-status:
+ if: ${{ always() }}
+ needs: [parse-command, run-job]
+ runs-on: ubuntu-latest
+ steps:
+ - name: Get workflow conclusion
+ # yamllint disable-line rule:line-length
+ uses: im-open/workflow-conclusion@fce18569e28a9f2ed1feca1e6d4251e6a7365fdc # v2.2.4
+ - name: Report workflow conclusion
+ # yamllint disable-line rule:line-length
+ uses: lfreleng-actions/gerrit-review-action@c9df844dc6efe28b85b297c1c6d40390bfa4a378 # v1.0.0
+ with:
+ host: ${{ vars.GERRIT_SERVER }}
+ username: ${{ vars.GERRIT_SSH_USER }}
+ key: ${{ secrets.GERRIT_SSH_PRIVKEY }}
+ known_hosts: ${{ vars.GERRIT_KNOWN_HOSTS }}
+ gerrit-change-number: ${{ inputs.GERRIT_CHANGE_NUMBER }}
+ gerrit-patchset-number: ${{ inputs.GERRIT_PATCHSET_NUMBER }}
+ vote-type: ${{ env.WORKFLOW_CONCLUSION }}
+ comment-only: "true"