aboutsummaryrefslogtreecommitdiffstats
path: root/.drone.yml
diff options
context:
space:
mode:
authorsilverwind <me@silverwind.io>2022-02-12 08:08:53 +0100
committerGitHub <noreply@github.com>2022-02-12 07:08:53 +0000
commit2ddff74a542aa10a06d22742111603f99db46a34 (patch)
tree90fce444ad21815e1e69c7d1a7b373cd45962530 /.drone.yml
parent4e57bd1d307d20341e9ae5cdb6aeb7913bd1f59d (diff)
downloadgitea-2ddff74a542aa10a06d22742111603f99db46a34.tar.gz
gitea-2ddff74a542aa10a06d22742111603f99db46a34.zip
Reduce CI go module downloads, add make targets (#18708)
The CI currently downloads all go modules in each pipeline step because go modules reside outside the project directory. Fix this by introducing a volume for the `/go` directory [1] so modules are only downloaded once per pipeline using a new `deps-backend` make target. For completeness, I also included new `deps` and `deps-frontend` targets and the frontend one is also triggered explicitly on CI where needed. [1] https://docs.drone.io/pipeline/kubernetes/examples/language/golang/#dependencies
Diffstat (limited to '.drone.yml')
-rw-r--r--.drone.yml255
1 files changed, 194 insertions, 61 deletions
diff --git a/.drone.yml b/.drone.yml
index 10444d689f..bba8747482 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -13,12 +13,25 @@ trigger:
- tag
- pull_request
+volumes:
+ - name: deps
+ temp: {}
+
steps:
- name: deps-frontend
- pull: always
image: node:16
+ pull: always
+ commands:
+ - make deps-frontend
+
+ - name: deps-backend
+ image: golang:1.17
+ pull: always
commands:
- - make node_modules
+ - make deps-backend
+ volumes:
+ - name: deps
+ path: /go
- name: lint-frontend
image: node:16
@@ -27,17 +40,17 @@ steps:
depends_on: [deps-frontend]
- name: lint-backend
- pull: always
image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
+ pull: always
commands:
- make lint-backend
environment:
GOPROXY: https://goproxy.cn # proxy.golang.org is blocked in China, this proxy is not
GOSUMDB: sum.golang.org
TAGS: bindata sqlite sqlite_unlock_notify
+ depends_on: [deps-backend]
- name: lint-backend-windows
- pull: always
image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
commands:
- make golangci-lint vet
@@ -47,9 +60,9 @@ steps:
TAGS: bindata sqlite sqlite_unlock_notify
GOOS: windows
GOARCH: amd64
+ depends_on: [deps-backend]
- name: lint-backend-gogit
- pull: always
image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
commands:
- make lint-backend
@@ -57,6 +70,7 @@ steps:
GOPROXY: https://goproxy.cn # proxy.golang.org is blocked in China, this proxy is not
GOSUMDB: sum.golang.org
TAGS: bindata gogit sqlite sqlite_unlock_notify
+ depends_on: [deps-backend]
- name: checks-frontend
image: node:16
@@ -65,11 +79,13 @@ steps:
depends_on: [deps-frontend]
- name: checks-backend
- pull: always
image: golang:1.17
commands:
- make checks-backend
- depends_on: [lint-backend]
+ depends_on: [deps-backend]
+ volumes:
+ - name: deps
+ path: /go
- name: test-frontend
image: node:16
@@ -84,14 +100,17 @@ steps:
depends_on: [test-frontend]
- name: build-backend-no-gcc
- pull: always
image: golang:1.16 # this step is kept as the lowest version of golang that we support
+ pull: always
environment:
GO111MODULE: on
GOPROXY: https://goproxy.cn
commands:
- go build -o gitea_no_gcc # test if build succeeds without the sqlite tag
- depends_on: [checks-backend]
+ depends_on: [deps-backend, checks-backend]
+ volumes:
+ - name: deps
+ path: /go
- name: build-backend-arm64
image: golang:1.17
@@ -104,7 +123,10 @@ steps:
commands:
- make backend # test cross compile
- rm ./gitea # clean
- depends_on: [checks-backend]
+ depends_on: [deps-backend, checks-backend]
+ volumes:
+ - name: deps
+ path: /go
- name: build-backend-windows
image: golang:1.17
@@ -116,7 +138,10 @@ steps:
TAGS: bindata gogit
commands:
- go build -o gitea_windows
- depends_on: [checks-backend]
+ depends_on: [deps-backend, checks-backend]
+ volumes:
+ - name: deps
+ path: /go
- name: build-backend-386
image: golang:1.17
@@ -127,7 +152,10 @@ steps:
GOARCH: 386
commands:
- go build -o gitea_linux_386 # test if compatible with 32 bit
- depends_on: [checks-backend]
+ depends_on: [deps-backend, checks-backend]
+ volumes:
+ - name: deps
+ path: /go
---
kind: pipeline
@@ -147,21 +175,28 @@ trigger:
- tag
- pull_request
+volumes:
+ - name: deps
+ temp: {}
+
services:
- name: mysql
image: mysql:5.7
+ pull: always
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: yes
MYSQL_DATABASE: test
- name: mysql8
image: mysql:8
+ pull: always
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: yes
MYSQL_DATABASE: testgitea
- name: mssql
image: mcr.microsoft.com/mssql/server:latest
+ pull: always
environment:
ACCEPT_EULA: Y
MSSQL_PID: Standard
@@ -169,14 +204,17 @@ services:
- name: ldap
image: gitea/test-openldap:latest
+ pull: always
- name: elasticsearch
+ image: elasticsearch:7.5.0
+ pull: always
environment:
discovery.type: single-node
- image: elasticsearch:7.5.0
- name: minio
image: minio/minio:RELEASE.2021-03-12T00-00-47Z
+ pull: always
commands:
- minio server /data
environment:
@@ -186,6 +224,7 @@ services:
steps:
- name: fetch-tags
image: docker:git
+ pull: always
commands:
- git fetch --tags --force
when:
@@ -193,19 +232,28 @@ steps:
exclude:
- pull_request
- - name: tag-pre-condition
+ - name: deps-backend
+ image: golang:1.17
pull: always
+ commands:
+ - make deps-backend
+ volumes:
+ - name: deps
+ path: /go
+
+ - name: tag-pre-condition
image: drone/git
+ pull: always
commands:
- git update-ref refs/heads/tag_test ${DRONE_COMMIT_SHA}
- name: prepare-test-env
image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
+ pull: always
commands:
- ./build/test-env-prepare.sh
- name: build
- pull: always
image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
user: gitea
commands:
@@ -215,8 +263,10 @@ steps:
GOPROXY: https://goproxy.cn # proxy.golang.org is blocked in China, this proxy is not
GOSUMDB: sum.golang.org
TAGS: bindata sqlite sqlite_unlock_notify
- depends_on:
- - prepare-test-env
+ depends_on: [deps-backend, prepare-test-env]
+ volumes:
+ - name: deps
+ path: /go
- name: unit-test
image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
@@ -229,9 +279,12 @@ steps:
RACE_ENABLED: true
GITHUB_READ_TOKEN:
from_secret: github_read_token
+ depends_on: [deps-backend, prepare-test-env]
+ volumes:
+ - name: deps
+ path: /go
- name: unit-test-gogit
- pull: always
image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
user: gitea
commands:
@@ -242,6 +295,10 @@ steps:
RACE_ENABLED: true
GITHUB_READ_TOKEN:
from_secret: github_read_token
+ depends_on: [deps-backend, prepare-test-env]
+ volumes:
+ - name: deps
+ path: /go
- name: test-mysql
image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
@@ -255,8 +312,10 @@ steps:
TEST_LDAP: 1
USE_REPO_TEST_DIR: 1
TEST_INDEXER_CODE_ES_URL: "http://elastic:changeme@elasticsearch:9200"
- depends_on:
- - build
+ depends_on: [build]
+ volumes:
+ - name: deps
+ path: /go
- name: test-mysql8
image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
@@ -269,8 +328,10 @@ steps:
RACE_ENABLED: true
TEST_LDAP: 1
USE_REPO_TEST_DIR: 1
- depends_on:
- - build
+ depends_on: [build]
+ volumes:
+ - name: deps
+ path: /go
- name: test-mssql
image: gitea/test_env:linux-amd64 # https://gitea.com/gitea/test-env
@@ -283,8 +344,10 @@ steps:
RACE_ENABLED: true
TEST_LDAP: 1
USE_REPO_TEST_DIR: 1
- depends_on:
- - build
+ depends_on: [build]
+ volumes:
+ - name: deps
+ path: /go
- name: generate-coverage
image: golang:1.17
@@ -293,9 +356,7 @@ steps:
environment:
GOPROXY: https://goproxy.cn
TAGS: bindata
- depends_on:
- - unit-test
- - test-mysql
+ depends_on: [unit-test, test-mysql]
when:
branch:
- main
@@ -304,15 +365,14 @@ steps:
- pull_request
- name: coverage-codecov
- pull: always
image: woodpeckerci/plugin-codecov:next-alpine
+ pull: always
settings:
files:
- coverage.all
token:
from_secret: codecov_token
- depends_on:
- - generate-coverage
+ depends_on: [generate-coverage]
when:
branch:
- main
@@ -337,6 +397,10 @@ trigger:
- tag
- pull_request
+volumes:
+ - name: deps
+ temp: {}
+
services:
- name: pgsql
pull: default
@@ -352,6 +416,7 @@ services:
steps:
- name: fetch-tags
image: docker:git
+ pull: always
commands:
- git fetch --tags --force
when:
@@ -359,13 +424,22 @@ steps:
exclude:
- pull_request
+ - name: deps-backend
+ image: golang:1.17
+ pull: always
+ commands:
+ - make deps-backend
+ volumes:
+ - name: deps
+ path: /go
+
- name: prepare-test-env
image: gitea/test_env:linux-arm64 # https://gitea.com/gitea/test-env
+ pull: always
commands:
- ./build/test-env-prepare.sh
- name: build
- pull: always
image: gitea/test_env:linux-arm64 # https://gitea.com/gitea/test-env
user: gitea
commands:
@@ -375,8 +449,10 @@ steps:
GOPROXY: https://goproxy.cn # proxy.golang.org is blocked in China, this proxy is not
GOSUMDB: sum.golang.org
TAGS: bindata gogit sqlite sqlite_unlock_notify
- depends_on:
- - prepare-test-env
+ depends_on: [deps-backend, prepare-test-env]
+ volumes:
+ - name: deps
+ path: /go
- name: test-sqlite
image: gitea/test_env:linux-arm64 # https://gitea.com/gitea/test-env
@@ -389,8 +465,10 @@ steps:
RACE_ENABLED: true
TEST_TAGS: gogit sqlite sqlite_unlock_notify
USE_REPO_TEST_DIR: 1
- depends_on:
- - build
+ depends_on: [build]
+ volumes:
+ - name: deps
+ path: /go
- name: test-pgsql
image: gitea/test_env:linux-arm64 # https://gitea.com/gitea/test-env
@@ -404,8 +482,10 @@ steps:
TEST_TAGS: gogit
TEST_LDAP: 1
USE_REPO_TEST_DIR: 1
- depends_on:
- - build
+ depends_on: [build]
+ volumes:
+ - name: deps
+ path: /go
---
kind: pipeline
@@ -425,8 +505,8 @@ trigger:
steps:
- name: download
- pull: always
image: jonasfranz/crowdin
+ pull: always
settings:
download: true
export_dir: options/locale/
@@ -437,14 +517,14 @@ steps:
from_secret: crowdin_key
- name: update
- pull: default
image: alpine:3.13
+ pull: always
commands:
- ./build/update-locales.sh
- name: push
- pull: always
image: appleboy/drone-git-push
+ pull: always
settings:
author_email: "teabot@gitea.io"
author_name: GiteaBot
@@ -457,8 +537,8 @@ steps:
from_secret: git_push_ssh_key
- name: upload_translations
- pull: always
image: jonasfranz/crowdin
+ pull: always
settings:
files:
locale_en-US.ini: options/locale/locale_en-US.ini
@@ -488,12 +568,13 @@ trigger:
steps:
- name: download
image: golang:1.17
+ pull: always
commands:
- timeout -s ABRT 40m make generate-license generate-gitignore
- name: push
- pull: always
image: appleboy/drone-git-push
+ pull: always
settings:
author_email: "teabot@gitea.io"
author_name: GiteaBot
@@ -529,15 +610,35 @@ depends_on:
- testing-amd64
- testing-arm64
+volumes:
+ - name: deps
+ temp: {}
+
steps:
- name: fetch-tags
image: docker:git
+ pull: always
commands:
- git fetch --tags --force
- - name: static
+ - name: deps-frontend
+ image: node:16
+ pull: always
+ commands:
+ - make deps-frontend
+
+ - name: deps-backend
+ image: golang:1.17
pull: always
+ commands:
+ - make deps-backend
+ volumes:
+ - name: deps
+ path: /go
+
+ - name: static
image: techknowlogick/xgo:go-1.17.x
+ pull: always
commands:
- curl -sL https://deb.nodesource.com/setup_16.x | bash - && apt-get install -y nodejs
- export PATH=$PATH:$GOPATH/bin
@@ -545,10 +646,13 @@ steps:
environment:
GOPROXY: https://goproxy.cn # proxy.golang.org is blocked in China, this proxy is not
TAGS: bindata sqlite sqlite_unlock_notify
+ volumes:
+ - name: deps
+ path: /go
- name: gpg-sign
- pull: always
image: plugins/gpgsign:1
+ pull: always
settings:
detach_sign: true
excludes:
@@ -562,8 +666,8 @@ steps:
from_secret: gpgsign_passphrase
- name: release-branch
- pull: always
image: woodpeckerci/plugin-s3:latest
+ pull: always
settings:
acl: public-read
bucket: gitea-artifacts
@@ -624,16 +728,35 @@ depends_on:
- testing-arm64
- testing-amd64
+volumes:
+ - name: deps
+ temp: {}
+
steps:
- name: fetch-tags
- pull: default
image: docker:git
+ pull: always
commands:
- git fetch --tags --force
- - name: static
+ - name: deps-frontend
+ image: node:16
+ pull: always
+ commands:
+ - make deps-frontend
+
+ - name: deps-backend
+ image: golang:1.17
pull: always
+ commands:
+ - make deps-backend
+ volumes:
+ - name: deps
+ path: /go
+
+ - name: static
image: techknowlogick/xgo:go-1.17.x
+ pull: always
commands:
- curl -sL https://deb.nodesource.com/setup_16.x | bash - && apt-get install -y nodejs
- export PATH=$PATH:$GOPATH/bin
@@ -642,10 +765,13 @@ steps:
GOPROXY: https://goproxy.cn # proxy.golang.org is blocked in China, this proxy is not
TAGS: bindata sqlite sqlite_unlock_notify
depends_on: [fetch-tags]
+ volumes:
+ - name: deps
+ path: /go
- name: gpg-sign
- pull: always
image: plugins/gpgsign:1
+ pull: always
settings:
detach_sign: true
excludes:
@@ -660,8 +786,8 @@ steps:
depends_on: [static]
- name: release-tag
- pull: always
image: woodpeckerci/plugin-s3:latest
+ pull: always
settings:
acl: public-read
bucket: gitea-artifacts
@@ -678,8 +804,8 @@ steps:
depends_on: [gpg-sign]
- name: github
- pull: always
image: plugins/github-release:1
+ pull: always
settings:
files:
- "dist/release/*"
@@ -708,16 +834,16 @@ trigger:
steps:
- name: build-docs
- pull: always
image: plugins/hugo:latest
+ pull: always
commands:
- apk add --no-cache make bash curl
- cd docs
- make trans-copy clean build
- name: publish-docs
- pull: always
image: techknowlogick/drone-netlify:latest
+ pull: always
settings:
path: docs/public/
site_id: d2260bae-7861-4c02-8646-8f6440b12672
@@ -753,12 +879,13 @@ trigger:
steps:
- name: fetch-tags
image: docker:git
+ pull: always
commands:
- git fetch --tags --force
- name: publish
- pull: always
image: techknowlogick/drone-docker:latest
+ pull: always
settings:
auto_tag: true
auto_tag_suffix: linux-amd64
@@ -815,12 +942,13 @@ trigger:
steps:
- name: fetch-tags
image: docker:git
+ pull: always
commands:
- git fetch --tags --force
- name: publish
- pull: always
image: techknowlogick/drone-docker:latest
+ pull: always
settings:
auto_tag: false
tags: dev-linux-amd64
@@ -876,12 +1004,13 @@ trigger:
steps:
- name: fetch-tags
image: docker:git
+ pull: always
commands:
- git fetch --tags --force
- name: publish
- pull: always
image: techknowlogick/drone-docker:latest
+ pull: always
settings:
auto_tag: false
tags: ${DRONE_BRANCH##release/v}-dev-linux-amd64
@@ -933,8 +1062,8 @@ trigger:
steps:
- name: dryrun
- pull: always
image: techknowlogick/drone-docker:latest
+ pull: always
settings:
dry_run: true
repo: gitea/gitea
@@ -971,12 +1100,13 @@ trigger:
steps:
- name: fetch-tags
image: docker:git
+ pull: always
commands:
- git fetch --tags --force
- name: publish
- pull: always
image: techknowlogick/drone-docker:latest
+ pull: always
settings:
auto_tag: true
auto_tag_suffix: linux-arm64
@@ -1033,12 +1163,13 @@ trigger:
steps:
- name: fetch-tags
image: docker:git
+ pull: always
commands:
- git fetch --tags --force
- name: publish
- pull: always
image: techknowlogick/drone-docker:latest
+ pull: always
settings:
auto_tag: false
tags: dev-linux-arm64
@@ -1094,12 +1225,13 @@ trigger:
steps:
- name: fetch-tags
image: docker:git
+ pull: always
commands:
- git fetch --tags --force
- name: publish
- pull: always
image: techknowlogick/drone-docker:latest
+ pull: always
settings:
auto_tag: false
tags: ${DRONE_BRANCH##release/v}-dev-linux-arm64
@@ -1144,8 +1276,8 @@ platform:
steps:
- name: manifest-rootless
- pull: always
image: plugins/manifest
+ pull: always
settings:
auto_tag: true
ignore_missing: true
@@ -1190,6 +1322,7 @@ steps:
- name: manifest-rootless
pull: always
image: plugins/manifest
+ pull: always
settings:
auto_tag: false
ignore_missing: true
@@ -1264,8 +1397,8 @@ depends_on:
steps:
- name: discord
- pull: always
image: appleboy/drone-discord:1.2.4
+ pull: always
settings:
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"
webhook_id: