mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
86 lines
2.9 KiB
YAML
86 lines
2.9 KiB
YAML
name: Release - SH Runner
|
|
|
|
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_CONTAINERS: 1
|
|
REMOVE_CONTAINERS: 0
|
|
|
|
jobs:
|
|
build-and-test:
|
|
runs-on: [self-hosted, vanity]
|
|
steps:
|
|
- name: Prepare workspace
|
|
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_ENV
|
|
mkdir -p "$CHECKOUT_PATH"
|
|
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
path: ${{ env.CHECKOUT_PATH }}
|
|
clean: true
|
|
fetch-depth: 2
|
|
|
|
- name: Set Cleanup Script Path
|
|
run: |
|
|
echo "JOB_CLEANUP_SCRIPT=$(mktemp)" >> $GITHUB_ENV
|
|
|
|
- name: Build using Docker
|
|
working-directory: ${{ env.CHECKOUT_PATH }}
|
|
run: /bin/bash release-builder.sh
|
|
|
|
- name: Stop Container (Cleanup after build)
|
|
if: always()
|
|
working-directory: ${{ env.CHECKOUT_PATH }}
|
|
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_CONTAINERS}" == "1" ]]; then
|
|
echo "🔍 Checking for leftover containers..."
|
|
BUILD_CONTAINERS=$(docker ps --format '{{.Names}}' | grep '^xahaud_cached_builder' || echo "")
|
|
CONTAINER_NAME="xahaud_cached_builder_${{ github.workflow }}-${{ github.ref_name }}"
|
|
if [[ -n "$BUILD_CONTAINERS" && "${REMOVE_CONTAINERS}" == "1" ]]; then
|
|
echo "⚠️ WARNING: Some build containers are still running"
|
|
echo "$BUILD_CONTAINERS"
|
|
echo "Attempting to stop build containers.."
|
|
echo "Stopping container: $CONTAINER_NAME"
|
|
docker stop "$CONTAINER_NAME" || echo "Failed to stop container: $CONTAINER_NAME"
|
|
echo "Removing container: $CONTAINER_NAME"
|
|
docker rm -f "$CONTAINER_NAME" || echo "Failed to remove container: $CONTAINER_NAME"
|
|
echo "✅ Build container stopped and removed"
|
|
else
|
|
echo "✅ No build containers found"
|
|
fi
|
|
fi
|
|
|
|
- name: Run unit tests
|
|
working-directory: ${{ env.CHECKOUT_PATH }}
|
|
run: /bin/bash docker-unit-tests.sh
|
|
|
|
- name: Cleanup workspace
|
|
if: always()
|
|
run: |
|
|
echo "Cleaning workspace for ${CHECKOUT_PATH}"
|
|
rm -rf "${{ github.workspace }}/${CHECKOUT_PATH}"
|