Alternative OS Test (Fallback) #4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Alternative OS Test (Fallback) | |
| on: | |
| workflow_dispatch: # Manual trigger only | |
| schedule: | |
| - cron: '0 3 * * 0' # Weekly on Sunday at 3 AM | |
| jobs: | |
| test-alternative-images: | |
| name: Test Alternative Images | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # Use alternative base images if primary ones fail | |
| - os: amazonlinux:2023 | |
| name: "Amazon Linux 2023" | |
| package_manager: dnf | |
| - os: oraclelinux:8 | |
| name: "Oracle Linux 8" | |
| package_manager: dnf | |
| - os: oraclelinux:9 | |
| name: "Oracle Linux 9" | |
| package_manager: dnf | |
| - os: redhat/ubi8 | |
| name: "Red Hat UBI 8" | |
| package_manager: dnf | |
| - os: redhat/ubi9 | |
| name: "Red Hat UBI 9" | |
| package_manager: dnf | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Test on ${{ matrix.name }} | |
| run: | | |
| echo "Testing on ${{ matrix.name }}" | |
| docker run --rm -v $PWD:/workspace -w /workspace ${{ matrix.os }} bash -c ' | |
| set -e | |
| # Update package list and install basic tools | |
| if command -v ${{ matrix.package_manager }} >/dev/null; then | |
| ${{ matrix.package_manager }} update -y -q | |
| ${{ matrix.package_manager }} install -y -q curl wget socat cronie procps-ng || \ | |
| ${{ matrix.package_manager }} install -y -q curl wget socat crontabs procps-ng | |
| else | |
| echo "Package manager not found, skipping dependency installation" | |
| fi | |
| # Make script executable | |
| chmod +x cert_manager.sh | |
| # Test script syntax | |
| bash -n cert_manager.sh || exit 1 | |
| echo "✅ Syntax check passed on ${{ matrix.name }}" | |
| # Test basic menu display | |
| echo "0" | timeout 10s ./cert_manager.sh >/dev/null 2>&1 || true | |
| echo "✅ Basic execution test passed on ${{ matrix.name }}" | |
| # Test dependency availability | |
| which curl >/dev/null && echo "✅ curl available" | |
| which wget >/dev/null && echo "✅ wget available" | |
| which socat >/dev/null && echo "✅ socat available" | |
| (which cronie >/dev/null || which cron >/dev/null || which crontabs >/dev/null) && echo "✅ cron service available" | |
| echo "✅ All tests passed on ${{ matrix.name }}" | |
| ' || { | |
| echo "⚠️ Test failed on ${{ matrix.name }}, but continuing..." | |
| exit 0 | |
| } | |
| test-minimal-containers: | |
| name: Test Minimal Containers | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # Test with minimal/scratch containers that might not have all tools | |
| - os: alpine:latest | |
| name: "Alpine Linux" | |
| package_manager: apk | |
| - os: alpine:3.18 | |
| name: "Alpine Linux 3.18" | |
| package_manager: apk | |
| - os: busybox:latest | |
| name: "BusyBox" | |
| package_manager: none | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Test on ${{ matrix.name }} | |
| run: | | |
| echo "Testing on ${{ matrix.name }}" | |
| docker run --rm -v $PWD:/workspace -w /workspace ${{ matrix.os }} sh -c ' | |
| set -e | |
| # Install bash first (if possible) | |
| if [ "${{ matrix.package_manager }}" = "apk" ]; then | |
| apk update -q | |
| apk add --no-cache bash curl wget socat dcron procps | |
| elif [ "${{ matrix.package_manager }}" = "none" ]; then | |
| echo "⚠️ Minimal container - limited testing" | |
| fi | |
| # Test if bash is available | |
| if command -v bash >/dev/null; then | |
| chmod +x cert_manager.sh | |
| # Test script syntax | |
| bash -n cert_manager.sh || exit 1 | |
| echo "✅ Syntax check passed on ${{ matrix.name }}" | |
| # Test basic execution (very brief) | |
| echo "0" | timeout 5s bash cert_manager.sh >/dev/null 2>&1 || true | |
| echo "✅ Basic execution test passed on ${{ matrix.name }}" | |
| else | |
| echo "⚠️ Bash not available on ${{ matrix.name }}" | |
| fi | |
| echo "✅ Tests completed on ${{ matrix.name }}" | |
| ' || { | |
| echo "⚠️ Some tests failed on ${{ matrix.name }}, but this is expected for minimal containers" | |
| exit 0 | |
| } | |
| compatibility-summary: | |
| name: Alternative Compatibility Summary | |
| runs-on: ubuntu-latest | |
| needs: [test-alternative-images, test-minimal-containers] | |
| if: always() | |
| steps: | |
| - name: Generate summary | |
| run: | | |
| echo "## Alternative OS Test Results" > alt_compatibility_report.md | |
| echo "" >> alt_compatibility_report.md | |
| echo "| Test Suite | Status |" >> alt_compatibility_report.md | |
| echo "|------------|--------|" >> alt_compatibility_report.md | |
| if [ "${{ needs.test-alternative-images.result }}" = "success" ]; then | |
| echo "| Alternative RHEL-based Images | ✅ Pass |" >> alt_compatibility_report.md | |
| else | |
| echo "| Alternative RHEL-based Images | ⚠️ Partial |" >> alt_compatibility_report.md | |
| fi | |
| if [ "${{ needs.test-minimal-containers.result }}" = "success" ]; then | |
| echo "| Minimal Containers | ✅ Pass |" >> alt_compatibility_report.md | |
| else | |
| echo "| Minimal Containers | ⚠️ Limited |" >> alt_compatibility_report.md | |
| fi | |
| echo "" >> alt_compatibility_report.md | |
| echo "**Note:** This is a fallback test suite for alternative container images." >> alt_compatibility_report.md | |
| echo "" >> alt_compatibility_report.md | |
| echo "Generated on: $(date)" >> alt_compatibility_report.md | |
| cat alt_compatibility_report.md | |
| - name: Upload alternative report | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: alternative-compatibility-report | |
| path: alt_compatibility_report.md | |
| retention-days: 30 |