This action runs VOLTHA end-to-end tests using BBSim (Broadband Simulator) to simulate OLT/ONU devices. It's a conversion of the Jenkins pipeline from ci-management/jjb/pipeline/voltha/bbsim-tests.groovy to GitHub Actions.
This action is designed to be used as a shared/reusable action from external repositories. All test execution logic is embedded directly in the action.yaml file (no external script dependencies), making it compatible with GitHub Actions' composite action model when called from other repositories.
The action performs the following steps:
branch: Branch to test (e.g., master, voltha-2.15)test-targets: YAML string defining test targets to run (see format below)gerrit-project: Gerrit project name if building a patch (default: "")gerrit-refspec: Gerrit refspec if building a patch (default: "")voltha-system-tests-change: Gerrit change number for voltha-system-tests (default: "")voltha-helm-charts-change: Gerrit change number for voltha-helm-charts (default: "")extra-helm-flags: Additional Helm flags for deployment (default: "")log-level: Log level for VOLTHA components: DEBUG, INFO, WARN, ERROR (default: "WARN")timeout: Timeout in minutes for the entire action (default: "240")cluster-name: Name of the kind cluster (default: "kind-ci")docker-registry: Docker registry to use (default: "linuxfoundation.jfrog.io/voltha-docker")olts: Number of OLTs to simulate (default: "1")with-monitoring: Enable monitoring with Prometheus (default: false)enable-mac-learning: Enable MAC learning in VOLTHA (default: false)extra-robot-args: Additional arguments for Robot Framework (default: "")test-results: Path to test results directoryThe test-targets input should be a YAML array with the following structure:
- target: functional-single-kind-dt workflow: dt flags: "--set someFlag=value" teardown: true logging: true vgcEnabled: false - target: functional-single-kind-att workflow: att flags: "" teardown: true logging: true vgcEnabled: false
target: Make target from voltha-system-tests (e.g., functional-single-kind-dt)workflow: VOLTHA workflow type (e.g., dt, att, tt)flags: Additional Helm flags specific to this test (optional)teardown: Whether to tear down and redeploy VOLTHA (default: true)logging: Enable test logging (default: true)vgcEnabled: Enable VOLTHA Go Controller (default: false)This is the most common usage pattern - calling the action from another repository:
name: BBSim Tests on: push: branches: [master] pull_request: jobs: bbsim-tests: runs-on: ubuntu-latest steps: - name: Run BBSim Tests uses: opencord/shared-workflows/.github/actions/bbsim-tests@master with: branch: master test-targets: | - target: functional-single-kind-dt workflow: dt flags: "" teardown: true logging: true vgcEnabled: false
Note: Replace @master with a specific version tag or commit SHA for production use.
If you're developing or testing the action within the shared-workflows repository itself:
jobs: bbsim-tests: runs-on: ubuntu-latest steps: - name: Run BBSim Tests uses: opencord/shared-workflows/.github/actions/bbsim-tests@master with: branch: master test-targets: | - target: functional-single-kind-dt workflow: dt flags: "" teardown: true logging: true vgcEnabled: false
name: BBSim Multi-Workflow Tests on: schedule: - cron: '0 2 * * *' # Run nightly jobs: bbsim-tests: runs-on: ubuntu-latest timeout-minutes: 300 steps: - name: Checkout uses: actions/checkout@v4 - name: Run BBSim Tests uses: ./.github/actions/bbsim-tests with: branch: master log-level: INFO olts: "2" with-monitoring: true extra-helm-flags: "--set global.some_option=true" test-targets: | - target: functional-single-kind-dt workflow: dt flags: "" teardown: true logging: true vgcEnabled: false - target: functional-single-kind-att workflow: att flags: "" teardown: true logging: true vgcEnabled: false - target: functional-single-kind-tt workflow: tt flags: "" teardown: true logging: true vgcEnabled: false - name: Publish Test Results if: always() uses: actions/upload-artifact@v4 with: name: test-results path: logs/
name: Test Gerrit Patch on: workflow_dispatch: inputs: gerrit_project: description: 'Gerrit project name' required: true type: string gerrit_refspec: description: 'Gerrit refspec' required: true type: string jobs: test-patch: runs-on: ubuntu-latest steps: - name: Run BBSim Tests with Patch uses: opencord/shared-workflows/.github/actions/bbsim-tests@master with: branch: master gerrit-project: ${{ inputs.gerrit_project }} gerrit-refspec: ${{ inputs.gerrit_refspec }} test-targets: | - target: sanity-single-kind workflow: dt flags: "" teardown: true logging: true vgcEnabled: false
name: Test System Tests Changes on: pull_request: paths: - 'tests/**' jobs: test-changes: runs-on: ubuntu-latest steps: - name: Run BBSim Tests uses: opencord/shared-workflows/.github/actions/bbsim-tests@master with: branch: master voltha-system-tests-change: "refs/changes/12/34512/1" test-targets: | - target: functional-single-kind-dt workflow: dt flags: "" teardown: true logging: true vgcEnabled: false
This action is implemented as a composite action with all logic embedded directly in the action.yaml file. When called from an external repository:
/tmp/execute_test.shThis design ensures the action works correctly whether called from:
This action automatically installs the following dependencies:
The action automatically uploads the following artifacts:
Artifacts are retained for 30 days and can be downloaded from the GitHub Actions UI.
The action sets up the following port forwards:
kubectl get pods -Akubectl logs -n voltha <pod-name>timeout input valuedocker-registry input is correctPort forwards may fail if:
Check port-forward processes: ps aux | grep port-forward
This action replaces the Jenkins pipeline bbsim-tests.groovy. Key differences:
| Jenkins Parameter | GitHub Action Input |
|---|---|
branch | branch |
testTargets | test-targets |
gerritProject | gerrit-project |
gerritRefspec | gerrit-refspec |
volthaSystemTestsChange | voltha-system-tests-change |
volthaHelmChartsChange | voltha-helm-charts-change |
extraHelmFlags | extra-helm-flags |
logLevel | log-level |
timeout | timeout |
registry | docker-registry |
olts | olts |
withMonitoring | with-monitoring |
enableMacLearning | enable-mac-learning |
extraRobotArgs | extra-robot-args |
When modifying this action:
Copyright 2026 The Linux Foundation
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.