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.

.drone.yml 34KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674
  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-1.19-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-1.19-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-1.19-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-1.19-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-1.19-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-1.19-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-1.19-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-1.19-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-1.19-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-1.19-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-1.19-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-1.19-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-1.19-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-1.19-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. name: update_translations
  458. platform:
  459. os: linux
  460. arch: arm64
  461. trigger:
  462. branch:
  463. - main
  464. event:
  465. - cron
  466. cron:
  467. - update_translations
  468. steps:
  469. - name: download
  470. image: jonasfranz/crowdin
  471. pull: always
  472. settings:
  473. download: true
  474. export_dir: options/locale/
  475. ignore_branch: true
  476. project_identifier: gitea
  477. environment:
  478. CROWDIN_KEY:
  479. from_secret: crowdin_key
  480. - name: update
  481. image: alpine:3.17
  482. pull: always
  483. commands:
  484. - ./build/update-locales.sh
  485. - name: push
  486. image: appleboy/drone-git-push
  487. pull: always
  488. settings:
  489. author_email: "teabot@gitea.io"
  490. author_name: GiteaBot
  491. branch: main
  492. commit: true
  493. commit_message: "[skip ci] Updated translations via Crowdin"
  494. remote: "git@github.com:go-gitea/gitea.git"
  495. environment:
  496. DRONE_COMMIT_AUTHOR_EMAIL: "teabot@gitea.io"
  497. DRONE_COMMIT_AUTHOR: GiteaBot
  498. GIT_PUSH_SSH_KEY:
  499. from_secret: git_push_ssh_key
  500. - name: upload_translations
  501. image: jonasfranz/crowdin
  502. pull: always
  503. settings:
  504. files:
  505. locale_en-US.ini: options/locale/locale_en-US.ini
  506. ignore_branch: true
  507. project_identifier: gitea
  508. environment:
  509. CROWDIN_KEY:
  510. from_secret: crowdin_key
  511. ---
  512. kind: pipeline
  513. type: docker
  514. name: update_gitignore_and_licenses
  515. platform:
  516. os: linux
  517. arch: arm64
  518. trigger:
  519. branch:
  520. - main
  521. event:
  522. - cron
  523. cron:
  524. - update_gitignore_and_licenses
  525. steps:
  526. - name: download
  527. image: golang:1.20
  528. pull: always
  529. commands:
  530. - timeout -s ABRT 40m make generate-license generate-gitignore
  531. - name: push
  532. image: appleboy/drone-git-push
  533. pull: always
  534. settings:
  535. author_email: "teabot@gitea.io"
  536. author_name: "GiteaBot"
  537. branch: main
  538. commit: true
  539. commit_message: "[skip ci] Updated licenses and gitignores"
  540. remote: "git@github.com:go-gitea/gitea.git"
  541. environment:
  542. DRONE_COMMIT_AUTHOR_EMAIL: "teabot@gitea.io"
  543. DRONE_COMMIT_AUTHOR: "GiteaBot"
  544. GIT_PUSH_SSH_KEY:
  545. from_secret: git_push_ssh_key
  546. ---
  547. kind: pipeline
  548. type: docker
  549. name: release-latest
  550. platform:
  551. os: linux
  552. arch: amd64
  553. workspace:
  554. base: /source
  555. path: /
  556. trigger:
  557. branch:
  558. - main
  559. - "release/*"
  560. event:
  561. - push
  562. paths:
  563. exclude:
  564. - docs/**
  565. depends_on:
  566. - testing-amd64
  567. - testing-arm64
  568. volumes:
  569. - name: deps
  570. temp: {}
  571. steps:
  572. - name: fetch-tags
  573. image: docker:git
  574. pull: always
  575. commands:
  576. - git config --global --add safe.directory /drone/src
  577. - git fetch --tags --force
  578. - name: deps-frontend
  579. image: node:18
  580. pull: always
  581. commands:
  582. - make deps-frontend
  583. - name: deps-backend
  584. image: golang:1.20
  585. pull: always
  586. commands:
  587. - make deps-backend
  588. volumes:
  589. - name: deps
  590. path: /go
  591. - name: static
  592. image: techknowlogick/xgo:go-1.20.x
  593. pull: always
  594. commands:
  595. # Upgrade to node 18 once https://github.com/techknowlogick/xgo/issues/163 is resolved
  596. - curl -sL https://deb.nodesource.com/setup_16.x | bash - && apt-get -qqy install nodejs
  597. - export PATH=$PATH:$GOPATH/bin
  598. - make release
  599. environment:
  600. GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
  601. TAGS: bindata sqlite sqlite_unlock_notify
  602. DEBIAN_FRONTEND: noninteractive
  603. volumes:
  604. - name: deps
  605. path: /go
  606. - name: gpg-sign
  607. image: plugins/gpgsign:1
  608. pull: always
  609. settings:
  610. detach_sign: true
  611. excludes:
  612. - "dist/release/*.sha256"
  613. files:
  614. - "dist/release/*"
  615. environment:
  616. GPGSIGN_KEY:
  617. from_secret: gpgsign_key
  618. GPGSIGN_PASSPHRASE:
  619. from_secret: gpgsign_passphrase
  620. - name: release-branch
  621. image: woodpeckerci/plugin-s3:latest
  622. pull: always
  623. settings:
  624. acl:
  625. from_secret: aws_s3_acl
  626. region:
  627. from_secret: aws_s3_region
  628. bucket:
  629. from_secret: aws_s3_bucket
  630. endpoint:
  631. from_secret: aws_s3_endpoint
  632. path_style:
  633. from_secret: aws_s3_path_style
  634. source: "dist/release/*"
  635. strip_prefix: dist/release/
  636. target: "/gitea/${DRONE_BRANCH##release/v}"
  637. environment:
  638. AWS_ACCESS_KEY_ID:
  639. from_secret: aws_access_key_id
  640. AWS_SECRET_ACCESS_KEY:
  641. from_secret: aws_secret_access_key
  642. when:
  643. branch:
  644. - "release/*"
  645. event:
  646. - push
  647. - name: release-main
  648. image: woodpeckerci/plugin-s3:latest
  649. settings:
  650. acl:
  651. from_secret: aws_s3_acl
  652. region:
  653. from_secret: aws_s3_region
  654. bucket:
  655. from_secret: aws_s3_bucket
  656. endpoint:
  657. from_secret: aws_s3_endpoint
  658. path_style:
  659. from_secret: aws_s3_path_style
  660. source: "dist/release/*"
  661. strip_prefix: dist/release/
  662. target: /gitea/main
  663. environment:
  664. AWS_ACCESS_KEY_ID:
  665. from_secret: aws_access_key_id
  666. AWS_SECRET_ACCESS_KEY:
  667. from_secret: aws_secret_access_key
  668. when:
  669. branch:
  670. - main
  671. event:
  672. - push
  673. ---
  674. kind: pipeline
  675. name: release-version
  676. platform:
  677. os: linux
  678. arch: amd64
  679. workspace:
  680. base: /source
  681. path: /
  682. trigger:
  683. event:
  684. - tag
  685. depends_on:
  686. - testing-arm64
  687. - testing-amd64
  688. volumes:
  689. - name: deps
  690. temp: {}
  691. steps:
  692. - name: fetch-tags
  693. image: docker:git
  694. pull: always
  695. commands:
  696. - git config --global --add safe.directory /drone/src
  697. - git fetch --tags --force
  698. - name: deps-frontend
  699. image: node:18
  700. pull: always
  701. commands:
  702. - make deps-frontend
  703. - name: deps-backend
  704. image: golang:1.20
  705. pull: always
  706. commands:
  707. - make deps-backend
  708. volumes:
  709. - name: deps
  710. path: /go
  711. - name: static
  712. image: techknowlogick/xgo:go-1.20.x
  713. pull: always
  714. commands:
  715. # Upgrade to node 18 once https://github.com/techknowlogick/xgo/issues/163 is resolved
  716. - curl -sL https://deb.nodesource.com/setup_16.x | bash - && apt-get -qqy install nodejs
  717. - export PATH=$PATH:$GOPATH/bin
  718. - make release
  719. environment:
  720. GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
  721. TAGS: bindata sqlite sqlite_unlock_notify
  722. DEBIAN_FRONTEND: noninteractive
  723. depends_on: [fetch-tags]
  724. volumes:
  725. - name: deps
  726. path: /go
  727. - name: gpg-sign
  728. image: plugins/gpgsign:1
  729. pull: always
  730. settings:
  731. detach_sign: true
  732. excludes:
  733. - "dist/release/*.sha256"
  734. files:
  735. - "dist/release/*"
  736. environment:
  737. GPGSIGN_KEY:
  738. from_secret: gpgsign_key
  739. GPGSIGN_PASSPHRASE:
  740. from_secret: gpgsign_passphrase
  741. depends_on: [static]
  742. - name: release-tag
  743. image: woodpeckerci/plugin-s3:latest
  744. pull: always
  745. settings:
  746. acl:
  747. from_secret: aws_s3_acl
  748. region:
  749. from_secret: aws_s3_region
  750. bucket:
  751. from_secret: aws_s3_bucket
  752. endpoint:
  753. from_secret: aws_s3_endpoint
  754. path_style:
  755. from_secret: aws_s3_path_style
  756. source: "dist/release/*"
  757. strip_prefix: dist/release/
  758. target: "/gitea/${DRONE_TAG##v}"
  759. environment:
  760. AWS_ACCESS_KEY_ID:
  761. from_secret: aws_access_key_id
  762. AWS_SECRET_ACCESS_KEY:
  763. from_secret: aws_secret_access_key
  764. depends_on: [gpg-sign]
  765. - name: github
  766. image: plugins/github-release:latest
  767. pull: always
  768. settings:
  769. files:
  770. - "dist/release/*"
  771. file_exists: overwrite
  772. environment:
  773. GITHUB_TOKEN:
  774. from_secret: github_token
  775. depends_on: [gpg-sign]
  776. ---
  777. kind: pipeline
  778. type: docker
  779. name: docs
  780. platform:
  781. os: linux
  782. arch: arm64
  783. depends_on:
  784. - compliance
  785. trigger:
  786. event:
  787. - push
  788. - tag
  789. - pull_request
  790. paths:
  791. include:
  792. - docs/**
  793. steps:
  794. - name: lint-docs
  795. image: node:18
  796. commands:
  797. - make deps-frontend
  798. - make lint-frontend
  799. - name: build-docs
  800. image: golang:1.20
  801. commands:
  802. - cd docs
  803. - make trans-copy clean build
  804. - name: publish-docs
  805. image: techknowlogick/drone-netlify:latest
  806. pull: always
  807. settings:
  808. path: docs/public/
  809. site_id: d2260bae-7861-4c02-8646-8f6440b12672
  810. environment:
  811. NETLIFY_TOKEN:
  812. from_secret: netlify_token
  813. when:
  814. branch:
  815. - main
  816. event:
  817. - push
  818. ---
  819. kind: pipeline
  820. type: docker
  821. name: docker-linux-amd64-release-version
  822. platform:
  823. os: linux
  824. arch: amd64
  825. depends_on:
  826. - testing-amd64
  827. - testing-arm64
  828. trigger:
  829. ref:
  830. include:
  831. - "refs/tags/**"
  832. exclude:
  833. - "refs/tags/**-rc*"
  834. event:
  835. exclude:
  836. - cron
  837. steps:
  838. - name: fetch-tags
  839. image: docker:git
  840. pull: always
  841. commands:
  842. - git config --global --add safe.directory /drone/src
  843. - git fetch --tags --force
  844. - name: publish
  845. image: plugins/docker:latest
  846. pull: always
  847. settings:
  848. auto_tag: true
  849. auto_tag_suffix: linux-amd64
  850. repo: gitea/gitea
  851. build_args:
  852. - GOPROXY=https://goproxy.io
  853. password:
  854. from_secret: docker_password
  855. username:
  856. from_secret: docker_username
  857. environment:
  858. PLUGIN_MIRROR:
  859. from_secret: plugin_mirror
  860. DOCKER_BUILDKIT: 1
  861. when:
  862. event:
  863. exclude:
  864. - pull_request
  865. - name: publish-rootless
  866. image: plugins/docker:latest
  867. settings:
  868. dockerfile: Dockerfile.rootless
  869. auto_tag: true
  870. auto_tag_suffix: linux-amd64-rootless
  871. repo: gitea/gitea
  872. build_args:
  873. - GOPROXY=https://goproxy.io
  874. password:
  875. from_secret: docker_password
  876. username:
  877. from_secret: docker_username
  878. environment:
  879. PLUGIN_MIRROR:
  880. from_secret: plugin_mirror
  881. DOCKER_BUILDKIT: 1
  882. when:
  883. event:
  884. exclude:
  885. - pull_request
  886. ---
  887. kind: pipeline
  888. type: docker
  889. name: docker-linux-amd64-release-candidate-version
  890. platform:
  891. os: linux
  892. arch: amd64
  893. depends_on:
  894. - testing-amd64
  895. - testing-arm64
  896. trigger:
  897. ref:
  898. - "refs/tags/**-rc*"
  899. event:
  900. exclude:
  901. - cron
  902. steps:
  903. - name: fetch-tags
  904. image: docker:git
  905. pull: always
  906. commands:
  907. - git config --global --add safe.directory /drone/src
  908. - git fetch --tags --force
  909. - name: publish
  910. image: plugins/docker:latest
  911. pull: always
  912. settings:
  913. tags: ${DRONE_TAG##v}-linux-amd64
  914. repo: gitea/gitea
  915. build_args:
  916. - GOPROXY=https://goproxy.io
  917. password:
  918. from_secret: docker_password
  919. username:
  920. from_secret: docker_username
  921. environment:
  922. PLUGIN_MIRROR:
  923. from_secret: plugin_mirror
  924. DOCKER_BUILDKIT: 1
  925. when:
  926. event:
  927. exclude:
  928. - pull_request
  929. - name: publish-rootless
  930. image: plugins/docker:latest
  931. settings:
  932. dockerfile: Dockerfile.rootless
  933. tags: ${DRONE_TAG##v}-linux-amd64-rootless
  934. repo: gitea/gitea
  935. build_args:
  936. - GOPROXY=https://goproxy.io
  937. password:
  938. from_secret: docker_password
  939. username:
  940. from_secret: docker_username
  941. environment:
  942. PLUGIN_MIRROR:
  943. from_secret: plugin_mirror
  944. DOCKER_BUILDKIT: 1
  945. when:
  946. event:
  947. exclude:
  948. - pull_request
  949. ---
  950. kind: pipeline
  951. type: docker
  952. name: docker-linux-amd64-release
  953. platform:
  954. os: linux
  955. arch: amd64
  956. depends_on:
  957. - testing-amd64
  958. - testing-arm64
  959. trigger:
  960. ref:
  961. - refs/heads/main
  962. event:
  963. exclude:
  964. - cron
  965. steps:
  966. - name: fetch-tags
  967. image: docker:git
  968. pull: always
  969. commands:
  970. - git config --global --add safe.directory /drone/src
  971. - git fetch --tags --force
  972. - name: publish
  973. image: plugins/docker:latest
  974. pull: always
  975. settings:
  976. auto_tag: false
  977. tags: nightly-linux-amd64
  978. repo: gitea/gitea
  979. build_args:
  980. - GOPROXY=https://goproxy.io
  981. password:
  982. from_secret: docker_password
  983. username:
  984. from_secret: docker_username
  985. environment:
  986. PLUGIN_MIRROR:
  987. from_secret: plugin_mirror
  988. DOCKER_BUILDKIT: 1
  989. when:
  990. event:
  991. exclude:
  992. - pull_request
  993. - name: publish-rootless
  994. image: plugins/docker:latest
  995. settings:
  996. dockerfile: Dockerfile.rootless
  997. auto_tag: false
  998. tags: nightly-linux-amd64-rootless
  999. repo: gitea/gitea
  1000. build_args:
  1001. - GOPROXY=https://goproxy.io
  1002. password:
  1003. from_secret: docker_password
  1004. username:
  1005. from_secret: docker_username
  1006. environment:
  1007. PLUGIN_MIRROR:
  1008. from_secret: plugin_mirror
  1009. DOCKER_BUILDKIT: 1
  1010. when:
  1011. event:
  1012. exclude:
  1013. - pull_request
  1014. ---
  1015. kind: pipeline
  1016. name: docker-linux-amd64-release-branch
  1017. platform:
  1018. os: linux
  1019. arch: amd64
  1020. depends_on:
  1021. - testing-amd64
  1022. - testing-arm64
  1023. trigger:
  1024. ref:
  1025. - "refs/heads/release/v*"
  1026. event:
  1027. exclude:
  1028. - cron
  1029. steps:
  1030. - name: fetch-tags
  1031. image: docker:git
  1032. pull: always
  1033. commands:
  1034. - git config --global --add safe.directory /drone/src
  1035. - git fetch --tags --force
  1036. - name: publish
  1037. image: plugins/docker:latest
  1038. pull: always
  1039. settings:
  1040. auto_tag: false
  1041. tags: ${DRONE_BRANCH##release/v}-nightly-linux-amd64
  1042. repo: gitea/gitea
  1043. build_args:
  1044. - GOPROXY=https://goproxy.io
  1045. password:
  1046. from_secret: docker_password
  1047. username:
  1048. from_secret: docker_username
  1049. environment:
  1050. PLUGIN_MIRROR:
  1051. from_secret: plugin_mirror
  1052. DOCKER_BUILDKIT: 1
  1053. when:
  1054. event:
  1055. exclude:
  1056. - pull_request
  1057. - name: publish-rootless
  1058. image: plugins/docker:latest
  1059. settings:
  1060. dockerfile: Dockerfile.rootless
  1061. auto_tag: false
  1062. tags: ${DRONE_BRANCH##release/v}-nightlf-linux-amd64-rootless
  1063. repo: gitea/gitea
  1064. build_args:
  1065. - GOPROXY=https://goproxy.io
  1066. password:
  1067. from_secret: docker_password
  1068. username:
  1069. from_secret: docker_username
  1070. environment:
  1071. PLUGIN_MIRROR:
  1072. from_secret: plugin_mirror
  1073. DOCKER_BUILDKIT: 1
  1074. when:
  1075. event:
  1076. exclude:
  1077. - pull_request
  1078. ---
  1079. kind: pipeline
  1080. type: docker
  1081. name: docker-linux-amd64-dry-run
  1082. platform:
  1083. os: linux
  1084. arch: arm64
  1085. depends_on:
  1086. - compliance
  1087. trigger:
  1088. ref:
  1089. - "refs/pull/**"
  1090. paths:
  1091. exclude:
  1092. - docs/**
  1093. steps:
  1094. - name: dryrun
  1095. image: plugins/docker:latest
  1096. pull: always
  1097. settings:
  1098. dry_run: true
  1099. repo: gitea/gitea
  1100. tags: linux-arm64
  1101. build_args:
  1102. - GOPROXY=https://goproxy.io
  1103. environment:
  1104. PLUGIN_MIRROR:
  1105. from_secret: plugin_mirror
  1106. DOCKER_BUILDKIT: 1
  1107. when:
  1108. event:
  1109. - pull_request
  1110. ---
  1111. kind: pipeline
  1112. type: docker
  1113. name: docker-linux-arm64-release-version
  1114. platform:
  1115. os: linux
  1116. arch: arm64
  1117. depends_on:
  1118. - testing-amd64
  1119. - testing-arm64
  1120. trigger:
  1121. ref:
  1122. include:
  1123. - "refs/tags/**"
  1124. exclude:
  1125. - "refs/tags/**-rc*"
  1126. event:
  1127. exclude:
  1128. - cron
  1129. steps:
  1130. - name: fetch-tags
  1131. image: docker:git
  1132. pull: always
  1133. commands:
  1134. - git config --global --add safe.directory /drone/src
  1135. - git fetch --tags --force
  1136. - name: publish
  1137. image: plugins/docker:latest
  1138. pull: always
  1139. settings:
  1140. auto_tag: true
  1141. auto_tag_suffix: linux-arm64
  1142. repo: gitea/gitea
  1143. build_args:
  1144. - GOPROXY=https://goproxy.io
  1145. password:
  1146. from_secret: docker_password
  1147. username:
  1148. from_secret: docker_username
  1149. environment:
  1150. PLUGIN_MIRROR:
  1151. from_secret: plugin_mirror
  1152. DOCKER_BUILDKIT: 1
  1153. when:
  1154. event:
  1155. exclude:
  1156. - pull_request
  1157. - name: publish-rootless
  1158. image: plugins/docker:latest
  1159. settings:
  1160. dockerfile: Dockerfile.rootless
  1161. auto_tag: true
  1162. auto_tag_suffix: linux-arm64-rootless
  1163. repo: gitea/gitea
  1164. build_args:
  1165. - GOPROXY=https://goproxy.io
  1166. password:
  1167. from_secret: docker_password
  1168. username:
  1169. from_secret: docker_username
  1170. environment:
  1171. PLUGIN_MIRROR:
  1172. from_secret: plugin_mirror
  1173. DOCKER_BUILDKIT: 1
  1174. when:
  1175. event:
  1176. exclude:
  1177. - pull_request
  1178. ---
  1179. kind: pipeline
  1180. type: docker
  1181. name: docker-linux-arm64-release-candidate-version
  1182. platform:
  1183. os: linux
  1184. arch: arm64
  1185. depends_on:
  1186. - testing-amd64
  1187. - testing-arm64
  1188. trigger:
  1189. ref:
  1190. - "refs/tags/**-rc*"
  1191. event:
  1192. exclude:
  1193. - cron
  1194. steps:
  1195. - name: fetch-tags
  1196. image: docker:git
  1197. pull: always
  1198. commands:
  1199. - git config --global --add safe.directory /drone/src
  1200. - git fetch --tags --force
  1201. - name: publish
  1202. image: plugins/docker:latest
  1203. pull: always
  1204. settings:
  1205. tags: ${DRONE_TAG##v}-linux-arm64
  1206. repo: gitea/gitea
  1207. build_args:
  1208. - GOPROXY=https://goproxy.io
  1209. password:
  1210. from_secret: docker_password
  1211. username:
  1212. from_secret: docker_username
  1213. environment:
  1214. PLUGIN_MIRROR:
  1215. from_secret: plugin_mirror
  1216. DOCKER_BUILDKIT: 1
  1217. when:
  1218. event:
  1219. exclude:
  1220. - pull_request
  1221. - name: publish-rootless
  1222. image: plugins/docker:latest
  1223. settings:
  1224. dockerfile: Dockerfile.rootless
  1225. tags: ${DRONE_TAG##v}-linux-arm64-rootless
  1226. repo: gitea/gitea
  1227. build_args:
  1228. - GOPROXY=https://goproxy.io
  1229. password:
  1230. from_secret: docker_password
  1231. username:
  1232. from_secret: docker_username
  1233. environment:
  1234. PLUGIN_MIRROR:
  1235. from_secret: plugin_mirror
  1236. DOCKER_BUILDKIT: 1
  1237. when:
  1238. event:
  1239. exclude:
  1240. - pull_request
  1241. ---
  1242. kind: pipeline
  1243. type: docker
  1244. name: docker-linux-arm64-release
  1245. platform:
  1246. os: linux
  1247. arch: arm64
  1248. depends_on:
  1249. - testing-amd64
  1250. - testing-arm64
  1251. trigger:
  1252. ref:
  1253. - refs/heads/main
  1254. event:
  1255. exclude:
  1256. - cron
  1257. steps:
  1258. - name: fetch-tags
  1259. image: docker:git
  1260. pull: always
  1261. commands:
  1262. - git config --global --add safe.directory /drone/src
  1263. - git fetch --tags --force
  1264. - name: publish
  1265. image: plugins/docker:latest
  1266. pull: always
  1267. settings:
  1268. auto_tag: false
  1269. tags: nightly-linux-arm64
  1270. repo: gitea/gitea
  1271. build_args:
  1272. - GOPROXY=https://goproxy.io
  1273. password:
  1274. from_secret: docker_password
  1275. username:
  1276. from_secret: docker_username
  1277. environment:
  1278. PLUGIN_MIRROR:
  1279. from_secret: plugin_mirror
  1280. DOCKER_BUILDKIT: 1
  1281. when:
  1282. event:
  1283. exclude:
  1284. - pull_request
  1285. - name: publish-rootless
  1286. image: plugins/docker:latest
  1287. settings:
  1288. dockerfile: Dockerfile.rootless
  1289. auto_tag: false
  1290. tags: nightly-linux-arm64-rootless
  1291. repo: gitea/gitea
  1292. build_args:
  1293. - GOPROXY=https://goproxy.io
  1294. password:
  1295. from_secret: docker_password
  1296. username:
  1297. from_secret: docker_username
  1298. environment:
  1299. PLUGIN_MIRROR:
  1300. from_secret: plugin_mirror
  1301. DOCKER_BUILDKIT: 1
  1302. when:
  1303. event:
  1304. exclude:
  1305. - pull_request
  1306. ---
  1307. kind: pipeline
  1308. name: docker-linux-arm64-release-branch
  1309. platform:
  1310. os: linux
  1311. arch: arm64
  1312. depends_on:
  1313. - testing-amd64
  1314. - testing-arm64
  1315. trigger:
  1316. ref:
  1317. - "refs/heads/release/v*"
  1318. event:
  1319. exclude:
  1320. - cron
  1321. steps:
  1322. - name: fetch-tags
  1323. image: docker:git
  1324. pull: always
  1325. commands:
  1326. - git config --global --add safe.directory /drone/src
  1327. - git fetch --tags --force
  1328. - name: publish
  1329. image: plugins/docker:latest
  1330. pull: always
  1331. settings:
  1332. auto_tag: false
  1333. tags: ${DRONE_BRANCH##release/v}-nightly-linux-arm64
  1334. repo: gitea/gitea
  1335. build_args:
  1336. - GOPROXY=https://goproxy.io
  1337. password:
  1338. from_secret: docker_password
  1339. username:
  1340. from_secret: docker_username
  1341. environment:
  1342. PLUGIN_MIRROR:
  1343. from_secret: plugin_mirror
  1344. DOCKER_BUILDKIT: 1
  1345. when:
  1346. event:
  1347. exclude:
  1348. - pull_request
  1349. - name: publish-rootless
  1350. image: plugins/docker:latest
  1351. settings:
  1352. dockerfile: Dockerfile.rootless
  1353. auto_tag: false
  1354. tags: ${DRONE_BRANCH##release/v}-nightly-linux-arm64-rootless
  1355. repo: gitea/gitea
  1356. build_args:
  1357. - GOPROXY=https://goproxy.io
  1358. password:
  1359. from_secret: docker_password
  1360. username:
  1361. from_secret: docker_username
  1362. environment:
  1363. PLUGIN_MIRROR:
  1364. from_secret: plugin_mirror
  1365. DOCKER_BUILDKIT: 1
  1366. when:
  1367. event:
  1368. exclude:
  1369. - pull_request
  1370. ---
  1371. kind: pipeline
  1372. type: docker
  1373. name: docker-manifest-version
  1374. platform:
  1375. os: linux
  1376. arch: amd64
  1377. steps:
  1378. - name: manifest-rootless
  1379. image: plugins/manifest
  1380. pull: always
  1381. settings:
  1382. auto_tag: true
  1383. ignore_missing: true
  1384. spec: docker/manifest.rootless.tmpl
  1385. password:
  1386. from_secret: docker_password
  1387. username:
  1388. from_secret: docker_username
  1389. - name: manifest
  1390. image: plugins/manifest
  1391. settings:
  1392. auto_tag: true
  1393. ignore_missing: true
  1394. spec: docker/manifest.tmpl
  1395. password:
  1396. from_secret: docker_password
  1397. username:
  1398. from_secret: docker_username
  1399. trigger:
  1400. ref:
  1401. - "refs/tags/**"
  1402. event:
  1403. exclude:
  1404. - cron
  1405. depends_on:
  1406. - docker-linux-amd64-release-version
  1407. - docker-linux-amd64-release-candidate-version
  1408. - docker-linux-arm64-release-version
  1409. - docker-linux-arm64-release-candidate-version
  1410. ---
  1411. kind: pipeline
  1412. type: docker
  1413. name: docker-manifest
  1414. platform:
  1415. os: linux
  1416. arch: amd64
  1417. steps:
  1418. - name: manifest-rootless
  1419. pull: always
  1420. image: plugins/manifest
  1421. pull: always
  1422. settings:
  1423. auto_tag: false
  1424. ignore_missing: true
  1425. spec: docker/manifest.rootless.tmpl
  1426. password:
  1427. from_secret: docker_password
  1428. username:
  1429. from_secret: docker_username
  1430. - name: manifest
  1431. image: plugins/manifest
  1432. settings:
  1433. auto_tag: false
  1434. ignore_missing: true
  1435. spec: docker/manifest.tmpl
  1436. password:
  1437. from_secret: docker_password
  1438. username:
  1439. from_secret: docker_username
  1440. trigger:
  1441. ref:
  1442. - refs/heads/main
  1443. - "refs/heads/release/v*"
  1444. event:
  1445. exclude:
  1446. - cron
  1447. depends_on:
  1448. - docker-linux-amd64-release
  1449. - docker-linux-arm64-release
  1450. - docker-linux-amd64-release-branch
  1451. - docker-linux-arm64-release-branch
  1452. ---
  1453. kind: pipeline
  1454. type: docker
  1455. name: notifications
  1456. platform:
  1457. os: linux
  1458. arch: arm64
  1459. clone:
  1460. disable: true
  1461. trigger:
  1462. branch:
  1463. - main
  1464. - "release/*"
  1465. event:
  1466. - push
  1467. - tag
  1468. status:
  1469. - success
  1470. - failure
  1471. depends_on:
  1472. - testing-amd64
  1473. - testing-arm64
  1474. - release-version
  1475. - release-latest
  1476. - docker-linux-amd64-release
  1477. - docker-linux-arm64-release
  1478. - docker-linux-amd64-release-version
  1479. - docker-linux-arm64-release-version
  1480. - docker-linux-amd64-release-candidate-version
  1481. - docker-linux-arm64-release-candidate-version
  1482. - docker-linux-amd64-release-branch
  1483. - docker-linux-arm64-release-branch
  1484. - docker-manifest
  1485. - docker-manifest-version
  1486. - docs
  1487. steps:
  1488. - name: discord
  1489. image: appleboy/drone-discord:1.2.4
  1490. pull: always
  1491. settings:
  1492. 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"
  1493. webhook_id:
  1494. from_secret: discord_webhook_id
  1495. webhook_token:
  1496. from_secret: discord_webhook_token