From 08a37222e3cfbb8da1589f15cca2ea335143db8e Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Sun, 1 Feb 2026 19:52:51 +0100 Subject: [PATCH] ci: pulling docker image forced for "Codespaces Test" workflow --- .devcontainer/devcontainer.json | 2 +- .github/workflows/codespaces-test.yml | 263 +++++++++++++------------- 2 files changed, 134 insertions(+), 131 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index bb911b846..2667b502d 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -84,4 +84,4 @@ "onAutoForward": "notify" } } -} \ No newline at end of file +} diff --git a/.github/workflows/codespaces-test.yml b/.github/workflows/codespaces-test.yml index bc782bb79..1d146e19b 100644 --- a/.github/workflows/codespaces-test.yml +++ b/.github/workflows/codespaces-test.yml @@ -26,11 +26,11 @@ on: workflow_dispatch: push: paths: - - '.devcontainer/**' - - '.github/workflows/codespaces-test.yml' + - ".devcontainer/**" + - ".github/workflows/codespaces-test.yml" schedule: # Test weekly to catch base image changes - - cron: '0 6 * * 1' + - cron: "0 6 * * 1" permissions: contents: read @@ -41,153 +41,156 @@ jobs: timeout-minutes: 60 steps: - - name: Checkout - uses: actions/checkout@v4 + - name: Checkout + uses: actions/checkout@v4 - - name: Test Dev Container Build and mp-units Development Workflow - uses: devcontainers/ci@v0.3.1900000417 - with: - imageName: mp-units-dev - cacheFrom: mp-units-dev - push: never - runCmd: | - set -e # Exit on any error + - name: Pull latest Docker image + run: docker pull trainiteu/mp-units:latest - echo "๐Ÿงช Testing mp-units development environment..." - echo "๐Ÿ“‹ Verifying base tools and compilers:" + - name: Test Dev Container Build and mp-units Development Workflow + uses: devcontainers/ci@v0.3.1900000417 + with: + imageName: mp-units-dev + cacheFrom: mp-units-dev + push: never + runCmd: | + set -e # Exit on any error - # Check essential tools are available - tools=(gcc g++ clang clang++ cmake ninja conan python3 git pre-commit) - for tool in "${tools[@]}"; do - if command -v "$tool" >/dev/null 2>&1; then - echo "โœ… $tool: $(command -v "$tool")" + echo "๐Ÿงช Testing mp-units development environment..." + echo "๐Ÿ“‹ Verifying base tools and compilers:" + + # Check essential tools are available + tools=(gcc g++ clang clang++ cmake ninja conan python3 git pre-commit) + for tool in "${tools[@]}"; do + if command -v "$tool" >/dev/null 2>&1; then + echo "โœ… $tool: $(command -v "$tool")" + else + echo "โŒ $tool: NOT FOUND" + exit 1 + fi + done + + echo "" + echo "๐Ÿ“‹ Compiler matrix verification:" + echo "Available GCC versions: $(ls /usr/bin/gcc-* | grep -E 'gcc-[0-9]+$' | sort -V | tr '\n' ' ')" + echo "Available Clang versions: $(ls /usr/bin/clang++-* /usr/local/bin/clang++-* 2>/dev/null | grep -E 'clang\+\+-[0-9]+$' | sort -V | tr '\n' ' ')" + + # Test specific compiler versions expected for mp-units + echo "" + echo "๐Ÿงช Testing specific compiler versions:" + + # Expected GCC versions (12, 13, 14, 15) + expected_gcc=(12 13 14 15) + for version in "${expected_gcc[@]}"; do + if command -v "gcc-$version" >/dev/null 2>&1 && command -v "g++-$version" >/dev/null 2>&1; then + gcc_ver=$(gcc-$version --version | head -1) + echo "โœ… GCC-$version: $gcc_ver" + else + echo "โŒ GCC-$version: NOT FOUND" + exit 1 + fi + done + + # Expected Clang versions (16, 17, 18, 19, 20) + expected_clang=(16 17 18 19 20) + for version in "${expected_clang[@]}"; do + if command -v "clang-$version" >/dev/null 2>&1 && command -v "clang++-$version" >/dev/null 2>&1; then + clang_ver=$(clang-$version --version | head -1) + echo "โœ… Clang-$version: $clang_ver" + else + echo "โŒ Clang-$version: NOT FOUND" + exit 1 + fi + done + + echo "" + echo "๐Ÿ”ง Default tool versions:" + gcc --version | head -1 + clang --version | head -1 + cmake --version | head -1 + ninja --version + python3 --version + conan --version + + echo "" + echo "๐Ÿ“ฆ Conan configuration validation:" + conan profile list + + # Verify expected Conan profiles exist + expected_profiles=(gcc12 gcc13 gcc14 clang16 clang17 clang18 clang20) + for profile in "${expected_profiles[@]}"; do + if conan profile show "$profile" >/dev/null 2>&1; then + echo "โœ… Profile $profile: available" + else + echo "โŒ Profile $profile: MISSING" + exit 1 + fi + done + + echo "" + echo "๐Ÿ—๏ธ Testing mp-units comprehensive setup with check_all.sh:" + + # Run the comprehensive installation and validation script + echo "Running check_all.sh install to validate all compiler configurations..." + if .devcontainer/check_all.sh install; then + echo "โœ… check_all.sh install completed successfully" + echo "โœ… All compiler profiles validated and dependencies installed" else - echo "โŒ $tool: NOT FOUND" + echo "โŒ check_all.sh install failed" exit 1 fi - done - echo "" - echo "๐Ÿ“‹ Compiler matrix verification:" - echo "Available GCC versions: $(ls /usr/bin/gcc-* | grep -E 'gcc-[0-9]+$' | sort -V | tr '\n' ' ')" - echo "Available Clang versions: $(ls /usr/bin/clang++-* /usr/local/bin/clang++-* 2>/dev/null | grep -E 'clang\+\+-[0-9]+$' | sort -V | tr '\n' ' ')" - - # Test specific compiler versions expected for mp-units - echo "" - echo "๐Ÿงช Testing specific compiler versions:" - - # Expected GCC versions (12, 13, 14, 15) - expected_gcc=(12 13 14 15) - for version in "${expected_gcc[@]}"; do - if command -v "gcc-$version" >/dev/null 2>&1 && command -v "g++-$version" >/dev/null 2>&1; then - gcc_ver=$(gcc-$version --version | head -1) - echo "โœ… GCC-$version: $gcc_ver" + echo "" + echo "๐ŸŽฏ Testing quick build validation:" + # Test one quick build to ensure the environment actually works + echo "Testing quick build with Clang-20..." + if conan create . -pr clang20 -c user.mp-units.build:all=False -s compiler.cppstd=23 -b missing; then + echo "โœ… Quick build test passed" else - echo "โŒ GCC-$version: NOT FOUND" + echo "โŒ Quick build test failed" exit 1 fi - done - # Expected Clang versions (16, 17, 18, 19, 20) - expected_clang=(16 17 18 19 20) - for version in "${expected_clang[@]}"; do - if command -v "clang-$version" >/dev/null 2>&1 && command -v "clang++-$version" >/dev/null 2>&1; then - clang_ver=$(clang-$version --version | head -1) - echo "โœ… Clang-$version: $clang_ver" + echo "" + echo "๐Ÿ“– Testing documentation tools:" + if command -v mkdocs >/dev/null 2>&1; then + echo "โœ… MkDocs: $(mkdocs --version)" + # Test mkdocs configuration + if mkdocs build --strict --quiet; then + echo "โœ… Documentation builds successfully" + else + echo "โŒ Documentation build failed" + exit 1 + fi else - echo "โŒ Clang-$version: NOT FOUND" + echo "โŒ MkDocs: NOT FOUND" exit 1 fi - done - echo "" - echo "๐Ÿ”ง Default tool versions:" - gcc --version | head -1 - clang --version | head -1 - cmake --version | head -1 - ninja --version - python3 --version - conan --version - - echo "" - echo "๐Ÿ“ฆ Conan configuration validation:" - conan profile list - - # Verify expected Conan profiles exist - expected_profiles=(gcc12 gcc13 gcc14 clang16 clang17 clang18 clang20) - for profile in "${expected_profiles[@]}"; do - if conan profile show "$profile" >/dev/null 2>&1; then - echo "โœ… Profile $profile: available" + echo "" + echo "๐ŸŽฏ Testing API reference setup:" + if [ -f ".devcontainer/api_reference.sh" ]; then + echo "โœ… API reference script exists" + # Test setup-only mode + if .devcontainer/api_reference.sh -s; then + echo "โœ… API reference setup completed" + else + echo "โŒ API reference setup failed" + exit 1 + fi else - echo "โŒ Profile $profile: MISSING" + echo "โŒ API reference script missing" exit 1 fi - done - echo "" - echo "๐Ÿ—๏ธ Testing mp-units comprehensive setup with check_all.sh:" - - # Run the comprehensive installation and validation script - echo "Running check_all.sh install to validate all compiler configurations..." - if .devcontainer/check_all.sh install; then - echo "โœ… check_all.sh install completed successfully" - echo "โœ… All compiler profiles validated and dependencies installed" - else - echo "โŒ check_all.sh install failed" - exit 1 - fi - - echo "" - echo "๐ŸŽฏ Testing quick build validation:" - # Test one quick build to ensure the environment actually works - echo "Testing quick build with Clang-20..." - if conan create . -pr clang20 -c user.mp-units.build:all=False -s compiler.cppstd=23 -b missing; then - echo "โœ… Quick build test passed" - else - echo "โŒ Quick build test failed" - exit 1 - fi - - echo "" - echo "๐Ÿ“– Testing documentation tools:" - if command -v mkdocs >/dev/null 2>&1; then - echo "โœ… MkDocs: $(mkdocs --version)" - # Test mkdocs configuration - if mkdocs build --strict --quiet; then - echo "โœ… Documentation builds successfully" + echo "" + echo "๐Ÿงน Testing code quality tools:" + if pre-commit --version >/dev/null 2>&1; then + echo "โœ… pre-commit: $(pre-commit --version)" else - echo "โŒ Documentation build failed" + echo "โŒ pre-commit: NOT FOUND" exit 1 fi - else - echo "โŒ MkDocs: NOT FOUND" - exit 1 - fi - echo "" - echo "๐ŸŽฏ Testing API reference setup:" - if [ -f ".devcontainer/api_reference.sh" ]; then - echo "โœ… API reference script exists" - # Test setup-only mode - if .devcontainer/api_reference.sh -s; then - echo "โœ… API reference setup completed" - else - echo "โŒ API reference setup failed" - exit 1 - fi - else - echo "โŒ API reference script missing" - exit 1 - fi - - echo "" - echo "๐Ÿงน Testing code quality tools:" - if pre-commit --version >/dev/null 2>&1; then - echo "โœ… pre-commit: $(pre-commit --version)" - else - echo "โŒ pre-commit: NOT FOUND" - exit 1 - fi - - echo "" - echo "๐ŸŽ‰ All tests passed! Development environment is ready for mp-units development." + echo "" + echo "๐ŸŽ‰ All tests passed! Development environment is ready for mp-units development."