-
Notifications
You must be signed in to change notification settings - Fork 101
163 lines (138 loc) · 5.33 KB
/
backwards_compatibility.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
name: backwards_compatibility
on:
workflow_call:
inputs:
pr_body:
description: 'Pull Request body'
required: true
type: string
jobs:
check_commit_message:
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.check_skip.outputs.skip == 'true' }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
fetch-depth: 0
- name: Print the event payload
run: cat "$GITHUB_EVENT_PATH"
- name: Check if BREAKING_CHANGE is present in any commits body in the PR
id: check_commits
run: |
BREAKING_CHANGE_FOUND=false
COMMIT_RANGE=origin/master...HEAD
for COMMIT in $(git log --format=%H $COMMIT_RANGE); do
COMMIT_MSG=$(git log --format=%B -n 1 $COMMIT)
COMMIT_MSG_SUBJECT=$(echo "$COMMIT_MSG" | head -n 1)
COMMIT_MSG_BODY=$(echo "$COMMIT_MSG" | tail -n +3)
echo "Commit $COMMIT, subject: $COMMIT_MSG_SUBJECT, body: $COMMIT_MSG_BODY"
if echo "$COMMIT_MSG_BODY" | grep -q "BREAKING_CHANGE"; then
BREAKING_CHANGE_FOUND=true
break
fi
done
if $BREAKING_CHANGE_FOUND; then
echo "skip=true" >> $GITHUB_OUTPUT
echo "'BREAKING_CHANGE' found in commit message, setting skip=true"
else
echo "skip=false" >> $GITHUB_OUTPUT
echo "'BREAKING_CHANGE' not found in commit message, setting skip=false"
fi
- name: Check if BREAKING_CHANGE is present in pull request body
id: check_pr_body
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ENV_PR_BODY: ${{ inputs.pr_body }}
run: |
PR_BODY="$ENV_PR_BODY"
echo "Pull Request body: $PR_BODY"
if [[ "$PR_BODY" == *"BREAKING_CHANGE"* ]]; then
echo "skip=true" >> $GITHUB_OUTPUT
echo "'BREAKING_CHANGE' found in pull request body, setting skip=true"
else
echo "skip=false" >> $GITHUB_OUTPUT
echo "'BREAKING_CHANGE' not found in pull request body, setting skip=false"
fi
- name: Check For Skip Condition
id: check_skip
run: |
if ${{ steps.check_commits.outputs.skip == 'true' }} || ${{ steps.check_pr_body.outputs.skip == 'true' }}; then
echo "skip=true" >> $GITHUB_OUTPUT
else
echo "skip=false" >> $GITHUB_OUTPUT
fi
build_and_test:
runs-on: ubuntu-latest
needs: check_commit_message
if: ${{ needs.check_commit_message.outputs.should_skip != 'true' }}
env:
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
steps:
- run: echo "${{ needs.check_commit_message.outputs.should_skip == 'true' }}"
- name: Checkout code (origin/master)
uses: actions/checkout@v4
with:
ref: master
fetch-depth: 0
- name: Cache cargo & target directories
uses: Swatinem/rust-cache@v2
with:
key: "v2"
- name: Build iggy-server (origin/master)
run: IGGY_CI_BUILD=true cargo build
- uses: JarvusInnovations/background-action@v1
name: Run iggy-server in background (origin/master)
with:
run: |
target/debug/iggy-server &
wait-on: tcp:localhost:8090
wait-for: 1m
log-output: true
log-output-if: timeout
tail: true
- name: Run send bench (origin/master)
timeout-minutes: 1
run: target/debug/iggy-bench --warmup-time 0 --verbose send --message-batches 50 --messages-per-batch 100 tcp
- name: Run poll bench (origin/master)
timeout-minutes: 1
run: target/debug/iggy-bench --warmup-time 0 --verbose poll --message-batches 50 --messages-per-batch 100 tcp
- name: Stop iggy-server (origin/master)
timeout-minutes: 1
run: pkill -15 iggy-server && while pgrep -l iggy-server; do sleep 2; done;
- name: Print iggy-server logs (origin/master)
run: cat local_data/logs/iggy*
- name: Remove iggy-server logs (origin/master)
run: rm local_data/logs/iggy*
- name: Copy local_data directory (origin/master)
run: cp -r local_data ..
- name: Checkout code (PR)
uses: actions/checkout@v4
with:
repository: ${{ github.event.pull_request.head.repo.full_name }}
ref: ${{ github.event.pull_request.head.ref }}
fetch-depth: 0
clean: false
- name: Build iggy-server (PR)
run: IGGY_CI_BUILD=true cargo build
- name: Restore local_data directory (PR)
run: cp -r ../local_data .
- uses: JarvusInnovations/background-action@v1
name: Run iggy-server in background (PR)
with:
run: |
target/debug/iggy-server &
wait-on: tcp:localhost:8090
wait-for: 1m
log-output: true
log-output-if: timeout
tail: true
- name: Run poll bench (PR)
timeout-minutes: 1
run: target/debug/iggy-bench --warmup-time 0 --verbose poll --message-batches 50 --messages-per-batch 100 tcp
- name: Stop iggy-server (PR)
timeout-minutes: 1
run: pkill iggy-server && while pgrep -l iggy-server; do sleep 1; done;
- name: Print server logs (PR)
run: cat local_data/logs/iggy*