blob: 3d2798102700318d89eade17b940a2102458af96 [file] [log] [blame]
---
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2026 The Linux Foundation
name: Sanity Test
# yamllint disable-line rule:truthy
on:
workflow_call:
inputs:
GERRIT_BRANCH:
description: "Branch that change is against"
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
EC2_INSTANCE_TYPE:
description: "EC2 instance type"
required: false
type: string
default: "t2.xlarge"
TEST_TARGETS:
description: "List of test targets"
required: false
type: string
default: |
- target: sanity-kind-att
workflow: att
flags: ""
teardown: true
logging: true
- target: sanity-kind-dt
workflow: dt
flags: ""
teardown: true
logging: true
- target: sanity-kind-tt
workflow: tt
flags: ""
teardown: true
logging: true
EXTRA_HELM_FLAGS:
description: "Additional Helm flags for deployment"
required: false
type: string
default: ""
LOG_LEVEL:
description: "Log level for VOLTHA components (DEBUG, INFO, WARN, ERROR)"
required: false
type: string
default: "INFO"
TIMEOUT:
description: "Timeout in minutes for the entire action"
required: false
type: string
default: "240"
OLTS:
description: "Number of OLTs to simulate"
required: false
type: string
default: "1"
WITH_MONITORING:
description: "Enable monitoring with prometheus"
required: false
type: string
default: "false"
ENABLE_MAC_LEARNING:
description: "Enable MAC learning in VOLTHA"
required: false
type: string
default: "false"
EXTRA_ROBOT_ARGS:
description: "Additional arguments for Robot Framework"
required: false
type: string
default: ""
secrets:
GERRIT_SSH_PRIVKEY:
description: "SSH Key for the authorized user account"
required: true
AWS_ACCESS_KEY_ID:
description: "AWS access key ID"
required: true
AWS_SECRET_ACCESS_KEY:
description: "AWS secret access key"
required: true
EC2_IMAGE_ID:
description: "EC2 image ID"
required: true
EC2_SUBNET_ID:
description: "EC2 subnet ID"
required: true
EC2_SG_ID:
description: "EC2 security group ID"
required: true
GH_TO_AWS_KEY:
description: "GitHub to AWS key"
required: true
jobs:
start-runner:
name: Start self-hosted EC2 runner
runs-on: ubuntu-latest
outputs:
label: ${{ steps.start-ec2-runner.outputs.label }}
ec2-instance-id: ${{ steps.start-ec2-runner.outputs.ec2-instance-id }}
steps:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ vars.AWS_REGION }}
- name: Start EC2 runner
id: start-ec2-runner
uses: machulav/ec2-github-runner@v2
with:
mode: start
github-token: ${{ secrets.GH_TO_AWS_KEY }}
ec2-image-id: ${{ secrets.EC2_IMAGE_ID }}
ec2-instance-type: ${{ inputs.EC2_INSTANCE_TYPE }}
subnet-id: ${{ secrets.EC2_SUBNET_ID }}
security-group-id: ${{ secrets.EC2_SG_ID }}
sanity-tests:
needs: start-runner
runs-on: ${{ needs.start-runner.outputs.label }}
steps:
- name: Run Sanity Tests
uses: opencord/shared-workflows/.github/actions/bbsim-tests@main
with:
branch: ${{ inputs.GERRIT_BRANCH }}
test-targets: ${{ inputs.TEST_TARGETS }}
gerrit-project: ${{ inputs.GERRIT_PROJECT }}
gerrit-refspec: ${{ inputs.GERRIT_REFSPEC }}
extra-helm-flags: ${{ inputs.EXTRA_HELM_FLAGS }}
log-level: ${{ inputs.LOG_LEVEL }}
timeout: ${{ inputs.TIMEOUT }}
olts: ${{ inputs.OLTS }}
with-monitoring: ${{ inputs.WITH_MONITORING }}
enable-mac-learning: ${{ inputs.ENABLE_MAC_LEARNING }}
extra-robot-args: ${{ inputs.EXTRA_ROBOT_ARGS }}
stop-runner:
name: Stop self-hosted EC2 runner
needs:
- start-runner # required to get output from the start-runner job
- sanity-tests
runs-on: ubuntu-latest
if: ${{ always() }} # required to stop the runner even if the error happened in the previous jobs
steps:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ vars.AWS_REGION }}
- name: Stop EC2 runner
uses: machulav/ec2-github-runner@v2
with:
mode: stop
github-token: ${{ secrets.GH_TO_AWS_KEY }}
label: ${{ needs.start-runner.outputs.label }}
ec2-instance-id: ${{ needs.start-runner.outputs.ec2-instance-id }}