Files
youki/.github/workflows/integration_tests_validation.yaml
b336704509 fix: ratime and rnostrictatime mount options failing with EINVAL (#3467)
* update crates/libcontainer/src/rootfs/utils.rs

Signed-off-by: Keigo Kurita <keig0xurita@gmail.com>

* add tests for utils.rs

Signed-off-by: Keigo Kurita <keig0xurita@gmail.com>

* refactor: align atime handling with runc and split atime tests

Signed-off-by: Keigo Kurita <keig0xurita@gmail.com>

* add recursive mount test for atime

Signed-off-by: Yusuke Sakurai <yusuke.sakurai@3-shake.com>

* Resolve unintended diff

Signed-off-by: Keigo Kurita <keig0xurita@gmail.com>

* Revert "Resolve unintended diff"

This reverts commit 6a137091d0.

Signed-off-by: Keigo Kurita <keig0xurita@gmail.com>

* update integration_tests_validation.yaml

Signed-off-by: Keigo Kurita <keig0xurita@gmail.com>

* add test_parse_mount_rrelatime_uses_full_atime_mask test

Signed-off-by: Keigo Kurita <keig0xurita@gmail.com>

---------

Signed-off-by: Keigo Kurita <keig0xurita@gmail.com>
Signed-off-by: Yusuke Sakurai <yusuke.sakurai@3-shake.com>
Co-authored-by: Yusuke Sakurai <yusuke.sakurai@3-shake.com>
2026-05-18 14:01:45 +09:00

112 lines
4.1 KiB
YAML

name: ✔️ Verification of integration
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
jobs:
changes:
runs-on: ubuntu-24.04
timeout-minutes: 15
outputs:
any_modified: ${{ steps.filter.outputs.any_modified }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Required to get full history
# Using Git commands instead of tj-actions/changed-files
- name: Get changed files
id: filter
run: |
# grep will exit with non-zero if no matching pattern
# but we are ok with that, so to prevent workflow failing
# we set allow errors
set +e
# Change the base commit depending on event type
if [[ "${{ github.event_name }}" == "push" ]]; then
# For push events
if [[ -n "${{ github.event.before }}" ]]; then
BASE_COMMIT="${{ github.event.before }}"
else
# For workflow dispatch, etc.
git fetch origin main --depth=1
BASE_COMMIT="origin/main"
fi
elif [[ "${{ github.event_name }}" == "pull_request" ]]; then
# For pull request events
git fetch origin "${{ github.base_ref }}" --depth=1
BASE_COMMIT="origin/${{ github.base_ref }}"
else
# For workflow dispatch events
git fetch origin main --depth=1
BASE_COMMIT="HEAD~1"
fi
echo "Using base commit: $BASE_COMMIT"
# Get all changed files
ALL_CHANGED_FILES=$(git diff --name-only --diff-filter=ACMRT "$BASE_COMMIT" HEAD)
# Filter only files matching the specified patterns
# Match files in .github/workflows/integration_tests_validation.yaml and tests/contest/**
TARGET_FILES=$(echo "$ALL_CHANGED_FILES" | grep -E '^.github/workflows/integration_tests_validation.yaml$|^tests/contest/')
# Exclude markdown files
FILTERED_FILES=$(echo "$TARGET_FILES" | grep -v '\.md$')
# Set the results
if [[ -n "$FILTERED_FILES" ]]; then
echo "any_modified=true" >> $GITHUB_OUTPUT
echo "all_modified_files<<EOF" >> $GITHUB_OUTPUT
echo "$FILTERED_FILES" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
else
echo "any_modified=false" >> $GITHUB_OUTPUT
echo "all_modified_files=" >> $GITHUB_OUTPUT
fi
- name: List all changed files
run: |
if [[ "${{ steps.filter.outputs.any_modified }}" == "true" ]]; then
echo "Changed files detected:"
echo "${{ steps.filter.outputs.all_modified_files }}"
else
echo "No relevant changes detected"
fi
validate:
needs: [changes]
if: needs.changes.outputs.any_modified == 'true'
runs-on: ubuntu-24.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Setup Rust toolchain and cache
uses: actions-rust-lang/setup-rust-toolchain@v1.3.7
- name: Install just
uses: taiki-e/install-action@just
- name: Install requirements
run: sudo env PATH=$PATH just ci-prepare
- name: Install CRIU from source
run: |
sudo apt-get install -y \
libcap-dev libnet1-dev libnl-3-dev uuid-dev \
libprotobuf-c-dev libprotobuf-dev protobuf-c-compiler protobuf-compiler
git clone --depth 1 --branch criu-dev --single-branch \
https://github.com/checkpoint-restore/criu.git ~/criu
(cd ~/criu && sudo make -j $(nproc) install-criu)
rm -rf ~/criu
criu --version
- name: Install runc 1.4.1
run: |
wget -q https://github.com/opencontainers/runc/releases/download/v1.4.1/runc.amd64
sudo mv runc.amd64 /usr/bin/runc
sudo chmod 755 /usr/bin/runc
- name: Build
run: just runtimetest contest
- name: Validate tests on runc
run: just validate-contest-runc