mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-23 07:43:18 -05:00
d285b5d35a
* Add 'checks' Make and CI tasks Introduce new "checks" targets that perform tasks that we've been piling onto the linting tasks. This will make the linter tasks faster and hopefully encourage some users to use them locally. * add checks to --help Co-authored-by: techknowlogick <techknowlogick@gitea.io>
834 lines
17 KiB
YAML
834 lines
17 KiB
YAML
---
|
|
kind: pipeline
|
|
name: compliance
|
|
|
|
platform:
|
|
os: linux
|
|
arch: arm64
|
|
|
|
workspace:
|
|
base: /go
|
|
path: src/code.gitea.io/gitea
|
|
|
|
steps:
|
|
- name: deps-frontend
|
|
pull: always
|
|
image: node:12
|
|
commands:
|
|
- make node_modules
|
|
|
|
- name: lint-frontend
|
|
pull: always
|
|
image: node:12
|
|
commands:
|
|
- make lint-frontend
|
|
depends_on: [deps-frontend]
|
|
|
|
- name: lint-backend
|
|
pull: always
|
|
image: golang:1.15
|
|
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
|
|
|
|
- name: checks-frontend
|
|
pull: always
|
|
image: node:12
|
|
commands:
|
|
- make checks-frontend
|
|
depends_on: [deps-frontend]
|
|
|
|
- name: checks-backend
|
|
pull: always
|
|
image: golang:1.14
|
|
commands:
|
|
- make checks-backend
|
|
depends_on: [lint-backend]
|
|
|
|
- name: build-frontend
|
|
pull: always
|
|
image: node:10 # this step is kept at the lowest version of node that we support
|
|
commands:
|
|
- make frontend
|
|
depends_on: [lint-frontend]
|
|
|
|
- name: build-backend-no-gcc
|
|
pull: always
|
|
image: golang:1.12 # this step is kept as the lowest version of golang that we support
|
|
environment:
|
|
GO111MODULE: on
|
|
GOPROXY: off
|
|
commands:
|
|
- go build -mod=vendor -o gitea_no_gcc # test if build succeeds without the sqlite tag
|
|
depends_on: [checks-backend]
|
|
|
|
- name: build-backend-arm64
|
|
pull: always
|
|
image: golang:1.15
|
|
environment:
|
|
GO111MODULE: on
|
|
GOPROXY: off
|
|
GOOS: linux
|
|
GOARCH: arm64
|
|
TAGS: bindata
|
|
commands:
|
|
- make backend # test cross compile
|
|
- rm ./gitea # clean
|
|
depends_on: [checks-backend]
|
|
|
|
- name: build-backend-386
|
|
pull: always
|
|
image: golang:1.15
|
|
environment:
|
|
GO111MODULE: on
|
|
GOPROXY: off
|
|
GOOS: linux
|
|
GOARCH: 386
|
|
commands:
|
|
- go build -mod=vendor -o gitea_linux_386 # test if compatible with 32 bit
|
|
depends_on: [checks-backend]
|
|
|
|
---
|
|
kind: pipeline
|
|
name: testing-amd64
|
|
|
|
platform:
|
|
os: linux
|
|
arch: amd64
|
|
|
|
depends_on:
|
|
- compliance
|
|
|
|
workspace:
|
|
base: /go
|
|
path: src/code.gitea.io/gitea
|
|
|
|
services:
|
|
- name: mysql
|
|
pull: default
|
|
image: mysql:5.7
|
|
environment:
|
|
MYSQL_ALLOW_EMPTY_PASSWORD: yes
|
|
MYSQL_DATABASE: test
|
|
GOPROXY: off
|
|
TAGS: bindata sqlite sqlite_unlock_notify
|
|
GITLAB_READ_TOKEN:
|
|
from_secret: gitlab_read_token
|
|
depends_on:
|
|
- build
|
|
when:
|
|
branch:
|
|
- master
|
|
event:
|
|
- push
|
|
- pull_request
|
|
|
|
- name: mysql8
|
|
pull: default
|
|
image: mysql:8.0
|
|
environment:
|
|
MYSQL_ALLOW_EMPTY_PASSWORD: yes
|
|
MYSQL_DATABASE: testgitea
|
|
|
|
- name: mssql
|
|
pull: default
|
|
image: mcr.microsoft.com/mssql/server:latest
|
|
environment:
|
|
ACCEPT_EULA: Y
|
|
MSSQL_PID: Standard
|
|
SA_PASSWORD: MwantsaSecurePassword1
|
|
|
|
- name: ldap
|
|
pull: default
|
|
image: gitea/test-openldap:latest
|
|
|
|
- name: elasticsearch
|
|
pull: default
|
|
environment:
|
|
discovery.type: single-node
|
|
image: elasticsearch:7.5.0
|
|
|
|
steps:
|
|
- name: fetch-tags
|
|
pull: default
|
|
image: docker:git
|
|
commands:
|
|
- git fetch --tags --force
|
|
when:
|
|
event:
|
|
exclude:
|
|
- pull_request
|
|
|
|
- name: build
|
|
pull: always
|
|
image: golang:1.15
|
|
commands:
|
|
- make 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
|
|
|
|
- name: tag-pre-condition
|
|
pull: always
|
|
image: drone/git
|
|
commands:
|
|
- git update-ref refs/heads/tag_test ${DRONE_COMMIT_SHA}
|
|
|
|
- name: unit-test
|
|
pull: always
|
|
image: golang:1.15
|
|
commands:
|
|
- make unit-test-coverage test-check
|
|
environment:
|
|
GOPROXY: off
|
|
TAGS: bindata sqlite sqlite_unlock_notify
|
|
GITHUB_READ_TOKEN:
|
|
from_secret: github_read_token
|
|
|
|
- name: test-mysql
|
|
pull: always
|
|
image: golang:1.15
|
|
commands:
|
|
- "curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash"
|
|
- apt-get install -y git-lfs
|
|
- make test-mysql-migration integration-test-coverage
|
|
environment:
|
|
GOPROXY: off
|
|
TAGS: bindata
|
|
TEST_LDAP: 1
|
|
USE_REPO_TEST_DIR: 1
|
|
depends_on:
|
|
- build
|
|
|
|
- name: test-mysql8
|
|
pull: always
|
|
image: golang:1.15
|
|
commands:
|
|
- "curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash"
|
|
- apt-get install -y git-lfs
|
|
- timeout -s ABRT 40m make test-mysql8-migration test-mysql8
|
|
environment:
|
|
GOPROXY: off
|
|
TAGS: bindata
|
|
TEST_LDAP: 1
|
|
USE_REPO_TEST_DIR: 1
|
|
depends_on:
|
|
- build
|
|
|
|
- name: test-mssql
|
|
pull: always
|
|
image: golang:1.15
|
|
commands:
|
|
- "curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash"
|
|
- apt-get install -y git-lfs
|
|
- make test-mssql-migration test-mssql
|
|
environment:
|
|
GOPROXY: off
|
|
TAGS: bindata
|
|
TEST_LDAP: 1
|
|
USE_REPO_TEST_DIR: 1
|
|
depends_on:
|
|
- build
|
|
|
|
- name: generate-coverage
|
|
pull: always
|
|
image: golang:1.15
|
|
commands:
|
|
- make coverage
|
|
environment:
|
|
GOPROXY: off
|
|
TAGS: bindata
|
|
depends_on:
|
|
- unit-test
|
|
- test-mysql
|
|
when:
|
|
branch:
|
|
- master
|
|
event:
|
|
- push
|
|
- pull_request
|
|
|
|
- name: coverage-codecov
|
|
pull: always
|
|
image: plugins/codecov
|
|
settings:
|
|
files:
|
|
- coverage.all
|
|
token:
|
|
from_secret: codecov_token
|
|
depends_on:
|
|
- generate-coverage
|
|
when:
|
|
branch:
|
|
- master
|
|
event:
|
|
- push
|
|
- pull_request
|
|
|
|
---
|
|
kind: pipeline
|
|
name: testing-arm64
|
|
|
|
platform:
|
|
os: linux
|
|
arch: arm64
|
|
|
|
depends_on:
|
|
- compliance
|
|
|
|
workspace:
|
|
base: /go
|
|
path: src/code.gitea.io/gitea
|
|
|
|
services:
|
|
- name: pgsql
|
|
pull: default
|
|
image: postgres:9.5
|
|
environment:
|
|
POSTGRES_DB: test
|
|
POSTGRES_PASSWORD: postgres
|
|
|
|
- name: ldap
|
|
pull: default
|
|
image: gitea/test-openldap:latest
|
|
|
|
steps:
|
|
- name: fetch-tags
|
|
pull: default
|
|
image: docker:git
|
|
commands:
|
|
- git fetch --tags --force
|
|
when:
|
|
event:
|
|
exclude:
|
|
- pull_request
|
|
|
|
- name: build
|
|
pull: always
|
|
image: golang:1.15
|
|
commands:
|
|
- make 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
|
|
|
|
- name: test-sqlite
|
|
pull: always
|
|
image: golang:1.15
|
|
commands:
|
|
- "curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash"
|
|
- apt-get install -y git-lfs
|
|
- timeout -s ABRT 40m make test-sqlite-migration test-sqlite
|
|
environment:
|
|
GOPROXY: off
|
|
TAGS: bindata
|
|
USE_REPO_TEST_DIR: 1
|
|
depends_on:
|
|
- build
|
|
|
|
- name: test-pgsql
|
|
pull: always
|
|
image: golang:1.15
|
|
commands:
|
|
- "curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash"
|
|
- apt-get install -y git-lfs
|
|
- timeout -s ABRT 40m make test-pgsql-migration test-pgsql
|
|
environment:
|
|
GOPROXY: off
|
|
TAGS: bindata
|
|
TEST_LDAP: 1
|
|
USE_REPO_TEST_DIR: 1
|
|
depends_on:
|
|
- build
|
|
|
|
---
|
|
kind: pipeline
|
|
name: translations
|
|
|
|
platform:
|
|
os: linux
|
|
arch: arm64
|
|
|
|
workspace:
|
|
base: /go
|
|
path: src/code.gitea.io/gitea
|
|
|
|
trigger:
|
|
branch:
|
|
- master
|
|
event:
|
|
- push
|
|
|
|
steps:
|
|
- name: download
|
|
pull: always
|
|
image: jonasfranz/crowdin
|
|
settings:
|
|
download: true
|
|
export_dir: options/locale/
|
|
ignore_branch: true
|
|
project_identifier: gitea
|
|
environment:
|
|
CROWDIN_KEY:
|
|
from_secret: crowdin_key
|
|
|
|
- name: update
|
|
pull: default
|
|
image: alpine:3.12
|
|
commands:
|
|
- ./build/update-locales.sh
|
|
|
|
- name: push
|
|
pull: always
|
|
image: appleboy/drone-git-push
|
|
settings:
|
|
author_email: "teabot@gitea.io"
|
|
author_name: GiteaBot
|
|
commit: true
|
|
commit_message: "[skip ci] Updated translations via Crowdin"
|
|
remote: "git@github.com:go-gitea/gitea.git"
|
|
environment:
|
|
GIT_PUSH_SSH_KEY:
|
|
from_secret: git_push_ssh_key
|
|
|
|
- name: upload_translations
|
|
pull: always
|
|
image: jonasfranz/crowdin
|
|
settings:
|
|
files:
|
|
locale_en-US.ini: options/locale/locale_en-US.ini
|
|
ignore_branch: true
|
|
project_identifier: gitea
|
|
environment:
|
|
CROWDIN_KEY:
|
|
from_secret: crowdin_key
|
|
|
|
---
|
|
kind: pipeline
|
|
name: release-latest
|
|
|
|
platform:
|
|
os: linux
|
|
arch: amd64
|
|
|
|
workspace:
|
|
base: /go
|
|
path: src/code.gitea.io/gitea
|
|
|
|
trigger:
|
|
branch:
|
|
- master
|
|
- "release/*"
|
|
event:
|
|
- push
|
|
|
|
depends_on:
|
|
- testing-amd64
|
|
- testing-arm64
|
|
- translations
|
|
|
|
steps:
|
|
- name: fetch-tags
|
|
pull: default
|
|
image: docker:git
|
|
commands:
|
|
- git fetch --tags --force
|
|
|
|
- name: static-windows
|
|
pull: always
|
|
image: techknowlogick/xgo:go-1.14.x
|
|
commands:
|
|
- apt update && apt -y install curl
|
|
- curl -sL https://deb.nodesource.com/setup_12.x | bash - && apt -y install nodejs
|
|
- export PATH=$PATH:$GOPATH/bin
|
|
- make frontend generate release-windows
|
|
environment:
|
|
GOPROXY: https://goproxy.cn # proxy.golang.org is blocked in China, this proxy is not
|
|
TAGS: bindata sqlite sqlite_unlock_notify
|
|
|
|
- name: static
|
|
pull: always
|
|
image: techknowlogick/xgo:go-1.15.x
|
|
commands:
|
|
- make release-linux release-darwin release-copy release-compress release-sources release-docs release-check
|
|
environment:
|
|
GOPROXY: https://goproxy.cn # proxy.golang.org is blocked in China, this proxy is not
|
|
TAGS: bindata sqlite sqlite_unlock_notify
|
|
|
|
- name: gpg-sign
|
|
pull: always
|
|
image: plugins/gpgsign:1
|
|
settings:
|
|
detach_sign: true
|
|
excludes:
|
|
- "dist/release/*.sha256"
|
|
files:
|
|
- "dist/release/*"
|
|
environment:
|
|
GPGSIGN_KEY:
|
|
from_secret: gpgsign_key
|
|
GPGSIGN_PASSPHRASE:
|
|
from_secret: gpgsign_passphrase
|
|
|
|
- name: release-branch
|
|
pull: always
|
|
image: plugins/s3:1
|
|
settings:
|
|
acl: public-read
|
|
bucket: releases
|
|
endpoint: https://storage.gitea.io
|
|
path_style: true
|
|
source: "dist/release/*"
|
|
strip_prefix: dist/release/
|
|
target: "/gitea/${DRONE_BRANCH##release/v}"
|
|
environment:
|
|
AWS_ACCESS_KEY_ID:
|
|
from_secret: aws_access_key_id
|
|
AWS_SECRET_ACCESS_KEY:
|
|
from_secret: aws_secret_access_key
|
|
when:
|
|
branch:
|
|
- "release/*"
|
|
event:
|
|
- push
|
|
|
|
- name: release-master
|
|
pull: always
|
|
image: plugins/s3:1
|
|
settings:
|
|
acl: public-read
|
|
bucket: releases
|
|
endpoint: https://storage.gitea.io
|
|
path_style: true
|
|
source: "dist/release/*"
|
|
strip_prefix: dist/release/
|
|
target: /gitea/master
|
|
environment:
|
|
AWS_ACCESS_KEY_ID:
|
|
from_secret: aws_access_key_id
|
|
AWS_SECRET_ACCESS_KEY:
|
|
from_secret: aws_secret_access_key
|
|
when:
|
|
branch:
|
|
- master
|
|
event:
|
|
- push
|
|
|
|
---
|
|
kind: pipeline
|
|
name: release-version
|
|
|
|
platform:
|
|
os: linux
|
|
arch: amd64
|
|
|
|
workspace:
|
|
base: /go
|
|
path: src/code.gitea.io/gitea
|
|
|
|
trigger:
|
|
event:
|
|
- tag
|
|
|
|
depends_on:
|
|
- testing-arm64
|
|
- testing-amd64
|
|
|
|
steps:
|
|
- name: fetch-tags
|
|
pull: default
|
|
image: docker:git
|
|
commands:
|
|
- git fetch --tags --force
|
|
|
|
- name: static
|
|
pull: always
|
|
image: techknowlogick/xgo:go-1.15.x
|
|
commands:
|
|
- apt update && apt -y install curl
|
|
- curl -sL https://deb.nodesource.com/setup_12.x | bash - && apt -y install nodejs
|
|
- export PATH=$PATH:$GOPATH/bin
|
|
- make release
|
|
environment:
|
|
GOPROXY: https://goproxy.cn # proxy.golang.org is blocked in China, this proxy is not
|
|
TAGS: bindata sqlite sqlite_unlock_notify
|
|
|
|
- name: gpg-sign
|
|
pull: always
|
|
image: plugins/gpgsign:1
|
|
settings:
|
|
detach_sign: true
|
|
excludes:
|
|
- "dist/release/*.sha256"
|
|
files:
|
|
- "dist/release/*"
|
|
environment:
|
|
GPGSIGN_KEY:
|
|
from_secret: gpgsign_key
|
|
GPGSIGN_PASSPHRASE:
|
|
from_secret: gpgsign_passphrase
|
|
|
|
- name: release-tag
|
|
pull: always
|
|
image: plugins/s3:1
|
|
settings:
|
|
acl: public-read
|
|
bucket: releases
|
|
endpoint: https://storage.gitea.io
|
|
path_style: true
|
|
source: "dist/release/*"
|
|
strip_prefix: dist/release/
|
|
target: "/gitea/${DRONE_TAG##v}"
|
|
environment:
|
|
AWS_ACCESS_KEY_ID:
|
|
from_secret: aws_access_key_id
|
|
AWS_SECRET_ACCESS_KEY:
|
|
from_secret: aws_secret_access_key
|
|
|
|
- name: github
|
|
pull: always
|
|
image: plugins/github-release:1
|
|
settings:
|
|
files:
|
|
- "dist/release/*"
|
|
environment:
|
|
GITHUB_TOKEN:
|
|
from_secret: github_token
|
|
|
|
---
|
|
kind: pipeline
|
|
name: docs
|
|
|
|
platform:
|
|
os: linux
|
|
arch: arm64
|
|
|
|
depends_on:
|
|
- compliance
|
|
|
|
steps:
|
|
- name: build-docs
|
|
pull: always
|
|
image: plugins/hugo:latest
|
|
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
|
|
settings:
|
|
path: docs/public/
|
|
site_id: d2260bae-7861-4c02-8646-8f6440b12672
|
|
environment:
|
|
NETLIFY_TOKEN:
|
|
from_secret: netlify_token
|
|
when:
|
|
branch:
|
|
- master
|
|
event:
|
|
- push
|
|
|
|
---
|
|
kind: pipeline
|
|
name: docker-linux-amd64-release
|
|
|
|
platform:
|
|
os: linux
|
|
arch: amd64
|
|
|
|
workspace:
|
|
base: /go
|
|
path: src/code.gitea.io/gitea
|
|
|
|
depends_on:
|
|
- testing-amd64
|
|
- testing-arm64
|
|
|
|
trigger:
|
|
ref:
|
|
- refs/heads/master
|
|
- "refs/tags/**"
|
|
|
|
steps:
|
|
- name: fetch-tags
|
|
pull: default
|
|
image: docker:git
|
|
commands:
|
|
- git fetch --tags --force
|
|
|
|
- name: publish
|
|
pull: always
|
|
image: plugins/docker:linux-amd64
|
|
settings:
|
|
auto_tag: true
|
|
auto_tag_suffix: linux-amd64
|
|
repo: gitea/gitea
|
|
build_args:
|
|
- GOPROXY=off
|
|
password:
|
|
from_secret: docker_password
|
|
username:
|
|
from_secret: docker_username
|
|
when:
|
|
event:
|
|
exclude:
|
|
- pull_request
|
|
|
|
---
|
|
kind: pipeline
|
|
name: docker-linux-arm64-dry-run
|
|
|
|
platform:
|
|
os: linux
|
|
arch: arm64
|
|
|
|
workspace:
|
|
base: /go
|
|
path: src/code.gitea.io/gitea
|
|
|
|
depends_on:
|
|
- compliance
|
|
|
|
trigger:
|
|
ref:
|
|
- "refs/pull/**"
|
|
|
|
steps:
|
|
- name: dryrun
|
|
pull: always
|
|
image: plugins/docker:linux-arm64
|
|
settings:
|
|
dry_run: true
|
|
repo: gitea/gitea
|
|
tags: linux-arm64
|
|
build_args:
|
|
- GOPROXY=off
|
|
when:
|
|
event:
|
|
- pull_request
|
|
|
|
---
|
|
kind: pipeline
|
|
name: docker-linux-arm64-release
|
|
|
|
platform:
|
|
os: linux
|
|
arch: arm64
|
|
|
|
workspace:
|
|
base: /go
|
|
path: src/code.gitea.io/gitea
|
|
|
|
depends_on:
|
|
- testing-amd64
|
|
- testing-arm64
|
|
|
|
trigger:
|
|
ref:
|
|
- refs/heads/master
|
|
- "refs/tags/**"
|
|
steps:
|
|
- name: fetch-tags
|
|
pull: default
|
|
image: docker:git
|
|
commands:
|
|
- git fetch --tags --force
|
|
|
|
- name: publish
|
|
pull: always
|
|
image: plugins/docker:linux-arm64
|
|
settings:
|
|
auto_tag: true
|
|
auto_tag_suffix: linux-arm64
|
|
repo: gitea/gitea
|
|
build_args:
|
|
- GOPROXY=off
|
|
password:
|
|
from_secret: docker_password
|
|
username:
|
|
from_secret: docker_username
|
|
when:
|
|
event:
|
|
exclude:
|
|
- pull_request
|
|
|
|
---
|
|
kind: pipeline
|
|
name: docker-manifest
|
|
|
|
platform:
|
|
os: linux
|
|
arch: amd64
|
|
|
|
steps:
|
|
- name: manifest
|
|
pull: always
|
|
image: plugins/manifest
|
|
settings:
|
|
auto_tag: true
|
|
ignore_missing: true
|
|
spec: docker/manifest.tmpl
|
|
password:
|
|
from_secret: docker_password
|
|
username:
|
|
from_secret: docker_username
|
|
|
|
trigger:
|
|
ref:
|
|
- refs/heads/master
|
|
- "refs/tags/**"
|
|
|
|
depends_on:
|
|
- docker-linux-amd64-release
|
|
- docker-linux-arm64-release
|
|
|
|
---
|
|
kind: pipeline
|
|
name: notifications
|
|
|
|
platform:
|
|
os: linux
|
|
arch: arm64
|
|
|
|
clone:
|
|
disable: true
|
|
|
|
trigger:
|
|
branch:
|
|
- master
|
|
- "release/*"
|
|
event:
|
|
- push
|
|
- tag
|
|
status:
|
|
- success
|
|
- failure
|
|
|
|
depends_on:
|
|
- testing-amd64
|
|
- testing-arm64
|
|
- translations
|
|
- release-version
|
|
- release-latest
|
|
- docker-linux-amd64-release
|
|
- docker-linux-arm64-release
|
|
- docker-manifest
|
|
- docs
|
|
|
|
steps:
|
|
- name: discord
|
|
pull: always
|
|
image: appleboy/drone-discord:1.2.4
|
|
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:
|
|
from_secret: discord_webhook_id
|
|
webhook_token:
|
|
from_secret: discord_webhook_token
|