Initial commit: networktuning.sh, gitlab-upgrade.sh, CI pipeline
Amp-Thread-ID: https://ampcode.com/threads/T-019cc404-c628-759e-a50b-f5eeea35b91f Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
###############################################################################
|
||||
# .gitlab-ci.yml — CI pipeline for bash script testing
|
||||
#
|
||||
# Stages:
|
||||
# 1. lint — ShellCheck static analysis + bash syntax check
|
||||
# 2. test — Run --help and --dry-run in Ubuntu and RHEL containers
|
||||
###############################################################################
|
||||
|
||||
stages:
|
||||
- lint
|
||||
- test
|
||||
|
||||
variables:
|
||||
SHELLCHECK_SEVERITY: "warning"
|
||||
|
||||
# ─────────────────────────────────────────────
|
||||
# Lint Stage
|
||||
# ─────────────────────────────────────────────
|
||||
|
||||
shellcheck:
|
||||
stage: lint
|
||||
image: koalaman/shellcheck-alpine:stable
|
||||
script:
|
||||
- echo "Running ShellCheck on all .sh files..."
|
||||
- find . -name "*.sh" -not -path "./.git/*" -print0 |
|
||||
xargs -0 -r shellcheck --severity="$SHELLCHECK_SEVERITY" --format=tty
|
||||
tags:
|
||||
- docker
|
||||
|
||||
bash-syntax:
|
||||
stage: lint
|
||||
image: bash:5
|
||||
script:
|
||||
- echo "Checking bash syntax (bash -n)..."
|
||||
- |
|
||||
errors=0
|
||||
for script in $(find . -name "*.sh" -not -path "./.git/*"); do
|
||||
if ! bash -n "$script" 2>&1; then
|
||||
errors=$((errors + 1))
|
||||
fi
|
||||
done
|
||||
if [ "$errors" -gt 0 ]; then
|
||||
echo "FAILED: $errors script(s) have syntax errors"
|
||||
exit 1
|
||||
fi
|
||||
echo "All scripts pass syntax check"
|
||||
tags:
|
||||
- docker
|
||||
|
||||
# ─────────────────────────────────────────────
|
||||
# Test Stage — Ubuntu
|
||||
# ─────────────────────────────────────────────
|
||||
|
||||
test-ubuntu:
|
||||
stage: test
|
||||
image: ubuntu:24.04
|
||||
before_script:
|
||||
- apt-get update -qq
|
||||
- apt-get install -y -qq procps iproute2 kmod >/dev/null 2>&1
|
||||
script:
|
||||
- echo "=== Testing on Ubuntu 24.04 ==="
|
||||
- |
|
||||
for script in $(find . -maxdepth 1 -name "*.sh" -not -path "./.git/*"); do
|
||||
echo ""
|
||||
echo "--- $(basename "$script") --help ---"
|
||||
bash "$script" --help 2>&1 || true
|
||||
done
|
||||
- echo ""
|
||||
- echo "--- networktuning.sh --dry-run ---"
|
||||
- bash networktuning.sh --dry-run 2>&1 || true
|
||||
tags:
|
||||
- docker
|
||||
|
||||
# ─────────────────────────────────────────────
|
||||
# Test Stage — RHEL
|
||||
# ─────────────────────────────────────────────
|
||||
|
||||
test-rhel:
|
||||
stage: test
|
||||
image: rockylinux:9
|
||||
before_script:
|
||||
- dnf install -y -q procps iproute kmod >/dev/null 2>&1
|
||||
script:
|
||||
- echo "=== Testing on Rocky Linux 9 ==="
|
||||
- |
|
||||
for script in $(find . -maxdepth 1 -name "*.sh" -not -path "./.git/*"); do
|
||||
echo ""
|
||||
echo "--- $(basename "$script") --help ---"
|
||||
bash "$script" --help 2>&1 || true
|
||||
done
|
||||
- echo ""
|
||||
- echo "--- networktuning.sh --dry-run ---"
|
||||
- bash networktuning.sh --dry-run 2>&1 || true
|
||||
tags:
|
||||
- docker
|
||||
Reference in New Issue
Block a user