diff --git a/.github/actions/host-init/init-client.sh b/.github/actions/host-init/init-client.sh index 57c4946154..875abb8228 100644 --- a/.github/actions/host-init/init-client.sh +++ b/.github/actions/host-init/init-client.sh @@ -17,15 +17,15 @@ sudo mkdir -p /orchestrator/sandbox sudo mkdir -p /orchestrator/template sudo mkdir -p /orchestrator/build -# Add swapfile +# Add swapfile (skip if already active) SWAPFILE="/swapfile" -sudo fallocate -l 1G $SWAPFILE -sudo chmod 600 $SWAPFILE -sudo mkswap $SWAPFILE -sudo swapon $SWAPFILE - -# Make swapfile persistent -echo "$SWAPFILE none swap sw 0 0" | sudo tee -a /etc/fstab +if ! swapon --show | grep -q "$SWAPFILE"; then + sudo fallocate -l 1G $SWAPFILE + sudo chmod 600 $SWAPFILE + sudo mkswap $SWAPFILE + sudo swapon $SWAPFILE + echo "$SWAPFILE none swap sw 0 0" | sudo tee -a /etc/fstab +fi # Set swap settings sudo sysctl vm.swappiness=10 @@ -65,8 +65,21 @@ EOH sudo udevadm control --reload-rules sudo udevadm trigger -# Load the nbd module with 4096 devices -sudo modprobe nbd nbds_max=4096 +# Load kernel modules — skip if built into kernel +for mod in nfs nfsv3; do + if [ -e /sys/module/${mod} ]; then + echo "${mod} is built into kernel" + else + sudo modprobe ${mod} 2>/dev/null && echo "${mod} loaded" || echo "WARNING: ${mod} not available" + fi +done + +# NBD needs nbds_max parameter +if [ -e /sys/module/nbd ]; then + echo "nbd is built into kernel" +else + sudo modprobe nbd nbds_max=4096 2>/dev/null && echo "nbd loaded" || echo "WARNING: nbd not available" +fi # Create the directory for the fc mounts mkdir -p /fc-vm diff --git a/.github/workflows/auto-request-same-site.yml b/.github/workflows/auto-request-same-site.yml index 15d9138dbd..dbb16e9815 100644 --- a/.github/workflows/auto-request-same-site.yml +++ b/.github/workflows/auto-request-same-site.yml @@ -21,7 +21,7 @@ permissions: jobs: assign: - runs-on: ubuntu-latest + runs-on: blacksmith-8vcpu-ubuntu-2404 steps: - name: Get GitHub App installation token id: app diff --git a/.github/workflows/build-and-upload-job.yml b/.github/workflows/build-and-upload-job.yml index 2ce7add4ab..5e055993fa 100644 --- a/.github/workflows/build-and-upload-job.yml +++ b/.github/workflows/build-and-upload-job.yml @@ -30,7 +30,7 @@ concurrency: jobs: deploy: name: Build and upload job to the ${{ inputs.environment }} environment - runs-on: ci-builder + runs-on: blacksmith-4vcpu-ubuntu-2404 environment: ${{ inputs.environment }} permissions: contents: read diff --git a/.github/workflows/claude-code-review.yml b/.github/workflows/claude-code-review.yml index 85cd5f7d9c..b1e09402db 100644 --- a/.github/workflows/claude-code-review.yml +++ b/.github/workflows/claude-code-review.yml @@ -10,7 +10,7 @@ jobs: claude-review: name: Claude Code Review - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 if: | github.event_name == 'pull_request' || (github.event_name == 'issue_comment' && diff --git a/.github/workflows/deploy-infra.yml b/.github/workflows/deploy-infra.yml index 767160effd..9ee03c2a8a 100644 --- a/.github/workflows/deploy-infra.yml +++ b/.github/workflows/deploy-infra.yml @@ -28,7 +28,7 @@ concurrency: jobs: deploy: name: Deploy Infra to the ${{ inputs.environment }} environment - runs-on: ubuntu-22.04 + runs-on: blacksmith-4vcpu-ubuntu-2204 environment: ${{ inputs.environment }} permissions: contents: read diff --git a/.github/workflows/deploy-job.yml b/.github/workflows/deploy-job.yml index 2040292676..bb8a8a05f0 100644 --- a/.github/workflows/deploy-job.yml +++ b/.github/workflows/deploy-job.yml @@ -31,7 +31,7 @@ concurrency: jobs: deploy: name: Deploy job to the ${{ inputs.environment }} environment - runs-on: ubuntu-22.04 + runs-on: blacksmith-4vcpu-ubuntu-2204 environment: ${{ inputs.environment }} permissions: contents: read diff --git a/.github/workflows/fc-test.yml b/.github/workflows/fc-test.yml index 0d6c7f122a..72d5156cb9 100644 --- a/.github/workflows/fc-test.yml +++ b/.github/workflows/fc-test.yml @@ -4,7 +4,7 @@ on: workflow_call jobs: firecracker: - runs-on: ubuntu-24.04 + runs-on: blacksmith-4vcpu-ubuntu-2404 steps: - name: Checkout Code diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index af27a2ae71..e6616c3e17 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -9,7 +9,7 @@ on: required: true jobs: integration_tests: - runs-on: infra-tests + runs-on: blacksmith-8vcpu-ubuntu-2404 timeout-minutes: 30 permissions: contents: read diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 24bb277948..2e399d96e4 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -7,7 +7,7 @@ permissions: jobs: detect-modules: - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 outputs: modules: ${{ steps.set-modules.outputs.modules }} steps: @@ -17,7 +17,7 @@ jobs: golangci-lint: needs: detect-modules - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 strategy: matrix: modules: ${{ fromJSON(needs.detect-modules.outputs.modules) }} diff --git a/.github/workflows/out-of-order-migrations.yml b/.github/workflows/out-of-order-migrations.yml index 5184e67e0a..ffa3270377 100644 --- a/.github/workflows/out-of-order-migrations.yml +++ b/.github/workflows/out-of-order-migrations.yml @@ -5,7 +5,7 @@ on: [workflow_call] jobs: check: name: Check for out of order migrations - runs-on: ubuntu-22.04 + runs-on: blacksmith-4vcpu-ubuntu-2204 steps: - name: Checkout repository uses: actions/checkout@v5 diff --git a/.github/workflows/periodic-test.yml b/.github/workflows/periodic-test.yml index 5bff88d28b..b640239a00 100644 --- a/.github/workflows/periodic-test.yml +++ b/.github/workflows/periodic-test.yml @@ -27,7 +27,7 @@ permissions: jobs: changes: name: Check - runs-on: ubuntu-22.04 + runs-on: blacksmith-4vcpu-ubuntu-2204 timeout-minutes: 15 strategy: fail-fast: false diff --git a/.github/workflows/pr-go-dependbot-cleanup.yml b/.github/workflows/pr-go-dependbot-cleanup.yml index 3c104bb93f..8b93d69bee 100644 --- a/.github/workflows/pr-go-dependbot-cleanup.yml +++ b/.github/workflows/pr-go-dependbot-cleanup.yml @@ -10,7 +10,7 @@ on: jobs: run: - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 permissions: contents: write steps: diff --git a/.github/workflows/pr-no-generated-changes.yml b/.github/workflows/pr-no-generated-changes.yml index f4fd88d5aa..0af88dc8fd 100644 --- a/.github/workflows/pr-no-generated-changes.yml +++ b/.github/workflows/pr-no-generated-changes.yml @@ -20,7 +20,7 @@ permissions: jobs: run-check: - runs-on: ubuntu-24.04 + runs-on: blacksmith-4vcpu-ubuntu-2404 steps: - name: Generate GitHub App installation token id: app-token diff --git a/.github/workflows/pr-tests-arm64.yml b/.github/workflows/pr-tests-arm64.yml index 4205b7f1cc..766aee203a 100644 --- a/.github/workflows/pr-tests-arm64.yml +++ b/.github/workflows/pr-tests-arm64.yml @@ -8,7 +8,7 @@ permissions: jobs: cross-compile: name: Cross-compile all packages for ARM64 - runs-on: ubuntu-24.04 + runs-on: blacksmith-4vcpu-ubuntu-2404 timeout-minutes: 15 steps: - name: Checkout repository @@ -39,7 +39,7 @@ jobs: arm64-unit-tests: name: ARM64 tests for ${{ matrix.package }} - runs-on: ubuntu-24.04-arm + runs-on: blacksmith-4vcpu-ubuntu-2404-arm timeout-minutes: 30 env: GIN_MODE: test @@ -99,10 +99,21 @@ jobs: sudo mount -t hugetlbfs none /mnt/hugepages echo 256 | sudo tee /proc/sys/vm/nr_hugepages - # Install extra kernel modules (nbd is not in base modules on GitHub-hosted runners) - sudo apt-get update - sudo apt-get install -y linux-modules-extra-$(uname -r) - sudo modprobe nbd nbds_max=256 + # Load kernel modules — skip if built into kernel + for mod in nfs nfsv3; do + if [ -e /sys/module/${mod} ]; then + echo "${mod} is built into kernel" + else + sudo modprobe ${mod} 2>/dev/null && echo "${mod} loaded" || echo "WARNING: ${mod} not available" + fi + done + + # NBD needs nbds_max parameter + if [ -e /sys/module/nbd ]; then + echo "nbd is built into kernel" + else + sudo modprobe nbd nbds_max=256 || echo "WARNING: nbd not available — NBD tests will fail" + fi # Disable inotify watching of change events for NBD devices echo 'ACTION=="add|change", KERNEL=="nbd*", OPTIONS:="nowatch"' | sudo tee /etc/udev/rules.d/97-nbd-device.rules diff --git a/.github/workflows/pr-tests.yml b/.github/workflows/pr-tests.yml index a0458b4b02..f0dade36fa 100644 --- a/.github/workflows/pr-tests.yml +++ b/.github/workflows/pr-tests.yml @@ -8,7 +8,7 @@ permissions: jobs: run-tests: name: Run tests for ${{ matrix.package }} - runs-on: infra-tests + runs-on: blacksmith-4vcpu-ubuntu-2404 env: GIN_MODE: test strategy: @@ -67,8 +67,21 @@ jobs: sudo mount -t hugetlbfs none /mnt/hugepages echo 2000 | sudo tee /proc/sys/vm/nr_hugepages - # Enable NBD - sudo modprobe nbd nbds_max=256 + # Load kernel modules — skip if built into kernel + for mod in nfs nfsv3; do + if [ -e /sys/module/${mod} ]; then + echo "${mod} is built into kernel" + else + sudo modprobe ${mod} 2>/dev/null && echo "${mod} loaded" || echo "WARNING: ${mod} not available" + fi + done + + # NBD needs nbds_max parameter + if [ -e /sys/module/nbd ]; then + echo "nbd is built into kernel" + else + sudo modprobe nbd nbds_max=256 + fi # Disable inotify watching of change events for NBD devices echo 'ACTION=="add|change", KERNEL=="nbd*", OPTIONS:="nowatch"' | sudo tee /etc/udev/rules.d/97-nbd-device.rules @@ -91,7 +104,7 @@ jobs: validate-iac: name: Validate terraform - runs-on: ubuntu-24.04 + runs-on: blacksmith-4vcpu-ubuntu-2404 steps: - name: Checkout repository uses: actions/checkout@v5 diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 62bd96248c..a7849a1d2d 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -40,7 +40,7 @@ jobs: needs: - unit-tests - integration-tests - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 permissions: checks: write if: always() diff --git a/.github/workflows/push-main.yml b/.github/workflows/push-main.yml index bbbe715161..f05c299ade 100644 --- a/.github/workflows/push-main.yml +++ b/.github/workflows/push-main.yml @@ -25,7 +25,7 @@ jobs: needs: - unit-tests - integration-tests - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 permissions: checks: write if: always() diff --git a/.github/workflows/validate-openapi.yml b/.github/workflows/validate-openapi.yml index 279b7da535..8c26726e13 100644 --- a/.github/workflows/validate-openapi.yml +++ b/.github/workflows/validate-openapi.yml @@ -8,7 +8,7 @@ permissions: jobs: validate-openapi: name: Validate ${{ matrix.spec }} - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 strategy: matrix: spec: