Skip to content

periodic-vpp-verify-hst #200

periodic-vpp-verify-hst

periodic-vpp-verify-hst #200

name: periodic-vpp-verify-hst
on:
schedule:
- cron: '0 1 * * *' # Runs daily at 1am UTC
- cron: '0 13 * * *' # Runs daily at 1pm UTC
workflow_dispatch:
inputs:
FDIO_NAMESPACE:
description: "Executor Namespace (prod|sandbox)"
required: false
type: choice
options:
- sandbox
- prod
default: prod
defaults:
run:
shell: bash
permissions:
contents: read
actions: read
concurrency:
group: required-${{ github.workflow }}
cancel-in-progress: true
jobs:
verify-hst-periodic:
# yamllint disable-line rule:line-length
name: hst-${{ matrix.os }}-${{ matrix.executor_arch }}-${{ matrix.build_type }}-${{ github.event.inputs.FDIO_NAMESPACE || 'prod' }}
runs-on:
- self-hosted
- nomad
- fdio:arch=${{ matrix.executor_arch }}
- fdio:class=${{ matrix.class }}
- fdio:size=${{ matrix.size }}
- fdio:namespace=${{ github.event.inputs.FDIO_NAMESPACE || 'prod' }}
- fdio:os=${{ matrix.os }}
- fdio:workflow=${{ github.run_id }}
strategy:
fail-fast: false
matrix:
include:
# Debug builds on aarch64
- build_type: 'debug'
os: 'ubuntu2204'
executor_arch: 'aarch64'
class: 'hst'
size: 'hst'
# Debug builds on x86_64
- build_type: 'debug'
os: 'ubuntu2204'
executor_arch: 'x86_64'
class: 'hst'
size: 'hst'
env:
FDIO_NAMESPACE: ${{ github.event.inputs.FDIO_NAMESPACE || 'prod' }}
LOG_NAME: ""
LOG_DIR: ""
WORKSPACE: /scratch/docker-build/vpp
HS_TEST_DIR: /scratch/docker-build/vpp/test/hs-test
CCACHE_DIR: /scratch/ccache/${{ matrix.os }}-${{ matrix.executor_arch }}
MAKE_PARALLEL_JOBS: 16
TEST_JOBS: 1 # TODO: debug test failures with 16 parallel test jobs
TUI_LINE: "*******************************************************************"
steps:
- name: Actions Checkout
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v6.0.2
- name: Setup Environment
# yamllint disable-line rule:line-length
uses: fdio/.github/.github/actions/setup-executor-env@b728d1589228e2891a4241a1bba362d76895c225
- name: Set Timestamp and Log Path
run: |
set -euxo pipefail
ts="$(date -u +%Y_%m_%d_%H%M%S_UTC)"
LOG_NAME="gha-vpp-periodic/vpp-verify-hst-master-${ts}-${{ matrix.build_type }}-${{ matrix.class }}-${{ matrix.os }}-${{ env.FDIO_NAMESPACE }}-${{ matrix.executor_arch }}"
echo "LOG_NAME=$LOG_NAME" >> "$GITHUB_ENV"
LOG_DIR="$WORKSPACE/logs/$LOG_NAME"
echo "LOG_DIR=$LOG_DIR" >> "$GITHUB_ENV"
mkdir -p "$LOG_DIR"
- name: Show Environment
run: |
set -euo pipefail
env | sort | tee "$LOG_DIR/environment.log"
- name: Show Nomad Dockerfile
# yamllint disable-line rule:line-length
uses: fdio/.github/.github/actions/show-nomad-dockerfile@b728d1589228e2891a4241a1bba362d76895c225
- name: Pull VPP master HEAD
run: |
set -euxo pipefail
cd "$WORKSPACE"
git checkout master
git pull
git show --stat
- name: Install VPP dependencies
# yamllint disable-line rule:line-length
uses: fdio/vpp/.github/actions/vpp-install-deps@777792ecef2d5c93ce15fa5b7fdca999f5412c9d
with:
LOG_DIR: ${{ env.LOG_DIR }}
WORKSPACE: ${{ env.WORKSPACE }}
TUI_LINE: ${{ env.TUI_LINE }}
- name: Install VPP external dependencies
# yamllint disable-line rule:line-length
uses: fdio/vpp/.github/actions/vpp-install-ext-deps@d0577011fb512d79e6914b6f1f11e2be4c09bc1e
with:
LOG_DIR: ${{ env.LOG_DIR }}
WORKSPACE: ${{ env.WORKSPACE }}
TUI_LINE: ${{ env.TUI_LINE }}
- name: HST VPP Build
# yamllint disable-line rule:line-length
uses: fdio/vpp/.github/actions/vpp-build@3c0b690a135be65922fec705983478351a1b80b6
with:
LOG_DIR: ${{ env.LOG_DIR }}
WORKSPACE: ${{ env.WORKSPACE }}
MAKE_PARALLEL_JOBS: ${{ env.MAKE_PARALLEL_JOBS }}
BUILD_TYPE: ${{ matrix['build_type'] }}
BUILD_HST: 'true'
TUI_LINE: ${{ env.TUI_LINE }}
- name: Start Docker Daemon
uses: fdio/vpp/.github/actions/vpp-start-docker@f9e0f384d665800c8e580da853e26558dd6d2668
with:
START_DOCKER_SCRIPT: start-docker.sh
TUI_LINE: ${{ env.TUI_LINE }}
- name: HST Test VPP
if: success()
uses: fdio/vpp/.github/actions/vpp-hst-test@aafbd5109fbd323b3ec3292ec3acad8f5eb48fe0
timeout-minutes: 90
with:
LOG_DIR: ${{ env.LOG_DIR }}
WORKSPACE: ${{ env.WORKSPACE }}
BUILD_TYPE: ${{ matrix['build_type'] }}
HS_TEST_DIR: ${{ env.HS_TEST_DIR }}
TEST_JOBS: ${{ env.TEST_JOBS }}
TUI_LINE: ${{ env.TUI_LINE }}
- name: AWS S3 Publish Logs
if: always()
# yamllint disable-line rule:line-length
uses: fdio/.github/.github/actions/aws-s3-publish-logs@1b8eff3ffd9d355b28052be9ad22acc57b3430b5
with:
aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws_region: ${{ vars.AWS_REGION }}
s3_bucket: ${{ vars.S3_BUCKET }}
s3_path: ${{ env.LOG_NAME }}
archives_path: ${{ env.LOG_DIR }}
- name: Check Archives Directory
id: check-archives
if: always()
run: |
set -euxo pipefail
archives_dir="$WORKSPACE/archives"
if [[ -d "$archives_dir" ]] && find "$archives_dir" -type f -print -quit | grep -q . ; then
echo "has_archives=true" >> "$GITHUB_OUTPUT"
else
echo "has_archives=false" >> "$GITHUB_OUTPUT"
fi
- name: AWS S3 Publish Archives
if: ${{ always() && steps.check-archives.outputs.has_archives == 'true' }}
# yamllint disable-line rule:line-length
uses: fdio/.github/.github/actions/aws-s3-publish-logs@1b8eff3ffd9d355b28052be9ad22acc57b3430b5
with:
aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws_region: ${{ vars.AWS_REGION }}
s3_bucket: ${{ vars.S3_BUCKET }}
s3_path: ${{ env.LOG_NAME }}
archives_path: ${{ env.WORKSPACE }}/archives