Skip to content

Commit c1f66c5

Browse files
authored
Merge pull request #1837 from wso2/revert-1830-new-main
Revert "Refactor cli-periodic workflow"
2 parents de0a290 + 3299309 commit c1f66c5

1 file changed

Lines changed: 81 additions & 42 deletions

File tree

.github/workflows/cli-gw-build-periodic.yml

Lines changed: 81 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ on:
88
jobs:
99
hourly-build:
1010
name: Periodic Gateway Build
11-
runs-on: ubuntu-24.04
12-
permissions:
13-
contents: read
14-
packages: read
11+
runs-on: ubuntu-latest
12+
13+
# BUILDX_BUILDER will be detected and exported by the initiation step
1514

1615
steps:
1716
# ------------------------------------------------------------
@@ -35,39 +34,88 @@ jobs:
3534
docker.log
3635
3736
# ------------------------------------------------------------
38-
# 1. Docker / Buildx (aligned with gateway-release.yml)
37+
# 1. Initiation
3938
# ------------------------------------------------------------
40-
- name: Set up QEMU
41-
uses: docker/setup-qemu-action@v3
42-
with:
43-
platforms: linux/amd64,linux/arm64
44-
45-
- name: Set up Docker Buildx
46-
uses: docker/setup-buildx-action@v3
47-
with:
48-
install: true
49-
driver: docker-container
50-
51-
- name: Log in to GitHub Container Registry
52-
uses: docker/login-action@v3
53-
with:
54-
registry: ghcr.io
55-
username: ${{ github.actor }}
56-
password: ${{ secrets.GITHUB_TOKEN }}
57-
5839
- name: Initiate environment
5940
run: |
6041
set -o pipefail
6142
{
6243
echo "== Repository =="
6344
git rev-parse HEAD
6445
46+
echo "== Go version =="
47+
go version || true
48+
6549
echo "== Docker =="
6650
docker version
6751
68-
echo "== Buildx =="
69-
docker buildx ls
52+
echo "== Buildx setup =="
53+
54+
# Prefer an active docker-backed builder. Strategy:
55+
# 1. If there's an active builder (starred), and it's docker-backed, use it.
56+
# 2. Otherwise, find any existing docker-backed builder and use it.
57+
# 3. Otherwise, attempt to create `docker-local` and use it only if creation succeeded.
58+
# 4. If none of the above work, fall back to whatever builder is active (do not attempt to `use` a non-existent name).
59+
ACTIVE_BUILDER=$(docker buildx ls 2>/dev/null | awk '/\*/{print $1}' | sed 's/\*//g' | head -n1 || true)
60+
CHOSEN_BUILDER=""
61+
62+
if [ -n "${ACTIVE_BUILDER}" ] && docker buildx inspect "${ACTIVE_BUILDER}" >/dev/null 2>&1 && docker buildx inspect "${ACTIVE_BUILDER}" | grep -qi 'Driver: *docker'; then
63+
CHOSEN_BUILDER="${ACTIVE_BUILDER}"
64+
echo "Active docker-backed builder detected: ${CHOSEN_BUILDER}"
65+
else
66+
# find any docker-backed builder
67+
for b in $(docker buildx ls 2>/dev/null | tail -n +2 | awk '{print $1}' | sed 's/\*//g'); do
68+
if docker buildx inspect "$b" >/dev/null 2>&1 && docker buildx inspect "$b" | grep -qi 'Driver: *docker'; then
69+
CHOSEN_BUILDER="$b"
70+
echo "Found existing docker-backed builder: ${CHOSEN_BUILDER}"
71+
break
72+
fi
73+
done
74+
fi
75+
76+
if [ -z "${CHOSEN_BUILDER}" ]; then
77+
echo "No existing docker-backed builder found; attempting to create docker-local"
78+
if docker buildx create --name docker-local --driver docker >/dev/null 2>&1; then
79+
CHOSEN_BUILDER="docker-local"
80+
echo "Created docker-local builder"
81+
else
82+
echo "Could not create docker-local builder; will not call 'docker buildx use' for a missing builder"
83+
fi
84+
fi
85+
86+
# Only call `docker buildx use` if the chosen builder actually exists.
87+
if [ -n "${CHOSEN_BUILDER}" ] && docker buildx inspect "${CHOSEN_BUILDER}" >/dev/null 2>&1; then
88+
docker buildx use "${CHOSEN_BUILDER}"
89+
else
90+
echo "Proceeding without switching builder (using runner's default)"
91+
fi
92+
7093
docker buildx inspect --bootstrap
94+
docker buildx ls
95+
96+
# Determine and export the builder for later steps.
97+
CURRENT_BUILDER=$(docker buildx ls 2>/dev/null | awk '/\*/{print $1}' | sed 's/\*//g' | head -n1 || true)
98+
if [ -z "${CURRENT_BUILDER}" ]; then
99+
if [ -n "${CHOSEN_BUILDER}" ]; then
100+
CURRENT_BUILDER="${CHOSEN_BUILDER}"
101+
elif docker buildx inspect docker-local >/dev/null 2>&1; then
102+
CURRENT_BUILDER="docker-local"
103+
else
104+
for b in $(docker buildx ls 2>/dev/null | tail -n +2 | awk '{print $1}' | sed 's/\*//g'); do
105+
if docker buildx inspect "$b" >/dev/null 2>&1 && docker buildx inspect "$b" | grep -qi 'Driver: *docker'; then
106+
CURRENT_BUILDER="$b"
107+
break
108+
fi
109+
done
110+
fi
111+
fi
112+
if [ -n "${CURRENT_BUILDER}" ]; then
113+
echo "BUILDX_BUILDER=${CURRENT_BUILDER}" >> $GITHUB_ENV
114+
echo "Exported BUILDX_BUILDER=${CURRENT_BUILDER}"
115+
else
116+
echo "BUILDX_BUILDER=" >> $GITHUB_ENV
117+
echo "No docker-backed builder available; subsequent steps may use runner default"
118+
fi
71119
} 2>&1 | tee 1-initiate.log || true
72120
73121
- name: Set up Go
@@ -134,7 +182,9 @@ jobs:
134182
run: |
135183
set -o pipefail
136184
137-
LOG_ROOT="$HOME/.wso2ap/.tmp"
185+
REAL_DOCKER_LOG="$HOME/.wso2ap/.tmp/gateway-image-build/logs/docker.log"
186+
187+
mkdir -p "$(dirname "$REAL_DOCKER_LOG")"
138188
139189
set -o pipefail
140190
@@ -144,11 +194,8 @@ jobs:
144194
(./ap gateway image build) 2>&1 | tee "$GITHUB_WORKSPACE/5-ap-gw-image-build.log"
145195
BUILD_RC=${PIPESTATUS[0]}
146196
147-
# Resolve the most recent gateway build log directory (CLI uses gateway-image-build-<id>/logs/docker.log)
148-
LOG_DIR="$(ls -dt "$LOG_ROOT"/gateway-image-build*/logs 2>/dev/null | head -n1 || true)"
149-
REAL_DOCKER_LOG="${LOG_DIR:+$LOG_DIR/docker.log}"
150-
151197
# Post-build diagnostics: list/log sizes/stat to help debug missing files
198+
LOG_DIR="$(dirname "$REAL_DOCKER_LOG")"
152199
echo "=== DIAGNOSTICS: list $LOG_DIR ===" >> "$GITHUB_WORKSPACE/5-ap-gw-image-build.log" 2>&1
153200
ls -la "$LOG_DIR" >> "$GITHUB_WORKSPACE/5-ap-gw-image-build.log" 2>&1 || true
154201
echo "=== DIAGNOSTICS: stat $REAL_DOCKER_LOG ===" >> "$GITHUB_WORKSPACE/5-ap-gw-image-build.log" 2>&1
@@ -175,10 +222,6 @@ jobs:
175222
176223
# Exit with the build return code so failures are visible
177224
if [ "${BUILD_RC}" -ne 0 ]; then
178-
if [ -f "$REAL_DOCKER_LOG" ]; then
179-
echo "=== docker.log (last 200 lines) ===" >> "$GITHUB_WORKSPACE/5-ap-gw-image-build.log"
180-
tail -n 200 "$REAL_DOCKER_LOG" >> "$GITHUB_WORKSPACE/5-ap-gw-image-build.log" 2>&1 || true
181-
fi
182225
echo "ap gateway image build failed (rc=${BUILD_RC})" >&2
183226
exit ${BUILD_RC}
184227
fi
@@ -195,18 +238,18 @@ jobs:
195238
run: |
196239
set -o pipefail
197240
198-
LOG_ROOT="$HOME/.wso2ap/.tmp"
241+
REAL_DOCKER_LOG="$HOME/.wso2ap/.tmp/gateway-image-build/logs/docker.log"
242+
243+
mkdir -p "$(dirname "$REAL_DOCKER_LOG")"
199244
200245
set -o pipefail
201246
202247
# cd into sample-policies so that relative filePath entries in build.yaml resolve correctly
203248
(cd sample-policies && ../ap gateway image build) 2>&1 | tee "$GITHUB_WORKSPACE/6-sample-policies-gw-image-build.log"
204249
BUILD_RC=${PIPESTATUS[0]}
205250
206-
LOG_DIR="$(ls -dt "$LOG_ROOT"/gateway-image-build*/logs 2>/dev/null | head -n1 || true)"
207-
REAL_DOCKER_LOG="${LOG_DIR:+$LOG_DIR/docker.log}"
208-
209251
# Post-build diagnostics
252+
LOG_DIR="$(dirname "$REAL_DOCKER_LOG")"
210253
echo "=== DIAGNOSTICS: list $LOG_DIR ===" >> "$GITHUB_WORKSPACE/6-sample-policies-gw-image-build.log" 2>&1
211254
ls -la "$LOG_DIR" >> "$GITHUB_WORKSPACE/6-sample-policies-gw-image-build.log" 2>&1 || true
212255
echo "=== DIAGNOSTICS: stat $REAL_DOCKER_LOG ===" >> "$GITHUB_WORKSPACE/6-sample-policies-gw-image-build.log" 2>&1
@@ -230,10 +273,6 @@ jobs:
230273
231274
# Exit with the build return code so failures are visible
232275
if [ "${BUILD_RC}" -ne 0 ]; then
233-
if [ -f "$REAL_DOCKER_LOG" ]; then
234-
echo "=== docker.log (last 200 lines) ===" >> "$GITHUB_WORKSPACE/6-sample-policies-gw-image-build.log"
235-
tail -n 200 "$REAL_DOCKER_LOG" >> "$GITHUB_WORKSPACE/6-sample-policies-gw-image-build.log" 2>&1 || true
236-
fi
237276
echo "ap gateway image build with sample policies failed (rc=${BUILD_RC})" >&2
238277
exit ${BUILD_RC}
239278
fi

0 commit comments

Comments
 (0)