Skip to content

Commit ce18abb

Browse files
authored
Merge pull request #109 from shopware/chore/improve-downstream
chore: improve downstream
2 parents 2f7136b + 84159fd commit ce18abb

File tree

1 file changed

+29
-10
lines changed

1 file changed

+29
-10
lines changed

downstream/wait.bash

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,24 @@ WORKFLOW=${2}
44
RUN_ID=${3}
55
POLL_INTERVAL=${4}
66

7+
# TODO: Remove old logic when no branches are outdated
8+
NEW_LOGIC=${NEW_LOGIC:-0}
9+
710
FILTER_DATE=$(TZ=UTC date -d "-5 minutes" "+%Y-%m-%dT%H:%M")
811
MAX_ATTEMPTS=10
912
ATTEMPT=1
1013

1114
DOWNSTREAM_RUN_ID=invalid
1215

13-
trap on_sigterm SIGTERM
16+
trap on_sigterm SIGTERM
1417

1518
on_sigterm() {
1619
echo "Timeout reached"
1720
fail
1821
}
1922

2023
fail() {
21-
if [[ "${CHECK}" != "${RUN_ID}" ]]; then
24+
if [[ -z "${DOWNSTREAM_RUN_ID}" ]]; then
2225
echo "Failed to find run id in downstream"
2326
exit 1
2427
fi
@@ -32,14 +35,23 @@ get_run_ids() {
3235
}
3336

3437
find_connect_step_job_id() {
35-
gh run view $1 --repo $REPO --json jobs \
36-
| jq '.jobs[] | select(.steps[] | .name | contains("upstream-connect")) | .databaseId'
38+
# TODO: Remove old logic when no branches are outdated
39+
if [[ ${NEW_LOGIC} -ne 1 ]]; then
40+
gh run view $1 --repo $REPO --json jobs |
41+
jq '.jobs[] | select(.steps[] | .name | contains("upstream-connect")) | .databaseId'
42+
return
43+
fi
44+
gh run view $1 --repo $REPO --json jobs |
45+
jq --arg run_id "${RUN_ID}" '.jobs[] | select(.name | contains($run_id)) | .databaseId'
3746
}
3847

3948
while true; do
49+
if [[ ${ATTEMPT} -gt ${MAX_ATTEMPTS} ]]; then
50+
fail
51+
fi
4052
echo "Trying to get run id from downstream. Attempt: ${ATTEMPT}"
4153
ATTEMPT=$((ATTEMPT + 1))
42-
54+
4355
readarray -t RUNS < <(get_run_ids)
4456

4557
echo $RUNS
@@ -49,11 +61,13 @@ while true; do
4961
echo $job_id
5062

5163
if [[ -n $job_id ]]; then
52-
if gh run view $1 --repo $REPO --log -j $job_id | grep -q ${RUN_ID}; then
53-
# Break out of for and until loop
54-
DOWNSTREAM_RUN_ID=${RUN}
55-
break 2
64+
# TODO: Remove old logic when no branches are outdated
65+
if [[ ${NEW_LOGIC} -ne 1 && ! $(gh run view ${RUN} --repo $REPO --log -j $job_id | grep -q ${RUN_ID}) ]]; then
66+
continue
5667
fi
68+
# Break out of for and until loop
69+
DOWNSTREAM_RUN_ID=${RUN}
70+
break 2
5771
fi
5872
done
5973

@@ -66,14 +80,19 @@ echo "Downstream workflow: $url"
6680
echo "downstream_run_id=${DOWNSTREAM_RUN_ID}" >>$GITHUB_OUTPUT
6781
echo "downstream_run_url=${url}" >>$GITHUB_OUTPUT
6882

83+
ATTEMPT=1
84+
6985
while true; do
86+
echo "Trying to get run status... Attempt: ${ATTEMPT}"
7087
ATTEMPT=$((ATTEMPT + 1))
7188
STATUS=$(gh run view --repo ${REPO} ${DOWNSTREAM_RUN_ID} --json status,conclusion | jq -r 'select(.status == "completed") | .conclusion')
7289

7390
if [[ "${STATUS}" != "" ]]; then
7491
break
7592
fi
7693

94+
echo "Job is still running. Waiting 1 minute before retrying..."
95+
7796
# Only check every minute
7897
sleep 60
7998
done
@@ -83,4 +102,4 @@ if [[ "${STATUS}" != "success" ]]; then
83102
fail
84103
fi
85104

86-
echo "Downstream workflow succeeded!"
105+
echo "Downstream workflow succeeded!"

0 commit comments

Comments
 (0)