You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678
  1. ---
  2. kind: pipeline
  3. type: docker
  4. name: compliance
  5. platform:
  6. os: linux
  7. arch: amd64
  8. trigger:
  9. event:
  10. - push
  11. - tag
  12. - pull_request
  13. paths:
  14. exclude:
  15. - docs/**
  16. volumes:
  17. - name: deps
  18. temp: {}
  19. steps:
  20. - name: deps-frontend
  21. image: node:18
  22. pull: always
  23. commands:
  24. - make deps-frontend
  25. - name: deps-backend
  26. image: golang:1.20
  27. pull: always
  28. commands:
  29. - make deps-backend
  30. volumes:
  31. - name: deps
  32. path: /go
  33. - name: lint-frontend
  34. image: node:18
  35. commands:
  36. - make lint-frontend
  37. depends_on: [deps-frontend]
  38. - name: lint-backend
  39. image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
  40. pull: always
  41. commands:
  42. - make lint-backend
  43. environment:
  44. GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
  45. GOSUMDB: sum.golang.org
  46. TAGS: bindata sqlite sqlite_unlock_notify
  47. depends_on: [deps-backend]
  48. volumes:
  49. - name: deps
  50. path: /go
  51. - name: lint-backend-windows
  52. image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
  53. commands:
  54. - make golangci-lint-windows vet
  55. environment:
  56. GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
  57. GOSUMDB: sum.golang.org
  58. TAGS: bindata sqlite sqlite_unlock_notify
  59. GOOS: windows
  60. GOARCH: amd64
  61. depends_on: [deps-backend]
  62. volumes:
  63. - name: deps
  64. path: /go
  65. - name: lint-backend-gogit
  66. image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
  67. commands:
  68. - make lint-backend
  69. environment:
  70. GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
  71. GOSUMDB: sum.golang.org
  72. TAGS: bindata gogit sqlite sqlite_unlock_notify
  73. depends_on: [deps-backend]
  74. volumes:
  75. - name: deps
  76. path: /go
  77. - name: checks-frontend
  78. image: node:18
  79. commands:
  80. - make checks-frontend
  81. depends_on: [deps-frontend]
  82. - name: checks-backend
  83. image: golang:1.20
  84. commands:
  85. - make --always-make checks-backend # ensure the 'go-licenses' make target runs
  86. depends_on: [deps-backend]
  87. volumes:
  88. - name: deps
  89. path: /go
  90. - name: test-frontend
  91. image: node:18
  92. commands:
  93. - make test-frontend
  94. depends_on: [lint-frontend]
  95. - name: build-frontend
  96. image: node:18
  97. commands:
  98. - make frontend
  99. depends_on: [deps-frontend]
  100. - name: build-backend-no-gcc
  101. image: golang:1.19 # this step is kept as the lowest version of golang that we support
  102. pull: always
  103. environment:
  104. GOPROXY: https://goproxy.io
  105. commands:
  106. - go build -o gitea_no_gcc # test if build succeeds without the sqlite tag
  107. depends_on: [deps-backend, checks-backend]
  108. volumes:
  109. - name: deps
  110. path: /go
  111. - name: build-backend-arm64
  112. image: golang:1.20
  113. environment:
  114. GOPROXY: https://goproxy.io
  115. GOOS: linux
  116. GOARCH: arm64
  117. TAGS: bindata gogit
  118. commands:
  119. - make backend # test cross compile
  120. - rm ./gitea # clean
  121. depends_on: [deps-backend, checks-backend]
  122. volumes:
  123. - name: deps
  124. path: /go
  125. - name: build-backend-windows
  126. image: golang:1.20
  127. environment:
  128. GOPROXY: https://goproxy.io
  129. GOOS: windows
  130. GOARCH: amd64
  131. TAGS: bindata gogit
  132. commands:
  133. - go build -o gitea_windows
  134. depends_on: [deps-backend, checks-backend]
  135. volumes:
  136. - name: deps
  137. path: /go
  138. - name: build-backend-386
  139. image: golang:1.20
  140. environment:
  141. GOPROXY: https://goproxy.io
  142. GOOS: linux
  143. GOARCH: 386
  144. commands:
  145. - go build -o gitea_linux_386 # test if compatible with 32 bit
  146. depends_on: [deps-backend, checks-backend]
  147. volumes:
  148. - name: deps
  149. path: /go
  150. ---
  151. kind: pipeline
  152. type: docker
  153. name: testing-amd64
  154. platform:
  155. os: linux
  156. arch: amd64
  157. depends_on:
  158. - compliance
  159. trigger:
  160. event:
  161. - push
  162. - tag
  163. - pull_request
  164. paths:
  165. exclude:
  166. - docs/**
  167. volumes:
  168. - name: deps
  169. temp: {}
  170. services:
  171. - name: mysql
  172. image: mysql:5.7
  173. pull: always
  174. environment:
  175. MYSQL_ALLOW_EMPTY_PASSWORD: yes
  176. MYSQL_DATABASE: test
  177. - name: mysql8
  178. image: mysql:8
  179. pull: always
  180. environment:
  181. MYSQL_ALLOW_EMPTY_PASSWORD: yes
  182. MYSQL_DATABASE: testgitea
  183. - name: mssql
  184. image: mcr.microsoft.com/mssql/server:latest
  185. pull: always
  186. environment:
  187. ACCEPT_EULA: Y
  188. MSSQL_PID: Standard
  189. SA_PASSWORD: MwantsaSecurePassword1
  190. - name: ldap
  191. image: gitea/test-openldap:latest
  192. pull: always
  193. - name: elasticsearch
  194. image: elasticsearch:7.5.0
  195. pull: always
  196. environment:
  197. discovery.type: single-node
  198. - name: minio
  199. image: minio/minio:RELEASE.2021-03-12T00-00-47Z
  200. pull: always
  201. commands:
  202. - minio server /data
  203. environment:
  204. MINIO_ACCESS_KEY: 123456
  205. MINIO_SECRET_KEY: 12345678
  206. - name: smtpimap
  207. image: tabascoterrier/docker-imap-devel:latest
  208. pull: always
  209. steps:
  210. - name: fetch-tags
  211. image: docker:git
  212. pull: always
  213. commands:
  214. - git config --global --add safe.directory /drone/src
  215. - git fetch --tags --force
  216. when:
  217. event:
  218. exclude:
  219. - pull_request
  220. - name: deps-backend
  221. image: golang:1.20
  222. pull: always
  223. commands:
  224. - make deps-backend
  225. volumes:
  226. - name: deps
  227. path: /go
  228. - name: tag-pre-condition
  229. image: drone/git
  230. pull: always
  231. commands:
  232. - git update-ref refs/heads/tag_test ${DRONE_COMMIT_SHA}
  233. - name: prepare-test-env
  234. image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
  235. pull: always
  236. commands:
  237. - ./build/test-env-prepare.sh
  238. - name: build
  239. image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
  240. user: gitea
  241. commands:
  242. - ./build/test-env-check.sh
  243. - make backend
  244. environment:
  245. GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
  246. GOSUMDB: sum.golang.org
  247. TAGS: bindata sqlite sqlite_unlock_notify
  248. depends_on: [deps-backend, prepare-test-env]
  249. volumes:
  250. - name: deps
  251. path: /go
  252. - name: unit-test
  253. image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
  254. user: gitea
  255. commands:
  256. - make unit-test-coverage test-check
  257. environment:
  258. GOPROXY: https://goproxy.io
  259. TAGS: bindata sqlite sqlite_unlock_notify
  260. RACE_ENABLED: true
  261. GITHUB_READ_TOKEN:
  262. from_secret: github_read_token
  263. depends_on: [deps-backend, prepare-test-env]
  264. volumes:
  265. - name: deps
  266. path: /go
  267. - name: unit-test-gogit
  268. image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
  269. user: gitea
  270. commands:
  271. - make unit-test-coverage test-check
  272. environment:
  273. GOPROXY: https://goproxy.io
  274. TAGS: bindata gogit sqlite sqlite_unlock_notify
  275. RACE_ENABLED: true
  276. GITHUB_READ_TOKEN:
  277. from_secret: github_read_token
  278. depends_on: [deps-backend, prepare-test-env]
  279. volumes:
  280. - name: deps
  281. path: /go
  282. - name: test-mysql
  283. image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
  284. user: gitea
  285. commands:
  286. - make test-mysql-migration integration-test-coverage
  287. environment:
  288. GOPROXY: https://goproxy.io
  289. TAGS: bindata
  290. RACE_ENABLED: true
  291. TEST_LDAP: 1
  292. USE_REPO_TEST_DIR: 1
  293. TEST_INDEXER_CODE_ES_URL: "http://elastic:changeme@elasticsearch:9200"
  294. depends_on: [build]
  295. volumes:
  296. - name: deps
  297. path: /go
  298. - name: test-mysql8
  299. image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
  300. user: gitea
  301. commands:
  302. - timeout -s ABRT 50m make test-mysql8-migration test-mysql8
  303. environment:
  304. GOPROXY: https://goproxy.io
  305. TAGS: bindata
  306. RACE_ENABLED: true
  307. TEST_LDAP: 1
  308. USE_REPO_TEST_DIR: 1
  309. depends_on: [build]
  310. volumes:
  311. - name: deps
  312. path: /go
  313. - name: test-mssql
  314. image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
  315. user: gitea
  316. commands:
  317. - make test-mssql-migration test-mssql
  318. environment:
  319. GOPROXY: https://goproxy.io
  320. TAGS: bindata
  321. RACE_ENABLED: true
  322. TEST_LDAP: 1
  323. USE_REPO_TEST_DIR: 1
  324. depends_on: [build]
  325. volumes:
  326. - name: deps
  327. path: /go
  328. - name: generate-coverage
  329. image: golang:1.20
  330. commands:
  331. - make coverage
  332. environment:
  333. GOPROXY: https://goproxy.io
  334. TAGS: bindata
  335. depends_on: [unit-test, test-mysql]
  336. when:
  337. branch:
  338. - main
  339. event:
  340. - push
  341. - pull_request
  342. - name: coverage-codecov
  343. image: woodpeckerci/plugin-codecov:next-alpine
  344. pull: always
  345. settings:
  346. files:
  347. - coverage.all
  348. token:
  349. from_secret: codecov_token
  350. depends_on: [generate-coverage]
  351. when:
  352. branch:
  353. - main
  354. event:
  355. - push
  356. - pull_request
  357. ---
  358. kind: pipeline
  359. name: testing-arm64
  360. platform:
  361. os: linux
  362. arch: arm64
  363. depends_on:
  364. - compliance
  365. trigger:
  366. event:
  367. - push
  368. - tag
  369. - pull_request
  370. paths:
  371. exclude:
  372. - docs/**
  373. volumes:
  374. - name: deps
  375. temp: {}
  376. services:
  377. - name: pgsql
  378. pull: default
  379. image: postgres:10
  380. environment:
  381. POSTGRES_DB: test
  382. POSTGRES_PASSWORD: postgres
  383. - name: ldap
  384. pull: default
  385. image: gitea/test-openldap:latest
  386. steps:
  387. - name: fetch-tags
  388. image: docker:git
  389. pull: always
  390. commands:
  391. - git config --global --add safe.directory /drone/src
  392. - git fetch --tags --force
  393. when:
  394. event:
  395. exclude:
  396. - pull_request
  397. - name: deps-backend
  398. image: golang:1.20
  399. pull: always
  400. commands:
  401. - make deps-backend
  402. volumes:
  403. - name: deps
  404. path: /go
  405. - name: prepare-test-env
  406. image: gitea/test_env:linux-arm64 # https://gitea.com/gitea/test-env
  407. pull: always
  408. commands:
  409. - ./build/test-env-prepare.sh
  410. - name: build
  411. image: gitea/test_env:linux-arm64 # https://gitea.com/gitea/test-env
  412. user: gitea
  413. commands:
  414. - ./build/test-env-check.sh
  415. - make backend
  416. environment:
  417. GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
  418. GOSUMDB: sum.golang.org
  419. TAGS: bindata gogit sqlite sqlite_unlock_notify
  420. depends_on: [deps-backend, prepare-test-env]
  421. volumes:
  422. - name: deps
  423. path: /go
  424. - name: test-sqlite
  425. image: gitea/test_env:linux-arm64 # https://gitea.com/gitea/test-env
  426. user: gitea
  427. commands:
  428. - timeout -s ABRT 50m make test-sqlite-migration test-sqlite
  429. environment:
  430. GOPROXY: https://goproxy.io
  431. TAGS: bindata gogit sqlite sqlite_unlock_notify
  432. RACE_ENABLED: true
  433. TEST_TAGS: gogit sqlite sqlite_unlock_notify
  434. USE_REPO_TEST_DIR: 1
  435. depends_on: [build]
  436. volumes:
  437. - name: deps
  438. path: /go
  439. - name: test-pgsql
  440. image: gitea/test_env:linux-arm64 # https://gitea.com/gitea/test-env
  441. user: gitea
  442. commands:
  443. - timeout -s ABRT 50m make test-pgsql-migration test-pgsql
  444. environment:
  445. GOPROXY: https://goproxy.io
  446. TAGS: bindata gogit
  447. RACE_ENABLED: true
  448. TEST_TAGS: gogit
  449. TEST_LDAP: 1
  450. USE_REPO_TEST_DIR: 1
  451. depends_on: [build]
  452. volumes:
  453. - name: deps
  454. path: /go
  455. ---
  456. kind: pipeline
  457. type: docker
  458. name: testing-e2e
  459. platform:
  460. os: linux
  461. arch: amd64
  462. depends_on:
  463. - compliance
  464. trigger:
  465. event:
  466. - pull_request
  467. paths:
  468. exclude:
  469. - docs/**
  470. volumes:
  471. - name: deps
  472. temp: {}
  473. services:
  474. - name: pgsql
  475. pull: default
  476. image: postgres:10
  477. environment:
  478. POSTGRES_DB: testgitea-e2e
  479. POSTGRES_PASSWORD: postgres
  480. POSTGRES_INITDB_ARGS: --encoding=UTF8 --lc-collate='en_US.UTF-8' --lc-ctype='en_US.UTF-8'
  481. steps:
  482. - name: deps-frontend
  483. image: node:18
  484. pull: always
  485. commands:
  486. - make deps-frontend
  487. - name: build-frontend
  488. image: node:18
  489. commands:
  490. - make frontend
  491. depends_on: [deps-frontend]
  492. - name: deps-backend
  493. image: golang:1.18
  494. pull: always
  495. commands:
  496. - make deps-backend
  497. volumes:
  498. - name: deps
  499. path: /go
  500. # TODO: We should probably build all dependencies into a test image
  501. - name: test-e2e
  502. image: mcr.microsoft.com/playwright:v1.29.2-focal
  503. commands:
  504. - curl -sLO https://go.dev/dl/go1.20.linux-amd64.tar.gz && tar -C /usr/local -xzf go1.20.linux-amd64.tar.gz
  505. - groupadd --gid 1001 gitea && useradd -m --gid 1001 --uid 1001 gitea
  506. - apt-get -qq update && apt-get -qqy install build-essential
  507. - export TEST_PGSQL_SCHEMA=''
  508. - ./build/test-env-prepare.sh
  509. - su gitea bash -c "export PATH=$PATH:/usr/local/go/bin && timeout -s ABRT 40m make test-e2e-pgsql"
  510. environment:
  511. GOPROXY: https://goproxy.io
  512. GOSUMDB: sum.golang.org
  513. USE_REPO_TEST_DIR: 1
  514. TEST_PGSQL_DBNAME: 'testgitea-e2e'
  515. DEBIAN_FRONTEND: noninteractive
  516. depends_on: [build-frontend, deps-backend]
  517. volumes:
  518. - name: deps
  519. path: /go
  520. ---
  521. kind: pipeline
  522. name: update_translations
  523. platform:
  524. os: linux
  525. arch: arm64
  526. trigger:
  527. branch:
  528. - main
  529. event:
  530. - cron
  531. cron:
  532. - update_translations
  533. steps:
  534. - name: download
  535. image: jonasfranz/crowdin
  536. pull: always
  537. settings:
  538. download: true
  539. export_dir: options/locale/
  540. ignore_branch: true
  541. project_identifier: gitea
  542. environment:
  543. CROWDIN_KEY:
  544. from_secret: crowdin_key
  545. - name: update
  546. image: alpine:3.17
  547. pull: always
  548. commands:
  549. - ./build/update-locales.sh
  550. - name: push
  551. image: appleboy/drone-git-push
  552. pull: always
  553. settings:
  554. author_email: "teabot@gitea.io"
  555. author_name: GiteaBot
  556. branch: main
  557. commit: true
  558. commit_message: "[skip ci] Updated translations via Crowdin"
  559. remote: "git@github.com:go-gitea/gitea.git"
  560. environment:
  561. DRONE_COMMIT_AUTHOR_EMAIL: "teabot@gitea.io"
  562. DRONE_COMMIT_AUTHOR: GiteaBot
  563. GIT_PUSH_SSH_KEY:
  564. from_secret: git_push_ssh_key
  565. - name: upload_translations
  566. image: jonasfranz/crowdin
  567. pull: always
  568. settings:
  569. files:
  570. locale_en-US.ini: options/locale/locale_en-US.ini
  571. ignore_branch: true
  572. project_identifier: gitea
  573. environment:
  574. CROWDIN_KEY:
  575. from_secret: crowdin_key
  576. ---
  577. kind: pipeline
  578. type: docker
  579. name: update_gitignore_and_licenses
  580. platform:
  581. os: linux
  582. arch: arm64
  583. trigger:
  584. branch:
  585. - main
  586. event:
  587. - cron
  588. cron:
  589. - update_gitignore_and_licenses
  590. steps:
  591. - name: download
  592. image: golang:1.20
  593. pull: always
  594. commands:
  595. - timeout -s ABRT 40m make generate-license generate-gitignore
  596. - name: push
  597. image: appleboy/drone-git-push
  598. pull: always
  599. settings:
  600. author_email: "teabot@gitea.io"
  601. author_name: "GiteaBot"
  602. branch: main
  603. commit: true
  604. commit_message: "[skip ci] Updated licenses and gitignores"
  605. remote: "git@github.com:go-gitea/gitea.git"
  606. environment:
  607. DRONE_COMMIT_AUTHOR_EMAIL: "teabot@gitea.io"
  608. DRONE_COMMIT_AUTHOR: "GiteaBot"
  609. GIT_PUSH_SSH_KEY:
  610. from_secret: git_push_ssh_key
  611. ---
  612. kind: pipeline
  613. type: docker
  614. name: release-latest
  615. platform:
  616. os: linux
  617. arch: amd64
  618. workspace:
  619. base: /source
  620. path: /
  621. trigger:
  622. branch:
  623. - main
  624. - "release/*"
  625. event:
  626. - push
  627. paths:
  628. exclude:
  629. - docs/**
  630. depends_on:
  631. - testing-amd64
  632. - testing-arm64
  633. volumes:
  634. - name: deps
  635. temp: {}
  636. steps:
  637. - name: fetch-tags
  638. image: docker:git
  639. pull: always
  640. commands:
  641. - git config --global --add safe.directory /drone/src
  642. - git fetch --tags --force
  643. - name: deps-frontend
  644. image: node:18
  645. pull: always
  646. commands:
  647. - make deps-frontend
  648. - name: deps-backend
  649. image: golang:1.20
  650. pull: always
  651. commands:
  652. - make deps-backend
  653. volumes:
  654. - name: deps
  655. path: /go
  656. - name: static
  657. image: techknowlogick/xgo:go-1.20.x
  658. pull: always
  659. commands:
  660. # Upgrade to node 18 once https://github.com/techknowlogick/xgo/issues/163 is resolved
  661. - curl -sL https://deb.nodesource.com/setup_16.x | bash - && apt-get -qqy install nodejs
  662. - export PATH=$PATH:$GOPATH/bin
  663. - make release
  664. environment:
  665. GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
  666. TAGS: bindata sqlite sqlite_unlock_notify
  667. DEBIAN_FRONTEND: noninteractive
  668. volumes:
  669. - name: deps
  670. path: /go
  671. - name: gpg-sign
  672. image: plugins/gpgsign:1
  673. pull: always
  674. settings:
  675. detach_sign: true
  676. excludes:
  677. - "dist/release/*.sha256"
  678. files:
  679. - "dist/release/*"
  680. environment:
  681. GPGSIGN_KEY:
  682. from_secret: gpgsign_key
  683. GPGSIGN_PASSPHRASE:
  684. from_secret: gpgsign_passphrase
  685. - name: release-branch
  686. image: woodpeckerci/plugin-s3:latest
  687. pull: always
  688. settings:
  689. acl:
  690. from_secret: aws_s3_acl
  691. region:
  692. from_secret: aws_s3_region
  693. bucket:
  694. from_secret: aws_s3_bucket
  695. endpoint:
  696. from_secret: aws_s3_endpoint
  697. path_style:
  698. from_secret: aws_s3_path_style
  699. source: "dist/release/*"
  700. strip_prefix: dist/release/
  701. target: "/gitea/${DRONE_BRANCH##release/v}"
  702. environment:
  703. AWS_ACCESS_KEY_ID:
  704. from_secret: aws_access_key_id
  705. AWS_SECRET_ACCESS_KEY:
  706. from_secret: aws_secret_access_key
  707. when:
  708. branch:
  709. - "release/*"
  710. event:
  711. - push
  712. - name: release-main
  713. image: woodpeckerci/plugin-s3:latest
  714. settings:
  715. acl:
  716. from_secret: aws_s3_acl
  717. region:
  718. from_secret: aws_s3_region
  719. bucket:
  720. from_secret: aws_s3_bucket
  721. endpoint:
  722. from_secret: aws_s3_endpoint
  723. path_style:
  724. from_secret: aws_s3_path_style
  725. source: "dist/release/*"
  726. strip_prefix: dist/release/
  727. target: /gitea/main
  728. environment:
  729. AWS_ACCESS_KEY_ID:
  730. from_secret: aws_access_key_id
  731. AWS_SECRET_ACCESS_KEY:
  732. from_secret: aws_secret_access_key
  733. when:
  734. branch:
  735. - main
  736. event:
  737. - push
  738. ---
  739. kind: pipeline
  740. name: release-version
  741. platform:
  742. os: linux
  743. arch: amd64
  744. workspace:
  745. base: /source
  746. path: /
  747. trigger:
  748. event:
  749. - tag
  750. depends_on:
  751. - testing-arm64
  752. - testing-amd64
  753. volumes:
  754. - name: deps
  755. temp: {}
  756. steps:
  757. - name: fetch-tags
  758. image: docker:git
  759. pull: always
  760. commands:
  761. - git config --global --add safe.directory /drone/src
  762. - git fetch --tags --force
  763. - name: deps-frontend
  764. image: node:18
  765. pull: always
  766. commands:
  767. - make deps-frontend
  768. - name: deps-backend
  769. image: golang:1.20
  770. pull: always
  771. commands:
  772. - make deps-backend
  773. volumes:
  774. - name: deps
  775. path: /go
  776. - name: static
  777. image: techknowlogick/xgo:go-1.20.x
  778. pull: always
  779. commands:
  780. # Upgrade to node 18 once https://github.com/techknowlogick/xgo/issues/163 is resolved
  781. - curl -sL https://deb.nodesource.com/setup_16.x | bash - && apt-get -qqy install nodejs
  782. - export PATH=$PATH:$GOPATH/bin
  783. - make release
  784. environment:
  785. GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
  786. TAGS: bindata sqlite sqlite_unlock_notify
  787. DEBIAN_FRONTEND: noninteractive
  788. depends_on: [fetch-tags]
  789. volumes:
  790. - name: deps
  791. path: /go
  792. - name: gpg-sign
  793. image: plugins/gpgsign:1
  794. pull: always
  795. settings:
  796. detach_sign: true
  797. excludes:
  798. - "dist/release/*.sha256"
  799. files:
  800. - "dist/release/*"
  801. environment:
  802. GPGSIGN_KEY:
  803. from_secret: gpgsign_key
  804. GPGSIGN_PASSPHRASE:
  805. from_secret: gpgsign_passphrase
  806. depends_on: [static]
  807. - name: release-tag
  808. image: woodpeckerci/plugin-s3:latest
  809. pull: always
  810. settings:
  811. acl:
  812. from_secret: aws_s3_acl
  813. region:
  814. from_secret: aws_s3_region
  815. bucket:
  816. from_secret: aws_s3_bucket
  817. endpoint:
  818. from_secret: aws_s3_endpoint
  819. path_style:
  820. from_secret: aws_s3_path_style
  821. source: "dist/release/*"
  822. strip_prefix: dist/release/
  823. target: "/gitea/${DRONE_TAG##v}"
  824. environment:
  825. AWS_ACCESS_KEY_ID:
  826. from_secret: aws_access_key_id
  827. AWS_SECRET_ACCESS_KEY:
  828. from_secret: aws_secret_access_key
  829. depends_on: [gpg-sign]
  830. - name: github
  831. image: plugins/github-release:latest
  832. pull: always
  833. settings:
  834. files:
  835. - "dist/release/*"
  836. file_exists: overwrite
  837. environment:
  838. GITHUB_TOKEN:
  839. from_secret: github_token
  840. depends_on: [gpg-sign]
  841. ---
  842. kind: pipeline
  843. type: docker
  844. name: docs
  845. platform:
  846. os: linux
  847. arch: arm64
  848. depends_on:
  849. - compliance
  850. trigger:
  851. event:
  852. - push
  853. - tag
  854. - pull_request
  855. paths:
  856. include:
  857. - docs/**
  858. steps:
  859. - name: build-docs
  860. image: golang:1.20
  861. commands:
  862. - cd docs
  863. - make trans-copy clean build
  864. - name: publish-docs
  865. image: techknowlogick/drone-netlify:latest
  866. pull: always
  867. settings:
  868. path: docs/public/
  869. site_id: d2260bae-7861-4c02-8646-8f6440b12672
  870. environment:
  871. NETLIFY_TOKEN:
  872. from_secret: netlify_token
  873. when:
  874. branch:
  875. - main
  876. event:
  877. - push
  878. ---
  879. kind: pipeline
  880. type: docker
  881. name: docker-linux-amd64-release-version
  882. platform:
  883. os: linux
  884. arch: amd64
  885. depends_on:
  886. - testing-amd64
  887. - testing-arm64
  888. trigger:
  889. ref:
  890. include:
  891. - "refs/tags/**"
  892. exclude:
  893. - "refs/tags/**-rc*"
  894. event:
  895. exclude:
  896. - cron
  897. steps:
  898. - name: fetch-tags
  899. image: docker:git
  900. pull: always
  901. commands:
  902. - git config --global --add safe.directory /drone/src
  903. - git fetch --tags --force
  904. - name: publish
  905. image: techknowlogick/drone-docker:latest
  906. pull: always
  907. settings:
  908. auto_tag: true
  909. auto_tag_suffix: linux-amd64
  910. repo: gitea/gitea
  911. build_args:
  912. - GOPROXY=https://goproxy.io
  913. password:
  914. from_secret: docker_password
  915. username:
  916. from_secret: docker_username
  917. when:
  918. event:
  919. exclude:
  920. - pull_request
  921. - name: publish-rootless
  922. image: techknowlogick/drone-docker:latest
  923. settings:
  924. dockerfile: Dockerfile.rootless
  925. auto_tag: true
  926. auto_tag_suffix: linux-amd64-rootless
  927. repo: gitea/gitea
  928. build_args:
  929. - GOPROXY=https://goproxy.io
  930. password:
  931. from_secret: docker_password
  932. username:
  933. from_secret: docker_username
  934. when:
  935. event:
  936. exclude:
  937. - pull_request
  938. ---
  939. kind: pipeline
  940. type: docker
  941. name: docker-linux-amd64-release-candidate-version
  942. platform:
  943. os: linux
  944. arch: amd64
  945. depends_on:
  946. - testing-amd64
  947. - testing-arm64
  948. trigger:
  949. ref:
  950. - "refs/tags/**-rc*"
  951. event:
  952. exclude:
  953. - cron
  954. steps:
  955. - name: fetch-tags
  956. image: docker:git
  957. pull: always
  958. commands:
  959. - git config --global --add safe.directory /drone/src
  960. - git fetch --tags --force
  961. - name: publish
  962. image: techknowlogick/drone-docker:latest
  963. pull: always
  964. settings:
  965. tags: ${DRONE_TAG##v}-linux-amd64
  966. repo: gitea/gitea
  967. build_args:
  968. - GOPROXY=https://goproxy.io
  969. password:
  970. from_secret: docker_password
  971. username:
  972. from_secret: docker_username
  973. when:
  974. event:
  975. exclude:
  976. - pull_request
  977. - name: publish-rootless
  978. image: techknowlogick/drone-docker:latest
  979. settings:
  980. dockerfile: Dockerfile.rootless
  981. tags: ${DRONE_TAG##v}-linux-amd64-rootless
  982. repo: gitea/gitea
  983. build_args:
  984. - GOPROXY=https://goproxy.io
  985. password:
  986. from_secret: docker_password
  987. username:
  988. from_secret: docker_username
  989. when:
  990. event:
  991. exclude:
  992. - pull_request
  993. ---
  994. kind: pipeline
  995. type: docker
  996. name: docker-linux-amd64-release
  997. platform:
  998. os: linux
  999. arch: amd64
  1000. depends_on:
  1001. - testing-amd64
  1002. - testing-arm64
  1003. trigger:
  1004. ref:
  1005. - refs/heads/main
  1006. event:
  1007. exclude:
  1008. - cron
  1009. steps:
  1010. - name: fetch-tags
  1011. image: docker:git
  1012. pull: always
  1013. commands:
  1014. - git config --global --add safe.directory /drone/src
  1015. - git fetch --tags --force
  1016. - name: publish
  1017. image: techknowlogick/drone-docker:latest
  1018. pull: always
  1019. settings:
  1020. auto_tag: false
  1021. tags: dev-linux-amd64
  1022. repo: gitea/gitea
  1023. build_args:
  1024. - GOPROXY=https://goproxy.io
  1025. password:
  1026. from_secret: docker_password
  1027. username:
  1028. from_secret: docker_username
  1029. when:
  1030. event:
  1031. exclude:
  1032. - pull_request
  1033. - name: publish-rootless
  1034. image: techknowlogick/drone-docker:latest
  1035. settings:
  1036. dockerfile: Dockerfile.rootless
  1037. auto_tag: false
  1038. tags: dev-linux-amd64-rootless
  1039. repo: gitea/gitea
  1040. build_args:
  1041. - GOPROXY=https://goproxy.io
  1042. password:
  1043. from_secret: docker_password
  1044. username:
  1045. from_secret: docker_username
  1046. when:
  1047. event:
  1048. exclude:
  1049. - pull_request
  1050. ---
  1051. kind: pipeline
  1052. name: docker-linux-amd64-release-branch
  1053. platform:
  1054. os: linux
  1055. arch: amd64
  1056. depends_on:
  1057. - testing-amd64
  1058. - testing-arm64
  1059. trigger:
  1060. ref:
  1061. - "refs/heads/release/v*"
  1062. event:
  1063. exclude:
  1064. - cron
  1065. steps:
  1066. - name: fetch-tags
  1067. image: docker:git
  1068. pull: always
  1069. commands:
  1070. - git config --global --add safe.directory /drone/src
  1071. - git fetch --tags --force
  1072. - name: publish
  1073. image: techknowlogick/drone-docker:latest
  1074. pull: always
  1075. settings:
  1076. auto_tag: false
  1077. tags: ${DRONE_BRANCH##release/v}-dev-linux-amd64
  1078. repo: gitea/gitea
  1079. build_args:
  1080. - GOPROXY=https://goproxy.io
  1081. password:
  1082. from_secret: docker_password
  1083. username:
  1084. from_secret: docker_username
  1085. when:
  1086. event:
  1087. exclude:
  1088. - pull_request
  1089. - name: publish-rootless
  1090. image: techknowlogick/drone-docker:latest
  1091. settings:
  1092. dockerfile: Dockerfile.rootless
  1093. auto_tag: false
  1094. tags: ${DRONE_BRANCH##release/v}-dev-linux-amd64-rootless
  1095. repo: gitea/gitea
  1096. build_args:
  1097. - GOPROXY=https://goproxy.io
  1098. password:
  1099. from_secret: docker_password
  1100. username:
  1101. from_secret: docker_username
  1102. when:
  1103. event:
  1104. exclude:
  1105. - pull_request
  1106. ---
  1107. kind: pipeline
  1108. type: docker
  1109. name: docker-linux-arm64-dry-run
  1110. platform:
  1111. os: linux
  1112. arch: arm64
  1113. depends_on:
  1114. - compliance
  1115. trigger:
  1116. ref:
  1117. - "refs/pull/**"
  1118. paths:
  1119. exclude:
  1120. - docs/**
  1121. steps:
  1122. - name: dryrun
  1123. image: techknowlogick/drone-docker:latest
  1124. pull: always
  1125. settings:
  1126. dry_run: true
  1127. repo: gitea/gitea
  1128. tags: linux-arm64
  1129. build_args:
  1130. - GOPROXY=https://goproxy.io
  1131. environment:
  1132. PLUGIN_MIRROR:
  1133. from_secret: plugin_mirror
  1134. when:
  1135. event:
  1136. - pull_request
  1137. ---
  1138. kind: pipeline
  1139. type: docker
  1140. name: docker-linux-arm64-release-version
  1141. platform:
  1142. os: linux
  1143. arch: arm64
  1144. depends_on:
  1145. - testing-amd64
  1146. - testing-arm64
  1147. trigger:
  1148. ref:
  1149. include:
  1150. - "refs/tags/**"
  1151. exclude:
  1152. - "refs/tags/**-rc*"
  1153. event:
  1154. exclude:
  1155. - cron
  1156. steps:
  1157. - name: fetch-tags
  1158. image: docker:git
  1159. pull: always
  1160. commands:
  1161. - git config --global --add safe.directory /drone/src
  1162. - git fetch --tags --force
  1163. - name: publish
  1164. image: techknowlogick/drone-docker:latest
  1165. pull: always
  1166. settings:
  1167. auto_tag: true
  1168. auto_tag_suffix: linux-arm64
  1169. repo: gitea/gitea
  1170. build_args:
  1171. - GOPROXY=https://goproxy.io
  1172. password:
  1173. from_secret: docker_password
  1174. username:
  1175. from_secret: docker_username
  1176. when:
  1177. event:
  1178. exclude:
  1179. - pull_request
  1180. - name: publish-rootless
  1181. image: techknowlogick/drone-docker:latest
  1182. settings:
  1183. dockerfile: Dockerfile.rootless
  1184. auto_tag: true
  1185. auto_tag_suffix: linux-arm64-rootless
  1186. repo: gitea/gitea
  1187. build_args:
  1188. - GOPROXY=https://goproxy.io
  1189. password:
  1190. from_secret: docker_password
  1191. username:
  1192. from_secret: docker_username
  1193. when:
  1194. event:
  1195. exclude:
  1196. - pull_request
  1197. ---
  1198. kind: pipeline
  1199. type: docker
  1200. name: docker-linux-arm64-release-candidate-version
  1201. platform:
  1202. os: linux
  1203. arch: arm64
  1204. depends_on:
  1205. - testing-amd64
  1206. - testing-arm64
  1207. trigger:
  1208. ref:
  1209. - "refs/tags/**-rc*"
  1210. event:
  1211. exclude:
  1212. - cron
  1213. steps:
  1214. - name: fetch-tags
  1215. image: docker:git
  1216. pull: always
  1217. commands:
  1218. - git config --global --add safe.directory /drone/src
  1219. - git fetch --tags --force
  1220. - name: publish
  1221. image: techknowlogick/drone-docker:latest
  1222. pull: always
  1223. settings:
  1224. tags: ${DRONE_TAG##v}-linux-arm64
  1225. repo: gitea/gitea
  1226. build_args:
  1227. - GOPROXY=https://goproxy.io
  1228. password:
  1229. from_secret: docker_password
  1230. username:
  1231. from_secret: docker_username
  1232. when:
  1233. event:
  1234. exclude:
  1235. - pull_request
  1236. - name: publish-rootless
  1237. image: techknowlogick/drone-docker:latest
  1238. settings:
  1239. dockerfile: Dockerfile.rootless
  1240. tags: ${DRONE_TAG##v}-linux-arm64-rootless
  1241. repo: gitea/gitea
  1242. build_args:
  1243. - GOPROXY=https://goproxy.io
  1244. password:
  1245. from_secret: docker_password
  1246. username:
  1247. from_secret: docker_username
  1248. when:
  1249. event:
  1250. exclude:
  1251. - pull_request
  1252. ---
  1253. kind: pipeline
  1254. type: docker
  1255. name: docker-linux-arm64-release
  1256. platform:
  1257. os: linux
  1258. arch: arm64
  1259. depends_on:
  1260. - testing-amd64
  1261. - testing-arm64
  1262. trigger:
  1263. ref:
  1264. - refs/heads/main
  1265. event:
  1266. exclude:
  1267. - cron
  1268. steps:
  1269. - name: fetch-tags
  1270. image: docker:git
  1271. pull: always
  1272. commands:
  1273. - git config --global --add safe.directory /drone/src
  1274. - git fetch --tags --force
  1275. - name: publish
  1276. image: techknowlogick/drone-docker:latest
  1277. pull: always
  1278. settings:
  1279. auto_tag: false
  1280. tags: dev-linux-arm64
  1281. repo: gitea/gitea
  1282. build_args:
  1283. - GOPROXY=https://goproxy.io
  1284. password:
  1285. from_secret: docker_password
  1286. username:
  1287. from_secret: docker_username
  1288. when:
  1289. event:
  1290. exclude:
  1291. - pull_request
  1292. - name: publish-rootless
  1293. image: techknowlogick/drone-docker:latest
  1294. settings:
  1295. dockerfile: Dockerfile.rootless
  1296. auto_tag: false
  1297. tags: dev-linux-arm64-rootless
  1298. repo: gitea/gitea
  1299. build_args:
  1300. - GOPROXY=https://goproxy.io
  1301. password:
  1302. from_secret: docker_password
  1303. username:
  1304. from_secret: docker_username
  1305. when:
  1306. event:
  1307. exclude:
  1308. - pull_request
  1309. ---
  1310. kind: pipeline
  1311. name: docker-linux-arm64-release-branch
  1312. platform:
  1313. os: linux
  1314. arch: arm64
  1315. depends_on:
  1316. - testing-amd64
  1317. - testing-arm64
  1318. trigger:
  1319. ref:
  1320. - "refs/heads/release/v*"
  1321. event:
  1322. exclude:
  1323. - cron
  1324. steps:
  1325. - name: fetch-tags
  1326. image: docker:git
  1327. pull: always
  1328. commands:
  1329. - git config --global --add safe.directory /drone/src
  1330. - git fetch --tags --force
  1331. - name: publish
  1332. image: techknowlogick/drone-docker:latest
  1333. pull: always
  1334. settings:
  1335. auto_tag: false
  1336. tags: ${DRONE_BRANCH##release/v}-dev-linux-arm64
  1337. repo: gitea/gitea
  1338. build_args:
  1339. - GOPROXY=https://goproxy.io
  1340. password:
  1341. from_secret: docker_password
  1342. username:
  1343. from_secret: docker_username
  1344. when:
  1345. event:
  1346. exclude:
  1347. - pull_request
  1348. - name: publish-rootless
  1349. image: techknowlogick/drone-docker:latest
  1350. settings:
  1351. dockerfile: Dockerfile.rootless
  1352. auto_tag: false
  1353. tags: ${DRONE_BRANCH##release/v}-dev-linux-arm64-rootless
  1354. repo: gitea/gitea
  1355. build_args:
  1356. - GOPROXY=https://goproxy.io
  1357. password:
  1358. from_secret: docker_password
  1359. username:
  1360. from_secret: docker_username
  1361. when:
  1362. event:
  1363. exclude:
  1364. - pull_request
  1365. ---
  1366. kind: pipeline
  1367. type: docker
  1368. name: docker-manifest-version
  1369. platform:
  1370. os: linux
  1371. arch: amd64
  1372. steps:
  1373. - name: manifest-rootless
  1374. image: plugins/manifest
  1375. pull: always
  1376. settings:
  1377. auto_tag: true
  1378. ignore_missing: true
  1379. spec: docker/manifest.rootless.tmpl
  1380. password:
  1381. from_secret: docker_password
  1382. username:
  1383. from_secret: docker_username
  1384. - name: manifest
  1385. image: plugins/manifest
  1386. settings:
  1387. auto_tag: true
  1388. ignore_missing: true
  1389. spec: docker/manifest.tmpl
  1390. password:
  1391. from_secret: docker_password
  1392. username:
  1393. from_secret: docker_username
  1394. trigger:
  1395. ref:
  1396. - "refs/tags/**"
  1397. event:
  1398. exclude:
  1399. - cron
  1400. depends_on:
  1401. - docker-linux-amd64-release-version
  1402. - docker-linux-amd64-release-candidate-version
  1403. - docker-linux-arm64-release-version
  1404. - docker-linux-arm64-release-candidate-version
  1405. ---
  1406. kind: pipeline
  1407. type: docker
  1408. name: docker-manifest
  1409. platform:
  1410. os: linux
  1411. arch: amd64
  1412. steps:
  1413. - name: manifest-rootless
  1414. pull: always
  1415. image: plugins/manifest
  1416. pull: always
  1417. settings:
  1418. auto_tag: false
  1419. ignore_missing: true
  1420. spec: docker/manifest.rootless.tmpl
  1421. password:
  1422. from_secret: docker_password
  1423. username:
  1424. from_secret: docker_username
  1425. - name: manifest
  1426. image: plugins/manifest
  1427. settings:
  1428. auto_tag: false
  1429. ignore_missing: true
  1430. spec: docker/manifest.tmpl
  1431. password:
  1432. from_secret: docker_password
  1433. username:
  1434. from_secret: docker_username
  1435. trigger:
  1436. ref:
  1437. - refs/heads/main
  1438. - "refs/heads/release/v*"
  1439. event:
  1440. exclude:
  1441. - cron
  1442. depends_on:
  1443. - docker-linux-amd64-release
  1444. - docker-linux-arm64-release
  1445. - docker-linux-amd64-release-branch
  1446. - docker-linux-arm64-release-branch
  1447. ---
  1448. kind: pipeline
  1449. type: docker
  1450. name: notifications
  1451. platform:
  1452. os: linux
  1453. arch: arm64
  1454. clone:
  1455. disable: true
  1456. trigger:
  1457. branch:
  1458. - main
  1459. - "release/*"
  1460. event:
  1461. - push
  1462. - tag
  1463. status:
  1464. - success
  1465. - failure
  1466. depends_on:
  1467. - testing-amd64
  1468. - testing-arm64
  1469. - release-version
  1470. - release-latest
  1471. - docker-linux-amd64-release
  1472. - docker-linux-arm64-release
  1473. - docker-linux-amd64-release-version
  1474. - docker-linux-arm64-release-version
  1475. - docker-linux-amd64-release-candidate-version
  1476. - docker-linux-arm64-release-candidate-version
  1477. - docker-linux-amd64-release-branch
  1478. - docker-linux-arm64-release-branch
  1479. - docker-manifest
  1480. - docker-manifest-version
  1481. - docs
  1482. steps:
  1483. - name: discord
  1484. image: appleboy/drone-discord:1.2.4
  1485. pull: always
  1486. settings:
  1487. message: "{{#success build.status}} ✅ Build #{{build.number}} of `{{repo.name}}` succeeded.\n\n📝 Commit by {{commit.author}} on `{{commit.branch}}`:\n``` {{commit.message}} ```\n\n🌐 {{ build.link }} {{else}} ❌ Build #{{build.number}} of `{{repo.name}}` failed.\n\n📝 Commit by {{commit.author}} on `{{commit.branch}}`:\n``` {{commit.message}} ```\n\n🌐 {{ build.link }} {{/success}}\n"
  1488. webhook_id:
  1489. from_secret: discord_webhook_id
  1490. webhook_token:
  1491. from_secret: discord_webhook_token