Skip to content

.github/workflows: ensure cleanup is always run #19

.github/workflows: ensure cleanup is always run

.github/workflows: ensure cleanup is always run #19

# SPDX-License-Identifier: GPL-2.0
---
name: Run blktests kdevops CI tests
on:
schedule:
- cron: '0 14 * * *'
# - cron: '*/20 * * * *'
push:
branches: ['**']
pull_request:
branches: ['**']
workflow_dispatch: # Allow manual triggering
inputs:
kernel_tree:
description: "Linux kernel tree to use"
required: true
default: 'linux'
type: choice
options:
- linux
- linux-next
- linux-stable
kernel_ref:
description: "Linux tree git reference (branch/tag/commit-id)"
required: true
default: "master"
type: string
jobs:
generate_ref:
name: Determine kernel_ref value
runs-on: [self-hosted]
outputs:
kernel_ref: ${{ steps.set_kernel_ref.outputs.kernel_ref }}
kernel_tree: ${{ steps.set_kernel_tree.outputs.kernel_tree }}
moniker: ${{ steps.set_moniker.outputs.moniker }}
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Set kernel_tree (default if not provided)
id: set_kernel_tree
run: |
kernel_tree="${{ github.event.inputs.kernel_tree }}"
if [ -z "$kernel_tree" ]; then
kernel_tree="linux"
fi
echo "kernel_tree=$kernel_tree" >> $GITHUB_OUTPUT
- name: Determine moniker
id: set_moniker
run: |
case "${{ steps.set_kernel_tree.outputs.kernel_tree }}" in
linux) moniker="mainline" ;;
linux-stable) moniker="stable" ;;
linux-next) moniker="linux-next" ;;
*) echo "Unknown kernel_tree"; exit 1 ;;
esac
echo "moniker=$moniker" >> $GITHUB_OUTPUT
- name: Set kernel_ref based on trigger type
id: set_kernel_ref
run: |
kernel_ref=$(./scripts/korg-releases.py --moniker "${{ steps.set_moniker.outputs.moniker }}")
echo "kernel_ref=$kernel_ref" >> $GITHUB_OUTPUT
setup:
needs: generate_ref
uses: ./.github/workflows/kdevops-init.yml
with:
kernel_ref: ${{ needs.generate_ref.outputs.kernel_ref || 'master' }}
kernel_tree: ${{ needs.generate_ref.outputs.kernel_tree || 'linux' }}
secrets: inherit
run-tests:
needs: setup
name: Run CI tests
runs-on: [self-hosted, Linux, X64]
steps:
- name: Run CI tests
run: |
cd kdevops
CI_REPO="${{ github.ref_name }}" make ci-test
echo -e "Kernel tests results:\n" > ci.commit_extra
tail -n 1 workflows/blktests/results/last-run/*/*.dmesg.log >> ci.commit_extra
echo -e "\n\n" >> ci.commit_extra
echo -e "Userspace test results:\n" >> ci.commit_extra
tail -n 1 workflows/blktests/results/last-run/*/*.userspace.log >> ci.commit_extra
echo -e "\n\n" >> ci.commit_extra
if grep -i -q "fail" ci.commit_extra ; then
echo "fail" > ci.result
else
echo "ok" > ci.result
fi
archive:
needs: run-tests
uses: ./.github/workflows/kdevops-archive.yml
secrets: inherit
cleanup:
name: Cleanup
needs: [setup, run-tests, archive]
runs-on: [self-hosted, Linux, X64]
if: always()
steps:
- name: Run kdevops make destroy
run: |
cd kdevops
make destroy
cd ..
rm -rf kdevops