Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
288 commits
Select commit Hold shift + click to select a range
1f371f5
feat:流水线公共变量管理 #12010
yjieliang Aug 21, 2025
06b5238
feat:流水线公共变量管理 #12010
yjieliang Aug 22, 2025
e793971
feat:流水线公共变量管理 #12010
yjieliang Aug 22, 2025
ee2c096
feat:流水线公共变量管理 #12010
yjieliang Aug 22, 2025
c1c4f20
feat:流水线公共变量管理 #12010
yjieliang Aug 22, 2025
cdef257
feat:流水线公共变量管理 #12010
yjieliang Aug 22, 2025
f330e17
feat:流水线公共变量管理 #12010
yjieliang Aug 22, 2025
154b4d6
feat:流水线公共变量管理 #12010
yjieliang Aug 22, 2025
78c446d
feat:流水线公共变量管理 #12010
yjieliang Aug 22, 2025
f68dbf0
feat:流水线公共变量管理 #12010
yjieliang Aug 25, 2025
5879813
feat:流水线公共变量管理 #12010
yjieliang Aug 27, 2025
63abb9b
feat:流水线公共变量管理 #12010
yjieliang Aug 25, 2025
da9c51c
feat:流水线公共变量管理 #12010
yjieliang Aug 25, 2025
280b7f6
feat:流水线公共变量管理 #12010
yjieliang Aug 25, 2025
ae4d94c
feat:流水线公共变量管理 #12010
yjieliang Aug 26, 2025
cc98a64
feat:流水线公共变量管理 #12010
yjieliang Aug 26, 2025
ea2ee32
feat:流水线公共变量管理 #12010
yjieliang Aug 26, 2025
d07aa4a
feat:流水线公共变量管理 #12010
yjieliang Aug 26, 2025
1c62e2a
feat:流水线公共变量管理 #12010
yjieliang Aug 26, 2025
aa7a62d
feat:流水线公共变量管理 #12010
yjieliang Aug 27, 2025
5c508a1
Merge branch 'refs/heads/master' into feat_12010
yjieliang Aug 27, 2025
af45ad1
feat:流水线公共变量管理 #12010
yjieliang Sep 1, 2025
7822dc2
feat:流水线公共变量管理 #12010
yjieliang Sep 1, 2025
0dbb46e
feat:流水线公共变量管理 #12010
yjieliang Sep 3, 2025
161d315
feat:流水线公共变量管理 #12010
yjieliang Sep 3, 2025
73875e2
feat:流水线公共变量管理 #12010
yjieliang Sep 1, 2025
d0d93a3
feat:流水线公共变量管理 #12010
yjieliang Sep 1, 2025
9d0c975
feat:流水线公共变量管理 #12010
yjieliang Sep 1, 2025
8a9389c
feat:流水线公共变量管理 #12010
yjieliang Sep 1, 2025
e88e38d
feat:流水线公共变量管理 #12010
yjieliang Sep 1, 2025
145e4b1
feat:流水线公共变量管理 #12010
yjieliang Sep 1, 2025
a13d09c
feat:流水线公共变量管理 #12010
yjieliang Sep 1, 2025
15329ca
feat:流水线公共变量管理 #12010
yjieliang Sep 2, 2025
297d6ed
feat:流水线公共变量管理 #12010
yjieliang Sep 2, 2025
67cf3f2
feat:流水线公共变量管理 #12010
yjieliang Sep 4, 2025
da43e27
feat:流水线公共变量管理 #12010
yjieliang Sep 4, 2025
53ed060
feat:流水线公共变量管理 #12010
yjieliang Sep 4, 2025
18270b6
feat:流水线公共变量管理 #12010
yjieliang Sep 4, 2025
043185c
feat:流水线公共变量管理 #12010
yjieliang Sep 4, 2025
bce879a
feat:流水线公共变量管理 #12010
yjieliang Sep 8, 2025
f8da9c0
feat:流水线公共变量管理 #12010
yjieliang Sep 8, 2025
721880c
feat:流水线公共变量管理 #12010
yjieliang Sep 8, 2025
5fdbc97
feat:流水线公共变量管理 #12010
yjieliang Sep 8, 2025
9b0a07f
feat:流水线公共变量管理 #12010
yjieliang Sep 8, 2025
999bdb1
Merge branch 'refs/heads/master' into feat_12010
yjieliang Sep 8, 2025
26f6f67
feat:流水线公共变量管理 #12010
yjieliang Sep 8, 2025
87d8b6a
feat:流水线公共变量管理 #12010
yjieliang Sep 8, 2025
c419636
feat:流水线公共变量管理 #12010
yjieliang Sep 8, 2025
7f64a67
feat:流水线公共变量管理 #12010
yjieliang Sep 8, 2025
e3b9062
feat:流水线公共变量管理 #12010
yjieliang Sep 8, 2025
949a4cc
feat:流水线公共变量管理 #12010
yjieliang Sep 8, 2025
8a27286
feat:流水线公共变量管理 #12010
yjieliang Sep 9, 2025
cb0a281
feat:流水线公共变量管理 #12010
yjieliang Sep 10, 2025
fc3882a
feat:流水线公共变量管理 #12010
yjieliang Sep 10, 2025
ad4b545
feat:流水线公共变量管理 #12010
yjieliang Sep 11, 2025
209de98
Merge remote-tracking branch 'refs/remotes/carl-github/issue_12010_co…
yjieliang Sep 11, 2025
eaf90be
Merge branch 'master' into issue_12010_common_var
carlyin0801 Sep 11, 2025
0ab384d
feat:流水线公共变量管理 #12010
yjieliang Sep 11, 2025
5917b54
Merge remote-tracking branch 'refs/remotes/carl-github/issue_12010_co…
yjieliang Sep 11, 2025
5e9511f
Merge pull request #114 from yjieliang/feat_12010
carlyin0801 Sep 11, 2025
0189cad
feat:流水线公共变量管理 #12010
carlyin0801 Sep 18, 2025
a74903a
feat:流水线公共变量管理 #12010
carlyin0801 Sep 18, 2025
cf1012a
feat:流水线公共变量管理 #12010
carlyin0801 Oct 13, 2025
4890f47
feat:流水线公共变量管理 #12010
carlyin0801 Oct 13, 2025
8cb5164
feat:流水线公共变量管理 #12010
carlyin0801 Oct 15, 2025
2ee8eed
feat:流水线公共变量管理 #12010
carlyin0801 Oct 15, 2025
ef4ca86
feat:流水线公共变量管理 #12010
carlyin0801 Nov 4, 2025
efe46c4
feat:流水线公共变量管理 #12010
carlyin0801 Nov 4, 2025
e8fa5df
feat:流水线公共变量管理 #12010
carlyin0801 Nov 4, 2025
b63a6bf
feat:流水线公共变量管理 #12010
carlyin0801 Nov 4, 2025
8ef3df6
feat:流水线公共变量管理 #12010
carlyin0801 Nov 4, 2025
aab6521
feat:流水线公共变量管理 #12010
carlyin0801 Jul 21, 2025
ecbbc66
feat:流水线公共变量管理 #12010
carlyin0801 Jul 21, 2025
7aec47b
feat:流水线公共变量管理 #12010
carlyin0801 Jul 22, 2025
35edb5e
feat:流水线公共变量管理 #12010
yjieliang Aug 8, 2025
1f6ce9f
feat:流水线公共变量管理 #12010
yjieliang Nov 6, 2025
5381969
feat:流水线公共变量管理 #12010
yjieliang Nov 6, 2025
481eff7
feat:流水线公共变量管理 #12010
yjieliang Nov 6, 2025
5a42d4e
feat:流水线公共变量管理 #12010
carlyin0801 Sep 18, 2025
5e46b94
feat:流水线公共变量管理 #12010
carlyin0801 Sep 18, 2025
c04ab1d
feat:流水线公共变量管理 #12010
carlyin0801 Oct 13, 2025
9ee81e2
feat:流水线公共变量管理 #12010
carlyin0801 Oct 13, 2025
7ecfcf2
feat:流水线公共变量管理 #12010
yjieliang Nov 6, 2025
5308584
feat:流水线公共变量管理 #12010
yjieliang Oct 14, 2025
f5af6cb
feat:流水线公共变量管理 #12010
yjieliang Sep 19, 2025
a04f341
feat:流水线公共变量管理 #12010
yjieliang Oct 14, 2025
587bb58
feat:流水线公共变量管理 #12010
yjieliang Sep 22, 2025
a94666a
feat:流水线公共变量管理 #12010
yjieliang Sep 22, 2025
1f3e174
feat:流水线公共变量管理 #12010
yjieliang Sep 22, 2025
dc7f585
feat:流水线公共变量管理 #12010
yjieliang Sep 23, 2025
cda9a20
feat:流水线公共变量管理 #12010
yjieliang Sep 23, 2025
85c7ff7
feat:流水线公共变量管理 #12010
yjieliang Sep 25, 2025
79fd150
feat:流水线公共变量管理 #12010
yjieliang Sep 25, 2025
c142788
feat:流水线公共变量管理 #12010
yjieliang Sep 25, 2025
4a2db19
feat:流水线公共变量管理 #12010
yjieliang Sep 26, 2025
af5cfd3
feat:流水线公共变量管理 #12010
yjieliang Sep 28, 2025
cfe635f
feat:流水线公共变量管理 #12010
yjieliang Oct 14, 2025
7f0d6a6
feat:流水线公共变量管理 #12010
yjieliang Nov 6, 2025
e43b926
feat:流水线公共变量管理 #12010
carlyin0801 Oct 15, 2025
4a25628
feat:流水线公共变量管理 #12010
carlyin0801 Oct 15, 2025
af8974e
feat:流水线公共变量管理 #12010
yjieliang Nov 6, 2025
e76d1fb
feat:流水线公共变量管理 #12010
yjieliang Oct 30, 2025
86b7c97
feat:流水线公共变量管理 #12010
yjieliang Oct 30, 2025
0214352
feat:流水线公共变量管理 #12010
yjieliang Nov 3, 2025
0c37b04
feat:流水线公共变量管理 #12010
carlyin0801 Nov 4, 2025
a8e68ae
feat:流水线公共变量管理 #12010
carlyin0801 Nov 4, 2025
dc6e3ea
feat:流水线公共变量管理 #12010
carlyin0801 Nov 4, 2025
0afe697
feat:流水线公共变量管理 #12010
carlyin0801 Nov 4, 2025
61fd58a
feat:流水线公共变量管理 #12010
carlyin0801 Nov 4, 2025
eadd3a2
feat:流水线公共变量管理 #12010
yjieliang Nov 6, 2025
84fa85f
feat:流水线公共变量管理 #12010
yjieliang Nov 6, 2025
cb11002
feat:流水线公共变量管理 #12010
yjieliang Nov 6, 2025
af05e9c
feat:流水线公共变量管理 #12010
yjieliang Nov 6, 2025
e6fd75a
feat:流水线公共变量管理 #12010
yjieliang Nov 6, 2025
ac9f395
feat:流水线公共变量管理 #12010
yjieliang Nov 7, 2025
cfc39fd
feat:流水线公共变量管理 #12010
yjieliang Nov 7, 2025
9baf196
feat:流水线公共变量管理 #12010
yjieliang Nov 7, 2025
45a832a
feat:流水线公共变量管理 #12010
yjieliang Nov 7, 2025
135109b
feat:流水线公共变量管理 #12010
yjieliang Nov 7, 2025
e818355
feat:流水线公共变量管理 #12010
yjieliang Nov 7, 2025
89e2c5d
feat:流水线公共变量管理 #12010
yjieliang Nov 7, 2025
eacb34c
feat:流水线公共变量管理 #12010
yjieliang Nov 7, 2025
5e695d9
feat:流水线公共变量管理 #12010
yjieliang Nov 7, 2025
0cd28db
feat:流水线公共变量管理 #12010
yjieliang Nov 10, 2025
7f6a605
feat:流水线公共变量管理 #12010
yjieliang Nov 10, 2025
ff3007b
feat:流水线公共变量管理 #12010
yjieliang Nov 10, 2025
92e737d
feat:流水线公共变量管理 #12010
yjieliang Nov 10, 2025
41a8848
feat:流水线公共变量管理 #12010
yjieliang Nov 10, 2025
834c74c
feat:流水线公共变量管理 #12010
yjieliang Nov 10, 2025
16ec51f
feat:流水线公共变量管理 #12010
yjieliang Nov 11, 2025
60bccb9
feat:流水线公共变量管理 #12010
yjieliang Nov 11, 2025
467c88a
feat:流水线公共变量管理 #12010
yjieliang Nov 11, 2025
3019c2b
feat:流水线公共变量管理 #12010
yjieliang Nov 12, 2025
0097690
feat:流水线公共变量管理 #12010
yjieliang Nov 12, 2025
bcb80aa
feat:流水线公共变量管理 #12010
yjieliang Nov 13, 2025
2288273
feat:流水线公共变量管理 #12010
yjieliang Nov 13, 2025
e19d188
feat:流水线公共变量管理 #12010
yjieliang Nov 13, 2025
d4a3858
feat:流水线公共变量管理 #12010
yjieliang Nov 14, 2025
af23444
feat:流水线公共变量管理 #12010
yjieliang Nov 14, 2025
79ae1cd
feat:流水线公共变量管理 #12010
yjieliang Nov 18, 2025
0b15349
feat:流水线公共变量管理 #12010
yjieliang Nov 18, 2025
d39ac22
feat:流水线公共变量管理 #12010
yjieliang Nov 19, 2025
28a9184
feat:流水线公共变量管理 #12010
yjieliang Nov 19, 2025
3fa7aa6
feat:流水线公共变量管理 #12010
yjieliang Nov 19, 2025
d5e49cf
feat:流水线公共变量管理 #12010
yjieliang Nov 20, 2025
dac76e9
feat:流水线公共变量管理 #12010
yjieliang Nov 20, 2025
b20db00
feat:流水线公共变量管理 #12010
yjieliang Nov 21, 2025
a75990f
feat:流水线公共变量管理 #12010
yjieliang Nov 24, 2025
8f90c89
feat:流水线公共变量管理 #12010
yjieliang Nov 24, 2025
c1f577b
feat:流水线公共变量管理 #12010
yjieliang Nov 25, 2025
805b3c1
feat:流水线公共变量管理 #12010
yjieliang Nov 25, 2025
fcc7936
feat:流水线公共变量管理 #12010
yjieliang Nov 25, 2025
9a1d8ac
feat:流水线公共变量管理 #12010
yjieliang Nov 25, 2025
a7019d0
feat:流水线公共变量管理 #12010
yjieliang Nov 26, 2025
eab07d9
feat:流水线公共变量管理 #12010
yjieliang Nov 26, 2025
8d071fc
feat:流水线公共变量管理 #12010
yjieliang Nov 27, 2025
5cc8235
feat:流水线公共变量管理 #12010
yjieliang Nov 27, 2025
7e72c40
feat:流水线公共变量管理 #12010
yjieliang Nov 28, 2025
2dc0db9
feat:流水线公共变量管理 #12010
yjieliang Nov 28, 2025
cd999d8
feat:流水线公共变量管理 #12010
yjieliang Dec 1, 2025
9b3b210
feat:流水线公共变量管理 #12010
yjieliang Dec 1, 2025
8ba4c95
feat:流水线公共变量管理 #12010
yjieliang Dec 1, 2025
c8c1b06
feat:流水线公共变量管理 #12010
yjieliang Dec 2, 2025
275867b
feat:流水线公共变量管理 #12010
yjieliang Dec 2, 2025
417885a
feat:流水线公共变量管理 #12010
yjieliang Dec 4, 2025
916911e
feat:流水线公共变量管理 #12010
yjieliang Dec 4, 2025
7da9e01
feat:流水线公共变量管理 #12010
yjieliang Dec 4, 2025
bb63ae3
feat:流水线公共变量管理 #12010
yjieliang Dec 8, 2025
e10e8ab
feat:流水线公共变量管理 #12010
yjieliang Dec 10, 2025
3eae83b
feat:流水线公共变量管理 #12010
yjieliang Dec 15, 2025
fe15f5f
feat:流水线公共变量管理 #12010
yjieliang Dec 16, 2025
146c751
feat:流水线公共变量管理 #12010
yjieliang Dec 18, 2025
a7ddcc6
feat:流水线公共变量管理 #12010
yjieliang Dec 18, 2025
97483e6
feat:流水线公共变量管理 #12010
yjieliang Dec 19, 2025
5f21d83
feat:流水线公共变量管理 #12010
yjieliang Dec 22, 2025
c98b456
feat:流水线公共变量管理 #12010
yjieliang Dec 22, 2025
5ee1014
feat:流水线公共变量管理 #12010
yjieliang Dec 22, 2025
19f8ab9
feat:流水线公共变量管理 #12010
yjieliang Dec 23, 2025
6f22cb6
feat:流水线公共变量管理 #12010
yjieliang Dec 24, 2025
923bcd4
feat:流水线公共变量管理 #12010
yjieliang Dec 24, 2025
fd55719
feat:流水线公共变量管理 #12010
yjieliang Dec 25, 2025
3e4a62b
feat:流水线公共变量管理 #12010
yjieliang Dec 25, 2025
8df9f5e
feat:流水线公共变量管理 #12010
yjieliang Dec 29, 2025
a35fb03
feat:流水线公共变量管理 #12010
yjieliang Dec 30, 2025
9167e76
feat:流水线公共变量管理 #12010
yjieliang Dec 30, 2025
640ab4b
feat:流水线公共变量管理 #12010
yjieliang Dec 30, 2025
4127c7d
feat:流水线公共变量管理 #12010
yjieliang Dec 30, 2025
c756c60
feat:流水线公共变量管理 #12010
yjieliang Dec 30, 2025
2df95a5
feat:流水线公共变量管理 #12010
yjieliang Jan 4, 2026
fa9f27c
Merge remote-tracking branch 'refs/remotes/origin/master' into feat-1…
yjieliang Jan 15, 2026
d6f9f94
feat:流水线公共变量管理 #12010
yjieliang Jan 16, 2026
00f853a
feat:流水线公共变量管理 #12010
yjieliang Jan 16, 2026
f294b65
feat:流水线公共变量管理 #12010
yjieliang Jan 16, 2026
a0cd784
feat:流水线公共变量管理 #12010
yjieliang Jan 16, 2026
a28ace3
feat:流水线公共变量管理 #12010
yjieliang Jan 19, 2026
75b131b
feat:流水线公共变量管理 #12010
yjieliang Jan 19, 2026
8679c76
feat:流水线公共变量管理 #12010
yjieliang Jan 20, 2026
8693e63
feat:流水线公共变量管理 #12010
yjieliang Jan 20, 2026
4fb1c41
feat:流水线公共变量管理 #12010
yjieliang Jan 20, 2026
38bc256
feat:流水线公共变量管理 #12010
yjieliang Jan 22, 2026
915e2be
feat:流水线公共变量管理 #12010
yjieliang Jan 22, 2026
d5f9df6
feat:流水线公共变量管理 #12010
yjieliang Jan 22, 2026
1601e09
feat:流水线公共变量管理 #12010
yjieliang Jan 22, 2026
b439ae6
feat:流水线公共变量管理 #12010
yjieliang Jan 22, 2026
87236f6
feat:流水线公共变量管理 #12010
yjieliang Jan 22, 2026
2dc2757
feat:流水线公共变量管理 #12010
yjieliang Jan 22, 2026
89227ae
Merge remote-tracking branch 'refs/remotes/origin/master' into feat-1…
yjieliang Jan 22, 2026
57a38d3
feat:流水线公共变量管理 #12010
yjieliang Jan 22, 2026
72a262b
feat:流水线公共变量管理 #12010
yjieliang Jan 22, 2026
5fc6694
feat:流水线公共变量管理 #12010
yjieliang Jan 22, 2026
a3b2bc9
feat:流水线公共变量管理 #12010
yjieliang Jan 24, 2026
b78e1aa
Merge remote-tracking branch 'refs/remotes/origin/master' into feat-1…
yjieliang Jan 24, 2026
4ba719e
feat:流水线公共变量管理 #12010
yjieliang Jan 26, 2026
f5aa05a
feat:流水线公共变量管理 #12010
yjieliang Jan 26, 2026
1a98949
feat:流水线公共变量管理 #12010
yjieliang Jan 26, 2026
684e304
feat:流水线公共变量管理 #12010
yjieliang Jan 26, 2026
6cbf550
feat:流水线公共变量管理 #12010
yjieliang Jan 26, 2026
088a2af
feat:流水线公共变量管理 #12010
yjieliang Jan 26, 2026
14b8b95
feat:流水线公共变量管理 #12010
yjieliang Jan 26, 2026
cbfee60
feat:流水线公共变量管理 #12010
yjieliang Jan 26, 2026
0adbb56
feat:流水线公共变量管理 #12010
yjieliang Jan 26, 2026
66ff068
Merge remote-tracking branch 'refs/remotes/carlyin-bkci/issue_12010_c…
yjieliang Jan 26, 2026
9ceda42
Merge pull request #116 from yjieliang/feat-12010
carlyin0801 Jan 26, 2026
bc499b1
feat:流水线公共变量管理 #12010
yjieliang Jan 26, 2026
66a7844
feat:流水线公共变量管理 #12010
yjieliang Jan 26, 2026
d5ffb83
feat:流水线公共变量管理 #12010
carlyin0801 Jan 27, 2026
fd7ce13
feat:流水线公共变量管理 #12010
carlyin0801 Jan 27, 2026
989d496
feat:流水线公共变量管理 #12010
carlyin0801 Jan 27, 2026
99aed6e
feat:流水线公共变量管理 #12010
carlyin0801 Jan 27, 2026
06f894d
Merge remote-tracking branch 'refs/remotes/carlyin-bkci/issue_12010_c…
yjieliang Jan 27, 2026
d177067
feat:流水线公共变量管理 #12010
yjieliang Jan 28, 2026
c938621
Merge remote-tracking branch 'refs/remotes/origin/master' into feat-1…
yjieliang Jan 28, 2026
efdd31d
feat:流水线公共变量管理 #12010
yjieliang Jan 28, 2026
9be2c5a
feat:流水线公共变量管理 #12010
yjieliang Jan 28, 2026
8817236
feat:流水线公共变量管理 #12010
yjieliang Jan 28, 2026
d78905e
feat:流水线公共变量管理 #12010
yjieliang Jan 28, 2026
4290f45
feat:流水线公共变量管理 #12010
yjieliang Jan 29, 2026
639f765
feat:流水线公共变量管理 #12010
yjieliang Jan 29, 2026
e769e67
Merge remote-tracking branch 'refs/remotes/origin/master' into feat-1…
yjieliang Jan 29, 2026
04f3c1a
feat:流水线公共变量管理 #12010
yjieliang Jan 29, 2026
2cde367
feat:流水线公共变量管理 #12010
yjieliang Jan 30, 2026
78b8c4a
feat:流水线公共变量管理 #12010
yjieliang Jan 30, 2026
a8c66b5
feat:流水线公共变量管理 #12010
yjieliang Jan 30, 2026
3f32d55
feat:流水线公共变量管理 #12010
yjieliang Feb 2, 2026
6c87b04
feat:流水线公共变量管理 #12010
yjieliang Feb 2, 2026
e36a6e5
feat:流水线公共变量管理 #12010
yjieliang Feb 2, 2026
29d943a
feat:流水线公共变量管理 #12010
yjieliang Feb 2, 2026
067449b
feat:流水线公共变量管理 #12010
yjieliang Feb 4, 2026
44f43df
Merge remote-tracking branch 'refs/remotes/origin/master' into feat-1…
yjieliang Feb 4, 2026
095d33a
feat:流水线公共变量管理 #12010
yjieliang Feb 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -101,4 +101,12 @@ object ActionId {
// 自定义操作
const val PROJECT_USER_VERIFY = "project_user_verify"
const val WATER_MARK_GET = "water_mark_get"

// 公共变量组
const val PUBLIC_VARIABLE_CREATE = "public_variable_create"
const val PUBLIC_VARIABLE_EDIT = "public_variable_edit"
const val PUBLIC_VARIABLE_LIST = "public_variable_list"
const val PUBLIC_VARIABLE_VIEW = "public_variable_view"
const val PUBLIC_VARIABLE_DELETE = "public_variable_delete"
const val PUBLIC_VARIABLE_USE = "public_variable_use"
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ enum class AuthResourceType(val value: String) {
PIPELINE_GROUP("pipeline_group"), // 流水线组类型
PIPELINE_TEMPLATE("pipeline_template"), // 流水线模板类型

PUBLIC_VAR_GROUP("public_variable"), // 公共变量组

ARTIFACTORY_CUSTOM_DIR("custom_dir"), // 版本仓库自定义目录

TICKET_CREDENTIAL("credential"), // 凭证服务凭据
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available.
*
* Copyright (C) 2019 Tencent. All rights reserved.
*
* BK-CI 蓝鲸持续集成平台 is licensed under the MIT license.
*
* A copy of the MIT License is included in this file.
*
*
* Terms of the MIT License:
* ---------------------------------------------------
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
* documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of
* the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
* LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
* NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/

package com.tencent.devops.common.auth.code

/**
* 公共变量组ServiceCode
*/
interface PublicVarGroupAuthServiceCode : AuthServiceCode
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ import com.tencent.devops.common.auth.rbac.code.RbacExperienceAuthServiceCode
import com.tencent.devops.common.auth.rbac.code.RbacPipelineAuthServiceCode
import com.tencent.devops.common.auth.rbac.code.RbacPipelineGroupAuthServiceCode
import com.tencent.devops.common.auth.rbac.code.RbacProjectAuthServiceCode
import com.tencent.devops.common.auth.rbac.code.RbacPublicVarGroupAuthServiceCode
import com.tencent.devops.common.auth.rbac.code.RbacQualityAuthServiceCode
import com.tencent.devops.common.auth.rbac.code.RbacRepoAuthServiceCode
import com.tencent.devops.common.auth.rbac.code.RbacTicketAuthServiceCode
Expand Down Expand Up @@ -159,4 +160,8 @@ class RbacAuthAutoConfiguration {
@Bean
@Primary
fun experienceAuthServiceCode() = RbacExperienceAuthServiceCode()

@Bean
@Primary
fun publicVarGroupAuthServiceCode() = RbacPublicVarGroupAuthServiceCode()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.tencent.devops.common.auth.rbac.code

import com.tencent.devops.common.auth.code.PublicVarGroupAuthServiceCode

class RbacPublicVarGroupAuthServiceCode : PublicVarGroupAuthServiceCode {
override fun id() = RbacAuthServiceCode.PIPELINE.value
}
Original file line number Diff line number Diff line change
Expand Up @@ -242,4 +242,7 @@ object StreamBinding {
const val PIPELINE_YAML_FILE_SCHEDULER = "pipeline.yaml.file.scheduler"
// yaml文件执行事件
const val PIPELINE_YAML_FILE_EXECUTOR = "pipeline.yaml.file.executor"

// 变量引用事件监听器
const val MODEL_VAR_REFERENCE_FANOUT = "model.var.reference.fanout"
}
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ class ModelCreate @Autowired constructor(
startEpoch = null,
systemElapsed = null,
elementElapsed = null,
params = pipelineParams
params = pipelineParams.toMutableList()
)

// 蓝盾引擎会将stageId从1开始顺序强制重写,因此在生成model时保持一致
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import com.tencent.devops.common.pipeline.container.Stage
import com.tencent.devops.common.pipeline.container.TriggerContainer
import com.tencent.devops.common.pipeline.dialect.PipelineDialectType
import com.tencent.devops.common.pipeline.enums.TemplateRefType
import com.tencent.devops.common.pipeline.pojo.PublicVarGroupRef
import com.tencent.devops.common.pipeline.pojo.TemplateInstanceField
import com.tencent.devops.common.pipeline.pojo.TemplateInstanceRecommendedVersion
import com.tencent.devops.common.pipeline.pojo.TemplateInstanceTriggerConfig
Expand Down Expand Up @@ -64,14 +65,16 @@ import com.tencent.devops.process.yaml.v3.models.Notices
import com.tencent.devops.process.yaml.v3.models.PacNotices
import com.tencent.devops.process.yaml.v3.models.PreExtends
import com.tencent.devops.process.yaml.v3.models.PreTemplateScriptBuildYamlV3Parser
import com.tencent.devops.process.yaml.v3.models.VariableTemplate
import com.tencent.devops.process.yaml.v3.models.on.IPreTriggerOn
import com.tencent.devops.process.yaml.v3.models.on.PreTriggerOn
import com.tencent.devops.process.yaml.v3.models.on.PreTriggerOnV3
import com.tencent.devops.process.yaml.v3.models.stage.PreStage
import com.tencent.devops.process.yaml.v3.parsers.template.Constants.TEMPLATE_KEY
import java.util.concurrent.atomic.AtomicInteger
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Component
import java.util.concurrent.atomic.AtomicInteger

@Component
@Suppress("ComplexMethod")
Expand Down Expand Up @@ -180,6 +183,9 @@ class ModelTransfer @Autowired constructor(
pipelineCreator = yamlInput.pipelineInfo?.creator ?: yamlInput.userId
)
model.latestVersion = yamlInput.pipelineInfo?.version ?: 0
model.publicVarGroups = yamlInput.yaml.formatVariableTemplates().map {
PublicVarGroupRef(groupName = it.name, versionName = it.version)
}

// 蓝盾引擎会将stageId从1开始顺序强制重写,因此在生成model时保持一致
val stageIndex = AtomicInteger(0)
Expand Down Expand Up @@ -323,7 +329,16 @@ class ModelTransfer @Autowired constructor(
}
yaml.notices = makeNoticesV3(modelInput)
yaml.stages = makeStages(modelInput).ifEmpty { null }?.let { TransferMapper.anyTo(it) }
yaml.variables = variableTransfer.makeVariableFromModel(getTriggerContainer(modelInput))
val variables = mutableMapOf<String, Any>()
modelInput.model.handlePublicVarInfo()
val publicVarGroups = modelInput.model.publicVarGroups
if (!publicVarGroups.isNullOrEmpty()) {
variables[TEMPLATE_KEY] = publicVarGroups.map {
VariableTemplate(it.groupName, it.versionName)
}
}
variableTransfer.makeVariableFromModel(modelInput.model.getTriggerContainer())?.let { variables.putAll(it) }
yaml.variables = if (variables.isEmpty()) null else variables
yaml.extends = makeExtend(modelInput.model)
yaml.finally = makeFinally(modelInput)?.ifEmpty { null }
yaml.concurrency = makeConcurrency(modelInput)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,6 @@ class StageTransfer @Autowired(required = false) constructor(
// 第一个stage,触发类
val triggerElementList = mutableListOf<Element>()
elementTransfer.yaml2Triggers(yamlInput, triggerElementList)

val triggerContainer = TriggerContainer(
id = "0",
name = I18nUtil.getCodeLanMessage(CommonMessageCode.BK_BUILD_TRIGGER),
Expand All @@ -117,7 +116,7 @@ class StageTransfer @Autowired(required = false) constructor(
startEpoch = null,
systemElapsed = null,
elementElapsed = null,
params = variableTransfer.makeVariableFromYaml(makeVariables(yamlInput.yaml))
params = variableTransfer.makeVariableFromYaml(makeVariables(yamlInput.yaml)).toMutableList()
)
with(yamlInput.yaml.recommendedVersion) {
if (this != null && this.enabled) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import com.tencent.devops.common.pipeline.container.Stage
import com.tencent.devops.common.pipeline.container.TriggerContainer
import com.tencent.devops.common.pipeline.dialect.PipelineDialectType
import com.tencent.devops.common.pipeline.pojo.setting.BuildCancelPolicy
import com.tencent.devops.common.pipeline.pojo.PublicVarGroupRef
import com.tencent.devops.common.pipeline.pojo.setting.PipelineRunLockType
import com.tencent.devops.common.pipeline.pojo.setting.PipelineSetting
import com.tencent.devops.common.pipeline.template.ITemplateModel
Expand All @@ -48,10 +49,12 @@ import com.tencent.devops.process.yaml.transfer.pojo.YamlTransferInput
import com.tencent.devops.process.yaml.v3.enums.SyntaxDialectType
import com.tencent.devops.process.yaml.v3.models.IPreTemplateScriptBuildYamlParser
import com.tencent.devops.process.yaml.v3.models.PreTemplateScriptBuildYamlV3Parser
import com.tencent.devops.process.yaml.v3.models.VariableTemplate
import com.tencent.devops.process.yaml.v3.models.on.IPreTriggerOn
import com.tencent.devops.process.yaml.v3.models.on.PreTriggerOn
import com.tencent.devops.process.yaml.v3.models.on.PreTriggerOnV3
import com.tencent.devops.process.yaml.v3.models.stage.PreStage
import com.tencent.devops.process.yaml.v3.parsers.template.Constants.TEMPLATE_KEY
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Component
Expand Down Expand Up @@ -180,7 +183,21 @@ class TemplateModelTransfer @Autowired constructor(
stages.add(ymlStage)
}
baseYaml.stages = stages.ifEmpty { null }?.let { TransferMapper.anyTo(stages) }
baseYaml.variables = model.triggerContainer()?.let { variableTransfer.makeVariableFromModel(it) }
baseYaml.variables = model.triggerContainer()?.let { triggerContainer ->
// 刷新公共变量配置信息
modelInput.model.handlePublicVarInfo()
val variables = mutableMapOf<String, Any>()
val publicVarGroupNames = modelInput.model.getPublicVarGroups()
if (!publicVarGroupNames.isNullOrEmpty()) {
variables[TEMPLATE_KEY] = publicVarGroupNames.map {
VariableTemplate(it.groupName, it.versionName)
}
}
variableTransfer.makeVariableFromModel(triggerContainer)?.let { modelVariables ->
variables.putAll(modelVariables)
}
variables.ifEmpty { null }
}
val lastStage = model.stages()?.last()
val finally = if (lastStage?.finally == true) {
modelInput.aspectWrapper.setModelStage4Model(lastStage, PipelineTransferAspectWrapper.AspectType.BEFORE)
Expand Down Expand Up @@ -221,6 +238,21 @@ class TemplateModelTransfer @Autowired constructor(
else -> null
}

private fun ITemplateModel.handlePublicVarInfo() = when (this) {
is Model -> handlePublicVarInfo()
is StageTemplateModel -> null
is JobTemplateModel -> null
is StepTemplateModel -> null
else -> null
}

private fun ITemplateModel.getPublicVarGroups(): List<PublicVarGroupRef>? {
if (this !is Model) {
return null
}
return publicVarGroups
}

private fun ITemplateModel.stages() = when (this) {
is Model -> stages
is StageTemplateModel -> stages
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,17 @@ class VariableTransfer {
listOf(MAJORVERSION, "MajorVersion", MINORVERSION, "MinorVersion", FIXVERSION, "FixVersion")
}

fun makeVariableFromModel(triggerContainer: TriggerContainer?): Map<String, Variable>? {
fun makeVariableFromModel(triggerContainer: TriggerContainer?): Map<String, Any>? {
if (triggerContainer != null) {
return makeVariableFromBuildParams(triggerContainer.params, true)
}
return null
}

fun makeVariableFromBuildParams(params: List<BuildFormProperty>, skipPublicVar: Boolean): Map<String, Variable>? {
val result = mutableMapOf<String, Variable>()
triggerContainer?.params?.forEach {
if (it.id in ignoredVariable) return@forEach
params.forEach {
if (it.id in ignoredVariable || (skipPublicVar && it.varGroupName != null)) return@forEach
var props = when {
// 字符串
it.type == BuildFormPropertyType.STRING -> VariableProps(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/*
* Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available.
*
* Copyright (C) 2019 Tencent. All rights reserved.
*
* BK-CI 蓝鲸持续集成平台 is licensed under the MIT license.
*
* A copy of the MIT License is included in this file.
*
*
* Terms of the MIT License:
* ---------------------------------------------------
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
* documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of
* the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
* LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
* NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

package com.tencent.devops.process.yaml.transfer.pojo

import com.tencent.devops.process.yaml.v3.models.Variable
import io.swagger.v3.oas.annotations.media.Schema

@Schema(title = "公共变量组yaml解析")
data class PublicVarGroupYamlParser(
@get:Schema(title = "yaml版本")
val version: String,
@get:Schema(title = "变量组名称")
val name: String,
@get:Schema(title = "变量组描述")
val desc: String? = null,
@get:Schema(title = "变量列表")
val variables: Map<String, Variable>
)
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ import com.fasterxml.jackson.dataformat.yaml.YAMLFactory
import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator
import com.fasterxml.jackson.module.kotlin.registerKotlinModule
import com.tencent.devops.process.yaml.v2.models.YAME_META_DATA_JSON_FILTER
import jakarta.ws.rs.core.MediaType
import jakarta.ws.rs.core.Response
import jakarta.ws.rs.core.StreamingOutput
import java.net.URLEncoder

object YamlCommonUtils {
private val objectMapper = ObjectMapper(
Expand All @@ -55,4 +59,18 @@ object YamlCommonUtils {
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL)
return objectMapper.writeValueAsString(bean)!!
}

fun exportToFile(yaml: String, fileName: String): Response {
// 流式下载
val fileStream = StreamingOutput { output ->
output.write(yaml.toByteArray(Charsets.UTF_8))
output.flush()
}
val encodedFileName = URLEncoder.encode("$fileName.yml", "UTF-8")
return Response
.ok(fileStream, MediaType.APPLICATION_OCTET_STREAM_TYPE)
.header("content-disposition", "attachment; filename = $encodedFileName")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Content-Type不需要指定吗?

.header("Cache-Control", "no-cache")
.build()
}
}
Loading