- ---
- 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:14
- commands:
- - make node_modules
-
- - name: lint-frontend
- pull: always
- image: node:14
- 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:14
- 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:14
- 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
-
- - name: minio
- image: minio/minio:RELEASE.2020-05-16T01-33-21Z
- commands:
- - minio server /data
- environment:
- MINIO_ACCESS_KEY: 123456
- MINIO_SECRET_KEY: 12345678
-
- 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
- TEST_INDEXER_CODE_ES_URL: "http://elastic:changeme@elasticsearch:9200"
- 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
- pull: always
- image: techknowlogick/xgo:go-1.15.x
- commands:
- - curl -sL https://deb.nodesource.com/setup_14.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-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:
- - curl -sL https://deb.nodesource.com/setup_14.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
|