diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml index 76e27ce..5ee5369 100644 --- a/.forgejo/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -20,8 +20,22 @@ jobs: steps: - name: Setup DinD Environment run: | - # Check if DinD container already exists and is running - if ! docker ps --format "table {{.Names}}" | grep -q "^ci-dind$"; then + # Check if DinD container exists (running or not) + if docker ps -a --format "table {{.Names}}" | grep -q "^ci-dind$"; then + echo "DinD container exists, checking status..." + + # Check if it's running + if docker ps --format "table {{.Names}}" | grep -q "^ci-dind$"; then + echo "DinD container is running, reusing existing setup" + # Verify DinD is still working + docker exec ci-dind docker version + else + echo "DinD container exists but is not running, starting it..." + docker start ci-dind + # Wait for DinD to be ready + timeout 60 bash -c 'until docker exec ci-dind docker version; do sleep 2; done' + fi + else echo "Starting new DinD container..." # Start DinD container for isolated CI operations docker run -d \ @@ -44,18 +58,6 @@ jobs: echo "${{ secrets.HARBOR_CI_PASSWORD }}" | docker exec -i ci-dind docker login ${{ secrets.CI_HOST }}:443 -u ${{ secrets.HARBOR_CI_USER }} --password-stdin echo "DinD container setup complete" - else - echo "DinD container already running, reusing existing setup" - # Verify DinD is still working - docker exec ci-dind docker version - fi - - # If container exists but is not running, start it - if docker ps -a --format "table {{.Names}}\t{{.Status}}" | grep -q "^ci-dind.*Exited\|^ci-dind.*Created"; then - echo "DinD container exists but is not running, starting it..." - docker start ci-dind - # Wait for DinD to be ready - timeout 60 bash -c 'until docker exec ci-dind docker version; do sleep 2; done' fi - name: Checkout code to DinD container