mirror of
				https://github.com/Xahau/xahaud.git
				synced 2025-11-04 10:45:50 +00:00 
			
		
		
		
	Co-authored-by: Denis Angell <dangell@transia.co> Co-authored-by: Niq Dudfield <ndudfield@gmail.com>
		
			
				
	
	
		
			96 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: Build using Docker
 | 
						|
 | 
						|
on:
 | 
						|
  push:
 | 
						|
    branches: ["dev", "candidate", "release", "jshooks"]
 | 
						|
  pull_request:
 | 
						|
    branches: ["dev", "candidate", "release", "jshooks"]
 | 
						|
 | 
						|
concurrency:
 | 
						|
  group: ${{ github.workflow }}-${{ github.ref }}
 | 
						|
  cancel-in-progress: true
 | 
						|
 | 
						|
env:
 | 
						|
  DEBUG_BUILD_CONTAINERS_AFTER_CLEANUP: 1
 | 
						|
 | 
						|
jobs:
 | 
						|
  checkout:
 | 
						|
    runs-on: [self-hosted, vanity]
 | 
						|
    outputs:
 | 
						|
      checkout_path: ${{ steps.vars.outputs.checkout_path }}
 | 
						|
    steps:
 | 
						|
      - name: Prepare checkout path
 | 
						|
        id: vars
 | 
						|
        run: |
 | 
						|
          SAFE_BRANCH=$(echo "${{ github.ref_name }}" | sed -e 's/[^a-zA-Z0-9._-]/-/g')
 | 
						|
          CHECKOUT_PATH="${SAFE_BRANCH}-${{ github.sha }}"
 | 
						|
          echo "checkout_path=${CHECKOUT_PATH}" >> "$GITHUB_OUTPUT"
 | 
						|
 | 
						|
      - uses: actions/checkout@v4
 | 
						|
        with:
 | 
						|
          path: ${{ steps.vars.outputs.checkout_path }}
 | 
						|
          clean: true
 | 
						|
          fetch-depth: 2 # Only get the last 2 commits, to avoid fetching all history
 | 
						|
 | 
						|
  build:
 | 
						|
    runs-on: [self-hosted, vanity]
 | 
						|
    needs: [checkout]
 | 
						|
    defaults:
 | 
						|
      run:
 | 
						|
        working-directory: ${{ needs.checkout.outputs.checkout_path }}
 | 
						|
    steps:
 | 
						|
      - name: Set Cleanup Script Path
 | 
						|
        run: |
 | 
						|
          echo "JOB_CLEANUP_SCRIPT=$(mktemp)" >> $GITHUB_ENV
 | 
						|
 | 
						|
      - name: Build using Docker
 | 
						|
        run: /bin/bash release-builder.sh
 | 
						|
 | 
						|
      - name: Stop Container (Cleanup)
 | 
						|
        if: always()
 | 
						|
        run: |
 | 
						|
          echo "Running cleanup script: $JOB_CLEANUP_SCRIPT"
 | 
						|
          /bin/bash -e -x "$JOB_CLEANUP_SCRIPT"
 | 
						|
          CLEANUP_EXIT_CODE=$?
 | 
						|
 | 
						|
          if [[ "$CLEANUP_EXIT_CODE" -eq 0 ]]; then
 | 
						|
            echo "Cleanup script succeeded."
 | 
						|
            rm -f "$JOB_CLEANUP_SCRIPT"
 | 
						|
            echo "Cleanup script removed."
 | 
						|
          else
 | 
						|
            echo "⚠️ Cleanup script failed! Keeping for debugging: $JOB_CLEANUP_SCRIPT"
 | 
						|
          fi
 | 
						|
 | 
						|
          if [[ "${DEBUG_BUILD_CONTAINERS_AFTER_CLEANUP}" == "1" ]]; then
 | 
						|
            echo "🔍 Checking for leftover containers..."
 | 
						|
            BUILD_CONTAINERS=$(docker ps --format '{{.Names}}' | grep '^xahaud_cached_builder' || echo "")
 | 
						|
 | 
						|
            if [[ -n "$BUILD_CONTAINERS" ]]; then
 | 
						|
              echo "⚠️ WARNING: Some build containers are still running"
 | 
						|
              echo "$BUILD_CONTAINERS"
 | 
						|
            else
 | 
						|
              echo "✅ No build containers found"
 | 
						|
            fi
 | 
						|
          fi
 | 
						|
 | 
						|
  tests:
 | 
						|
    runs-on: [self-hosted, vanity]
 | 
						|
    needs: [build, checkout]
 | 
						|
    defaults:
 | 
						|
      run:
 | 
						|
        working-directory: ${{ needs.checkout.outputs.checkout_path }}
 | 
						|
    steps:
 | 
						|
      - name: Unit tests
 | 
						|
        run: /bin/bash docker-unit-tests.sh
 | 
						|
 | 
						|
  cleanup:
 | 
						|
    runs-on: [self-hosted, vanity]
 | 
						|
    needs: [tests, checkout]
 | 
						|
    if: always()
 | 
						|
    steps:
 | 
						|
      - name: Cleanup workspace
 | 
						|
        run: |
 | 
						|
          CHECKOUT_PATH="${{ needs.checkout.outputs.checkout_path }}"
 | 
						|
          echo "Cleaning workspace for ${CHECKOUT_PATH}"
 | 
						|
          rm -rf "${{ github.workspace }}/${CHECKOUT_PATH}"
 |