Update bootstrap graph #5
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: Bootstrap ya-bin | |
| on: | |
| push: | |
| branches: [main] | |
| paths: ['devtools/ya/bootstrap/graph.json'] | |
| workflow_dispatch: # allow manual runs for debugging | |
| jobs: | |
| bootstrap: | |
| runs-on: self-hosted | |
| if: github.ref == 'refs/heads/main' | |
| timeout-minutes: 180 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Run bootstrap (stage 1 + stage 2) | |
| run: | | |
| mkdir -p "$RUNNER_TEMP/ya-bootstrap-result" | |
| python3 devtools/ya/bootstrap/run_bootstrap.py \ | |
| --source-root "$GITHUB_WORKSPACE" \ | |
| --result-root "$RUNNER_TEMP/ya-bootstrap-result" \ | |
| --all-platforms-build \ | |
| --cleanup | |
| - name: Verify stage 1 artifacts | |
| run: | | |
| set -euo pipefail | |
| STAGE1="$RUNNER_TEMP/ya-bootstrap-result/stage1" | |
| echo "=== Checking stage1 artifacts in $STAGE1 ===" | |
| for bin in ya-bin ymake; do | |
| path="$STAGE1/$bin" | |
| if [ ! -f "$path" ]; then | |
| echo "ERROR: $path not found" | |
| exit 1 | |
| fi | |
| echo "--- Running $bin --help ---" | |
| "$path" --help | |
| echo "OK: $bin exited with code $?" | |
| done | |
| - name: Verify stage 2 artifacts | |
| run: | | |
| set -euo pipefail | |
| STAGE2="$RUNNER_TEMP/ya-bootstrap-result/stage2" | |
| PLATFORM_LIST="$GITHUB_WORKSPACE/devtools/ya/bootstrap/platform_list" | |
| MAIN_BINS="ya-bin ymake ya-tc" | |
| EXISTENCE_ONLY_BINS="test_tool" | |
| ADDITIONAL_BINS="yexport" | |
| LINUX_X86_PLATFORM="default-linux-x86_64" | |
| echo "=== Checking stage2 artifacts in $STAGE2 ===" | |
| while IFS= read -r platform || [ -n "$platform" ]; do | |
| [ -z "$platform" ] && continue | |
| echo "--- Platform: $platform ---" | |
| # Check main binaries exist | |
| for bin in $MAIN_BINS; do | |
| path="$STAGE2/$platform/$bin" | |
| if [ ! -f "$path" ]; then | |
| echo "ERROR: $path not found" | |
| exit 1 | |
| fi | |
| echo "EXISTS: $path" | |
| done | |
| # Check existence-only binaries (no --help) | |
| for bin in $EXISTENCE_ONLY_BINS; do | |
| path="$STAGE2/$platform/$bin" | |
| if [ ! -f "$path" ]; then | |
| echo "ERROR: $path not found" | |
| exit 1 | |
| fi | |
| echo "EXISTS: $path" | |
| done | |
| # Check additional binaries exist (no --help) | |
| for bin in $ADDITIONAL_BINS; do | |
| path="$STAGE2/additional/$platform/$bin" | |
| if [ ! -f "$path" ]; then | |
| echo "ERROR: $path not found" | |
| exit 1 | |
| fi | |
| echo "EXISTS: $path" | |
| done | |
| # For linux-x86_64 also run --help and check exit code | |
| if [ "$platform" = "$LINUX_X86_PLATFORM" ]; then | |
| echo "--- Running --help checks for $platform ---" | |
| for bin in $MAIN_BINS; do | |
| path="$STAGE2/$platform/$bin" | |
| echo "Running: $path --help" | |
| "$path" --help | |
| echo "OK: $bin exited with code $?" | |
| done | |
| fi | |
| done < "$PLATFORM_LIST" | |
| - name: Cleanup podman containers and images | |
| if: always() | |
| run: | | |
| podman system reset -f |