Skip to content

periodic-vpp-verify-hst #20

periodic-vpp-verify-hst

periodic-vpp-verify-hst #20

name: periodic-vpp-verify-hst-periodic
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: false
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
max-parallel: 1
matrix:
build_type: ['debug', 'release']
class: ['hst']
os: ['ubuntu2204']
executor_arch: ['x86_64', 'aarch64']
size: ['hst']
exclude:
# Exclude release builds on aarch64
- executor_arch: 'aarch64'
build_type: 'release'
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@v6
- 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: Log HST Start
run: |
set -euxo pipefail
{
echo "$TUI_LINE"
echo "* Starting HST build/tests"
echo "$TUI_LINE"
} | tee "$LOG_DIR/hst_start.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@d4f0fac555e52087747b04f77a9a07bc8aaa3daa
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@43b0339292476442bd7e2429e2ae1075918d8f83
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@7598c9acb6bc034ffbe25b7110230b3d243a9b36
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@17796170bed35b8f30a5480e0cd6be942a22c7aa
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@17796170bed35b8f30a5480e0cd6be942a22c7aa
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