-
Notifications
You must be signed in to change notification settings - Fork 176
136 lines (122 loc) · 4.18 KB
/
cicd-pull-request.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
name: CICD-PULL-REQUEST
on:
pull_request_review:
types: [submitted]
env:
GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
jobs:
trigger-mode:
name: trigger mode
if: github.event.review.state == 'approved'
runs-on: ubuntu-latest
outputs:
trigger-mode: ${{ steps.get_trigger_mode.outputs.trigger_mode }}
matrix: ${{ steps.get_trigger_mode.outputs.matrix }}
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.11.0
with:
all_but_latest: true
access_token: ${{ github.token }}
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get trigger mode
id: get_trigger_mode
run: |
TRIGGER_MODE=`bash .github/utils/utils.sh --type 6 \
--branch-name "${{ github.event.pull_request.head.ref }}" \
--base-commit "${{ github.event.pull_request.base.sha }}"`
echo $TRIGGER_MODE
echo trigger_mode=$TRIGGER_MODE >> $GITHUB_OUTPUT
TEST_PACKAGES=`bash .github/utils/utils.sh --type 16 \
--trigger-type "$TRIGGER_MODE" \
--test-pkgs "internal|apis|controllers|cmd" \
--test-check "mod-vendor|lint"`
echo "$TEST_PACKAGES"
echo "matrix={\"include\":[$TEST_PACKAGES]}" >> $GITHUB_OUTPUT
test-parallel:
name: make test
needs: trigger-mode
if: contains(needs.trigger-mode.outputs.trigger-mode, '[test]')
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix: ${{ fromJSON(needs.trigger-mode.outputs.matrix) }}
steps:
- uses: actions/checkout@v3
- name: install lib
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
libbtrfs-dev \
libdevmapper-dev
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: "${{ env.GO_VERSION }}"
- name: Install golangci-lint
if: matrix.ops == 'lint'
run: |
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.51.2
- name: make test ${{ matrix.ops }}
if: ${{ ! contains(matrix.ops, '/') }}
run: |
make ${{ matrix.ops }}
- name: make ${{ matrix.ops }}
if: ${{ contains(matrix.ops, '/') }}
run: |
make test TEST_PACKAGES=./${{ matrix.ops }}/...
make-test:
name: make test
needs: [ trigger-mode, test-parallel ]
if: ${{ contains(needs.trigger-mode.outputs.trigger-mode, '[test]') && always() }}
runs-on: ubuntu-latest
steps:
- name: make test check
run: |
if [[ "${{ needs.test-parallel.result }}" == "failure" || "${{ needs.test-parallel.result }}" == "cancelled" ]]; then
echo "make test fail"
exit 1
fi
check-image:
name: check image
needs: trigger-mode
if: contains(needs.trigger-mode.outputs.trigger-mode, '[docker]')
uses: apecloud/apecloud-cd/.github/workflows/release-image-check.yml@v0.1.2
with:
MAKE_OPS_PRE: "generate"
MAKE_OPS: "build-manager-image"
IMG: "apecloud/kubeblocks"
VERSION: "check"
GO_VERSION: "1.20"
BUILDX_PLATFORMS: "linux/amd64"
APECD_REF: "v0.1.2"
secrets: inherit
check-tools-image:
name: check image
needs: trigger-mode
if: contains(needs.trigger-mode.outputs.trigger-mode, '[docker]')
uses: apecloud/apecloud-cd/.github/workflows/release-image-check.yml@v0.1.2
with:
MAKE_OPS_PRE: "generate"
MAKE_OPS: "build-tools-image"
IMG: "apecloud/kubeblocks-tools"
VERSION: "check"
GO_VERSION: "1.20"
BUILDX_PLATFORMS: "linux/amd64"
APECD_REF: "v0.1.2"
secrets: inherit
check-helm:
name: check helm
needs: trigger-mode
if: contains(needs.trigger-mode.outputs.trigger-mode, '[deploy]')
uses: apecloud/apecloud-cd/.github/workflows/release-charts-check.yml@v0.1.4
with:
MAKE_OPS: "bump-chart-ver"
VERSION: "v0.4.0-check"
CHART_NAME: "kubeblocks"
CHART_DIR: "deploy/helm"
DEP_REPO: "delphic"
APECD_REF: "v0.1.4"
secrets: inherit