Skip to content

Nightly

Nightly #35

Workflow file for this run

# Copyright lowRISC contributors (OpenTitan project).
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
name: Nightly
on:
schedule:
- cron: "00 04 * * *"
workflow_dispatch:
inputs:
branch:
description: 'Branch to run the nightly'
required: true
type: string
permissions:
id-token: write
contents: read
jobs:
FPGA-CW310-SiVal-Nightly:
name: Fpga cw310 sival tests
runs-on: [ubuntu-20.04-fpga, cw310]
env:
GS_PATH: gs://opentitan-test-results
BAZEL_TEST_RESULTS: test_results.xml
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Required for the bitstream cache to work.
ref: ${{ inputs.branch || 'earlgrey_1.0.0' }} # Schedule only work on the default branch, but we want to run on a different branch.
- name: Install dependencies
uses: ./.github/actions/install-deps
- uses: google-github-actions/auth@v2
with:
project_id: lowrisc-cloud-compute
workload_identity_provider: projects/281751345158/locations/global/workloadIdentityPools/github-actions/providers/github-actions
- uses: google-github-actions/setup-gcloud@v2
- name: Update hyperdebug
# We run the update command twice to workaround an issue with udev on the container.
# Where rusb cannot dynamically update its device list in CI (udev is not completely
# functional). If the device is in normal mode, the first thing that opentitantool
# does is to switch it to DFU mode and wait until it reconnects. This reconnection is
# never detected. But if we run the tool another time, the device list is queried again
# and opentitantool can finish the update. The device will now reboot in normal mode
# and work for the hyperdebug job.
run: |
./bazelisk.sh run //sw/host/opentitantool -- --interface=hyperdebug_dfu transport update-firmware \
|| ./bazelisk.sh run //sw/host/opentitantool -- --interface=hyperdebug_dfu transport update-firmware
- name: Run tests after ROM_EXT boot stage
run: |
module load xilinx/vivado
bazel_tests="$(mktemp)"
./bazelisk.sh query 'attr("tags", "[\[ ]cw310_sival_rom_ext[,\]]", tests(//sw/device/...))' \
| grep aes \
> "$bazel_tests"
./bazelisk.sh test --build_tests_only --target_pattern_file="$bazel_tests" || true
mkdir -p reports
find -L bazel-out -name "test.xml" | xargs -i sh -c 'cp -uv {} reports/$(basename $(dirname {}.xml))'
- name: Reduce reports
uses: willgeorgetaylor/junit-reducer-action@v1
with:
include: ./reports/*.xml
output-path: ./resuced_report.xml
- name: Publish bazel test results
if: success() || failure()
run: |
GS_FULL_PATH=$GS_PATH/job/${{ github.job }}/branch/${{ github.ref_name }}/$(date +%Y-%m-%d-%H%M%S)_$BAZEL_TEST_RESULTS
gcloud storage cp "./reduced_report.xml" "$GS_FULL_PATH"