--- kind: pipeline name: init platform: os: linux arch: amd64 workspace: base: /go path: src/code.gitea.io/gitea steps: - name: fetch-tags pull: default image: docker:git commands: - git fetch --tags --force when: event: exclude: - pull_request - name: tag-pre-condition pull: always image: alpine/git commands: - git update-ref refs/heads/tag_test ${DRONE_COMMIT_SHA} when: event: - tag --- kind: pipeline name: build platform: os: linux arch: amd64 workspace: base: /go path: src/code.gitea.io/gitea depends_on: - init steps: - name: pre-build pull: always image: node:10 # this step is kept at the lowest version of node that we support commands: - make css - make js - name: build-without-gcc pull: always image: golang:1.11 # this step is kept as the lowest version of golang that we support environment: GO111MODULE: on GOPROXY: off commands: - curl -sL https://deb.nodesource.com/setup_12.x | bash - && apt -y install nodejs - go build -mod=vendor -o gitea_no_gcc # test if build succeeds without the sqlite tag - name: build-linux-386 pull: always image: golang:1.13 environment: GO111MODULE: on GOPROXY: off GOOS: linux GOARCH: 386 commands: - curl -sL https://deb.nodesource.com/setup_12.x | bash - && apt -y install nodejs - go build -mod=vendor -o gitea_linux_386 # test if compatible with 32 bit - name: generate-build pull: always image: golang:1.13 commands: - curl -sL https://deb.nodesource.com/setup_12.x | bash - && apt -y install nodejs - make clean - make golangci-lint - make revive - make swagger-check - make swagger-validate - make test-vendor - make build 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 --- kind: pipeline name: testing platform: os: linux arch: amd64 workspace: base: /go path: src/code.gitea.io/gitea depends_on: - init services: - name: mysql pull: default image: mysql:5.7 environment: MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_DATABASE: test - name: mysql8 pull: default image: mysql:8.0 environment: MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_DATABASE: testgitea - name: pgsql pull: default image: postgres:9.5 environment: POSTGRES_DB: test - name: mssql pull: default image: microsoft/mssql-server-linux:latest environment: ACCEPT_EULA: Y MSSQL_PID: Standard SA_PASSWORD: MwantsaSecurePassword1 - name: ldap pull: default image: gitea/test-openldap:latest steps: - name: unit-test pull: always image: golang:1.13 commands: - make unit-test-coverage environment: GOPROXY: off TAGS: bindata sqlite sqlite_unlock_notify when: branch: - master event: - push - pull_request - name: release-test pull: always image: golang:1.13 commands: - make test environment: GOPROXY: off TAGS: bindata sqlite sqlite_unlock_notify when: branch: - "release/*" event: - push - pull_request - name: tag-test pull: always image: golang:1.13 commands: - make test environment: GOPROXY: off TAGS: bindata when: event: - tag - name: test-sqlite pull: always image: golang:1.13 commands: - "curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash" - apt-get install -y git-lfs - timeout -s ABRT 20m make test-sqlite-migration - timeout -s ABRT 20m make test-sqlite environment: GOPROXY: off TAGS: bindata - name: test-mysql pull: always image: golang:1.13 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 - make integration-test-coverage environment: GOPROXY: off TAGS: bindata TEST_LDAP: 1 when: branch: - master event: - push - pull_request - name: tag-test-mysql pull: always image: golang:1.13 commands: - "curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash" - apt-get install -y git-lfs - timeout -s ABRT 20m make test-mysql-migration - timeout -s ABRT 20m make test-mysql environment: GOPROXY: off TAGS: bindata TEST_LDAP: 1 when: event: - tag - name: test-mysql8 pull: always image: golang:1.13 commands: - "curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash" - apt-get install -y git-lfs - timeout -s ABRT 20m make test-mysql8-migration - timeout -s ABRT 20m make test-mysql8 environment: GOPROXY: off TAGS: bindata TEST_LDAP: 1 - name: test-pgsql pull: always image: golang:1.13 commands: - "curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash" - apt-get install -y git-lfs - timeout -s ABRT 20m make test-pgsql-migration - timeout -s ABRT 20m make test-pgsql environment: GOPROXY: off TAGS: bindata TEST_LDAP: 1 - name: test-mssql pull: always image: golang:1.13 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 - make test-mssql environment: GOPROXY: off TAGS: bindata TEST_LDAP: 1 - name: generate-coverage pull: always image: golang:1.13 commands: - make coverage environment: GOPROXY: off TAGS: bindata depends_on: - unit-test - test-mysql when: branch: - master event: - push - pull_request - name: coverage pull: always image: robertstettner/drone-codecov settings: files: - coverage.all environment: CODECOV_TOKEN: from_secret: codecov_token depends_on: - generate-coverage when: branch: - master event: - push - pull_request --- kind: pipeline name: translations platform: os: linux arch: amd64 workspace: base: /go path: src/code.gitea.io/gitea trigger: branch: - master event: - push depends_on: - init 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.11 commands: - mv ./options/locale/locale_en-US.ini ./options/ - "sed -i -e 's/=\"/=/g' -e 's/\"$$//g' ./options/locale/*.ini" - "sed -i -e 's/\\\\\\\\\"/\"/g' ./options/locale/*.ini" - mv ./options/locale_en-US.ini ./options/locale/ - 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-master platform: os: linux arch: amd64 workspace: base: /go path: src/code.gitea.io/gitea trigger: branch: - master - "release/*" event: - push depends_on: - testing - translations steps: - name: static pull: always image: techknowlogick/xgo:latest 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: off 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-release 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 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 steps: - name: static pull: always image: techknowlogick/xgo:latest 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: off 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 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: amd64 workspace: base: /go path: src/code.gitea.io/gitea steps: - name: build-docs pull: always image: webhippie/hugo:latest commands: - cd docs - make trans-copy - make clean - make build - name: publish-docs pull: always image: lucap/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-dry-run platform: os: linux arch: amd64 workspace: base: /go path: src/code.gitea.io/gitea depends_on: - build trigger: ref: - "refs/pull/**" steps: - name: dryrun pull: always image: plugins/docker:linux-amd64 settings: dry_run: true repo: gitea/gitea tags: linux-amd64 build_args: - GOPROXY=off when: event: - pull_request --- kind: pipeline name: docker-linux-amd64-release platform: os: linux arch: amd64 workspace: base: /go path: src/code.gitea.io/gitea depends_on: - testing trigger: ref: - refs/heads/master - "refs/tags/**" steps: - 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: - build 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 trigger: ref: - refs/heads/master - "refs/tags/**" - 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: notify platform: os: linux arch: amd64 workspace: base: /go path: src/code.gitea.io/gitea clone: disable: true when: status: - success - failure depends_on: - testing - translations - release-version - release-master - docker-linux-amd64-release - docker-linux-arm64-release - docker-manifest - docs steps: - name: discord pull: always image: appleboy/drone-discord:1.0.0 environment: DISCORD_WEBHOOK_ID: from_secret: discord_webhook_id DISCORD_WEBHOOK_TOKEN: from_secret: discord_webhook_token