mirror of
				https://gitea.com/gitea/tea.git
				synced 2025-10-31 01:05:26 +01:00 
			
		
		
		
	Switch CI to Actions and use Goreleaser (#536)
Reviewed-on: https://gitea.com/gitea/tea/pulls/536 Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: techknowlogick <techknowlogick@gitea.io> Co-committed-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
		 techknowlogick
					techknowlogick
				
			
				
					committed by
					
						 techknowlogick
						techknowlogick
					
				
			
			
				
	
			
			
			 techknowlogick
						techknowlogick
					
				
			
						parent
						
							cfce25f0a7
						
					
				
				
					commit
					b705188599
				
			
							
								
								
									
										212
									
								
								.drone.yml
									
									
									
									
									
								
							
							
						
						
									
										212
									
								
								.drone.yml
									
									
									
									
									
								
							| @@ -1,212 +0,0 @@ | |||||||
| --- |  | ||||||
| kind: pipeline |  | ||||||
| name: default |  | ||||||
|  |  | ||||||
| platform: |  | ||||||
|   os: linux |  | ||||||
|   arch: amd64 |  | ||||||
|  |  | ||||||
| steps: |  | ||||||
|  |  | ||||||
| - name: build |  | ||||||
|   pull: always |  | ||||||
|   image: golang:1.20 |  | ||||||
|   environment: |  | ||||||
|     GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not |  | ||||||
|   commands: |  | ||||||
|   - make clean |  | ||||||
|   - make vet |  | ||||||
|   - make lint |  | ||||||
|   - make fmt-check |  | ||||||
|   - make misspell-check |  | ||||||
|   - make build |  | ||||||
|   when: |  | ||||||
|     event: |  | ||||||
|     - push |  | ||||||
|     - tag |  | ||||||
|     - pull_request |  | ||||||
|  |  | ||||||
| - name: unit-test |  | ||||||
|   image: golang:1.20 |  | ||||||
|   commands: |  | ||||||
|   - make unit-test-coverage |  | ||||||
|   settings: |  | ||||||
|     group: test |  | ||||||
|   environment: |  | ||||||
|     GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not |  | ||||||
|   when: |  | ||||||
|     branch: |  | ||||||
|     - main |  | ||||||
|     event: |  | ||||||
|     - push |  | ||||||
|     - pull_request |  | ||||||
|  |  | ||||||
| - name: release-test |  | ||||||
|   image: golang:1.20 |  | ||||||
|   commands: |  | ||||||
|   - make test |  | ||||||
|   settings: |  | ||||||
|     group: test |  | ||||||
|   environment: |  | ||||||
|     GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not |  | ||||||
|   when: |  | ||||||
|     branch: |  | ||||||
|     - "release/*" |  | ||||||
|     event: |  | ||||||
|     - push |  | ||||||
|     - pull_request |  | ||||||
|  |  | ||||||
| - name: tag-test |  | ||||||
|   pull: always |  | ||||||
|   image: golang:1.20 |  | ||||||
|   commands: |  | ||||||
|   - make test |  | ||||||
|   settings: |  | ||||||
|     group: test |  | ||||||
|   environment: |  | ||||||
|     GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not |  | ||||||
|   when: |  | ||||||
|     event: |  | ||||||
|     - tag |  | ||||||
|  |  | ||||||
| - name: static |  | ||||||
|   image: golang:1.20 |  | ||||||
|   environment: |  | ||||||
|     GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not |  | ||||||
|   commands: |  | ||||||
|   - make release |  | ||||||
|   when: |  | ||||||
|     event: |  | ||||||
|     - push |  | ||||||
|     - tag |  | ||||||
|  |  | ||||||
| - 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 |  | ||||||
|   when: |  | ||||||
|     event: |  | ||||||
|     - push |  | ||||||
|     - tag |  | ||||||
|  |  | ||||||
| - name: tag-release |  | ||||||
|   pull: always |  | ||||||
|   image: woodpeckerci/plugin-s3:latest |  | ||||||
|   settings: |  | ||||||
|     acl: |  | ||||||
|       from_secret: aws_s3_acl |  | ||||||
|     region: |  | ||||||
|       from_secret: aws_s3_region |  | ||||||
|     bucket: |  | ||||||
|       from_secret: aws_s3_bucket |  | ||||||
|     endpoint: |  | ||||||
|       from_secret: aws_s3_endpoint |  | ||||||
|     path_style: |  | ||||||
|       from_secret: aws_s3_path_style |  | ||||||
|     source: "dist/release/*" |  | ||||||
|     strip_prefix: dist/release/ |  | ||||||
|     target: "/tea/${DRONE_TAG##v}" |  | ||||||
|   environment: |  | ||||||
|     AWS_ACCESS_KEY_ID: |  | ||||||
|       from_secret: aws_access_key_id |  | ||||||
|     AWS_SECRET_ACCESS_KEY: |  | ||||||
|       from_secret: aws_secret_access_key |  | ||||||
|   when: |  | ||||||
|     event: |  | ||||||
|     - tag |  | ||||||
|  |  | ||||||
| - name: release-branch-release |  | ||||||
|   pull: always |  | ||||||
|   image: woodpeckerci/plugin-s3:latest |  | ||||||
|   settings: |  | ||||||
|     acl: |  | ||||||
|       from_secret: aws_s3_acl |  | ||||||
|     region: |  | ||||||
|       from_secret: aws_s3_region |  | ||||||
|     bucket: |  | ||||||
|       from_secret: aws_s3_bucket |  | ||||||
|     endpoint: |  | ||||||
|       from_secret: aws_s3_endpoint |  | ||||||
|     path_style: |  | ||||||
|       from_secret: aws_s3_path_style |  | ||||||
|     source: "dist/release/*" |  | ||||||
|     strip_prefix: dist/release/ |  | ||||||
|     target: "/tea/${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: woodpeckerci/plugin-s3:latest |  | ||||||
|   settings: |  | ||||||
|     acl: |  | ||||||
|       from_secret: aws_s3_acl |  | ||||||
|     region: |  | ||||||
|       from_secret: aws_s3_region |  | ||||||
|     bucket: |  | ||||||
|       from_secret: aws_s3_bucket |  | ||||||
|     endpoint: |  | ||||||
|       from_secret: aws_s3_endpoint |  | ||||||
|     path_style: |  | ||||||
|       from_secret: aws_s3_path_style |  | ||||||
|     source: "dist/release/*" |  | ||||||
|     strip_prefix: dist/release/ |  | ||||||
|     target: /tea/main |  | ||||||
|   environment: |  | ||||||
|     AWS_ACCESS_KEY_ID: |  | ||||||
|       from_secret: aws_access_key_id |  | ||||||
|     AWS_SECRET_ACCESS_KEY: |  | ||||||
|       from_secret: aws_secret_access_key |  | ||||||
|   when: |  | ||||||
|     branch: |  | ||||||
|     - main |  | ||||||
|     event: |  | ||||||
|     - push |  | ||||||
|  |  | ||||||
| - name: gitea |  | ||||||
|   pull: always |  | ||||||
|   image: plugins/gitea-release:1 |  | ||||||
|   settings: |  | ||||||
|     files: |  | ||||||
|     - "dist/release/*" |  | ||||||
|     base_url: https://gitea.com |  | ||||||
|     api_key: |  | ||||||
|       from_secret: gitea_token |  | ||||||
|   when: |  | ||||||
|     event: |  | ||||||
|     - tag |  | ||||||
|  |  | ||||||
| - 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 |  | ||||||
|   when: |  | ||||||
|     event: |  | ||||||
|     - push |  | ||||||
|     - tag |  | ||||||
|     - pull_request |  | ||||||
|     status: |  | ||||||
|     - changed |  | ||||||
|     - failure |  | ||||||
							
								
								
									
										37
									
								
								.gitea/workflows/release-nightly.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								.gitea/workflows/release-nightly.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | |||||||
|  | name: goreleaser | ||||||
|  |  | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     branches: [ main ] | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   goreleaser: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v3 | ||||||
|  |         with: | ||||||
|  |           fetch-depth: 0 | ||||||
|  |       - run: git fetch --force --tags | ||||||
|  |       - name: setup go | ||||||
|  |         uses: https://github.com/actions/setup-go@v4 | ||||||
|  |         with: | ||||||
|  |           go-version: '>=1.20.1' | ||||||
|  |       - name: import gpg | ||||||
|  |         uses: https://github.com/crazy-max/ghaction-import-gpg@v5 | ||||||
|  |         with: | ||||||
|  |           gpg_private_key: ${{ secrets.GPGSIGN_KEY }} | ||||||
|  |           passphrase: ${{ secrets.GPGSIGN_PASSPHRASE }} | ||||||
|  |       - name: goreleaser | ||||||
|  |         uses: https://github.com/goreleaser/goreleaser-action@v4 | ||||||
|  |         with: | ||||||
|  |             distribution: goreleaser-pro | ||||||
|  |             version: latest | ||||||
|  |             args: release --nightly | ||||||
|  |         env: | ||||||
|  |           GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} | ||||||
|  |           AWS_REGION: ${{ secrets.AWS_REGION }} | ||||||
|  |           AWS_ACCESS_KEY_ID: ${{ secrets.AWS_KEY_ID }} | ||||||
|  |           AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | ||||||
|  |           S3_REGION: ${{ secrets.AWS_REGION }} | ||||||
|  |           S3_BUCKET: ${{ secrets.AWS_BUCKET }} | ||||||
|  |           GPGSIGN_PASSPHRASE: ${{ secrets.GPGSIGN_PASSPHRASE }} | ||||||
							
								
								
									
										39
									
								
								.gitea/workflows/release-tag.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								.gitea/workflows/release-tag.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | |||||||
|  | name: goreleaser | ||||||
|  |  | ||||||
|  | on: [tags] | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   goreleaser: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v3 | ||||||
|  |         with: | ||||||
|  |           fetch-depth: 0 | ||||||
|  |       - run: git fetch --force --tags | ||||||
|  |       - name: setup go | ||||||
|  |         uses: https://github.com/actions/setup-go@v4 | ||||||
|  |         with: | ||||||
|  |           go-version: '>=1.20.1' | ||||||
|  |       - name: import gpg | ||||||
|  |         id: import_gpg | ||||||
|  |         uses: https://github.com/crazy-max/ghaction-import-gpg@v5 | ||||||
|  |         with: | ||||||
|  |           gpg_private_key: ${{ secrets.GPGSIGN_KEY }} | ||||||
|  |           passphrase: ${{ secrets.GPGSIGN_PASSPHRASE }} | ||||||
|  |       - name: goreleaser | ||||||
|  |         uses: https://github.com/goreleaser/goreleaser-action@v4 | ||||||
|  |         with: | ||||||
|  |             distribution: goreleaser-pro | ||||||
|  |             version: latest | ||||||
|  |             args: release | ||||||
|  |         env: | ||||||
|  |           GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} | ||||||
|  |           AWS_REGION: ${{ secrets.AWS_REGION }} | ||||||
|  |           AWS_ACCESS_KEY_ID: ${{ secrets.AWS_KEY_ID }} | ||||||
|  |           AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | ||||||
|  |           S3_REGION: ${{ secrets.AWS_REGION }} | ||||||
|  |           S3_BUCKET: ${{ secrets.AWS_BUCKET }} | ||||||
|  |           GPGSIGN_PASSPHRASE: ${{ secrets.GPGSIGN_PASSPHRASE }} | ||||||
|  |           GPG_FINGERPRINT: ${{ steps.import_gpg.outputs.fingerprint }} | ||||||
|  |           GITEA_TOKEN: ${{ secrets.RELEASE_TOKEN }} | ||||||
|  |           GITHUB_TOKEN: | ||||||
							
								
								
									
										31
									
								
								.gitea/workflows/test-pr.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								.gitea/workflows/test-pr.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | |||||||
|  | name: check-and-test | ||||||
|  |  | ||||||
|  | on:  | ||||||
|  |   - push | ||||||
|  |   - pull_request | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   check-and-test: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v3 | ||||||
|  |       - name: setup go | ||||||
|  |         uses: https://github.com/actions/setup-go@v4 | ||||||
|  |         with: | ||||||
|  |           go-version: '>=1.20.1' | ||||||
|  |       - name: lint and build | ||||||
|  |         run: | | ||||||
|  |           make clean | ||||||
|  |           make vet | ||||||
|  |           make lint | ||||||
|  |           make fmt-check | ||||||
|  |           make misspell-check | ||||||
|  |           make build | ||||||
|  |         env: | ||||||
|  |           GOPROXY: https://goproxy.io,direct | ||||||
|  |       - name: test and coverage | ||||||
|  |         run: | | ||||||
|  |           make test | ||||||
|  |           make unit-test-coverage | ||||||
|  |         env: | ||||||
|  |           GOPROXY: https://goproxy.io,direct | ||||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -9,3 +9,5 @@ dist/ | |||||||
| vendor/ | vendor/ | ||||||
|  |  | ||||||
| coverage.out | coverage.out | ||||||
|  |  | ||||||
|  | dist/ | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								.goreleaser.checksum.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								.goreleaser.checksum.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | #!/bin/bash | ||||||
|  |  | ||||||
|  | set -e | ||||||
|  |  | ||||||
|  | if [ -z "$1" ]; then | ||||||
|  |   echo "usage: $0 <path>" | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | SUM=$(shasum -a 256 "$1" | cut -d' ' -f1) | ||||||
|  | BASENAME=$(basename "$1") | ||||||
|  | echo -n "${SUM}  ${BASENAME}" > "$1".sha256 | ||||||
							
								
								
									
										122
									
								
								.goreleaser.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								.goreleaser.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,122 @@ | |||||||
|  | before: | ||||||
|  |   hooks: | ||||||
|  |     - go mod tidy | ||||||
|  |  | ||||||
|  | builds: | ||||||
|  | - env: | ||||||
|  |   - CGO_ENABLED=0 | ||||||
|  |   goos: | ||||||
|  |   - darwin | ||||||
|  |   - linux | ||||||
|  |   - windows | ||||||
|  |   - freebsd | ||||||
|  |   goarch: | ||||||
|  |   - amd64 | ||||||
|  |   - arm | ||||||
|  |   - arm64 | ||||||
|  |   goarm: | ||||||
|  |   - "5" | ||||||
|  |   - "6" | ||||||
|  |   - "7" | ||||||
|  |   ignore: | ||||||
|  |     - goos: darwin | ||||||
|  |       goarch: arm | ||||||
|  |     - goos: darwin | ||||||
|  |       goarch: ppc64le | ||||||
|  |     - goos: darwin | ||||||
|  |       goarch: s390x | ||||||
|  |     - goos: windows | ||||||
|  |       goarch: ppc64le | ||||||
|  |     - goos: windows | ||||||
|  |       goarch: s390x | ||||||
|  |     - goos: windows | ||||||
|  |       goarch: arm | ||||||
|  |       goarm: "5" | ||||||
|  |     - goos: windows | ||||||
|  |       goarch: arm | ||||||
|  |       goarm: "6" | ||||||
|  |     - goos: windows | ||||||
|  |       goarch: arm | ||||||
|  |       goarm: "7" | ||||||
|  |     - goos: windows | ||||||
|  |       goarch: arm64 | ||||||
|  |     - goos: freebsd | ||||||
|  |       goarch: ppc64le | ||||||
|  |     - goos: freebsd | ||||||
|  |       goarch: s390x | ||||||
|  |     - goos: freebsd | ||||||
|  |       goarch: arm | ||||||
|  |       goarm: "5" | ||||||
|  |     - goos: freebsd | ||||||
|  |       goarch: arm | ||||||
|  |       goarm: "6" | ||||||
|  |     - goos: freebsd | ||||||
|  |       goarch: arm | ||||||
|  |       goarm: "7" | ||||||
|  |     - goos: freebsd | ||||||
|  |       goarch: arm64 | ||||||
|  |   flags: | ||||||
|  |   - -trimpath | ||||||
|  |   ldflags: | ||||||
|  |   - -s -w -X main.Version={{ .Version }} | ||||||
|  |   binary: >- | ||||||
|  |     {{ .ProjectName }}- | ||||||
|  |     {{- .Version }}- | ||||||
|  |     {{- .Os }}- | ||||||
|  |     {{- if eq .Arch "amd64" }}amd64 | ||||||
|  |     {{- else if eq .Arch "amd64_v1" }}amd64 | ||||||
|  |     {{- else if eq .Arch "386" }}386 | ||||||
|  |     {{- else }}{{ .Arch }}{{ end }} | ||||||
|  |     {{- if .Arm }}-{{ .Arm }}{{ end }} | ||||||
|  |   no_unique_dist_dir: true | ||||||
|  |   hooks: | ||||||
|  |     post: | ||||||
|  |       - cmd: tar -cJf {{ .Path }}.xz {{ .Path }} | ||||||
|  |         env: | ||||||
|  |           - XZ_OPT=-9 | ||||||
|  |       - cmd: sh .goreleaser.checksum.sh {{ .Path }} | ||||||
|  |       - cmd: sh .goreleaser.checksum.sh {{ .Path }}.xz | ||||||
|  |  | ||||||
|  | blobs: | ||||||
|  |   - | ||||||
|  |     provider: s3 | ||||||
|  |     bucket: "{{ .Env.S3_BUCKET }}" | ||||||
|  |     region: "{{ .Env.S3_REGION }}" | ||||||
|  |     folder: "tea/{{.Version}}" | ||||||
|  |     extra_files: | ||||||
|  |       - glob: ./**.xz | ||||||
|  |       - glob: ./**.sha256 | ||||||
|  |  | ||||||
|  | archives: | ||||||
|  |   - format: binary | ||||||
|  |     name_template: "{{ .Binary }}" | ||||||
|  |     allow_different_binary_count: true | ||||||
|  |  | ||||||
|  | checksum: | ||||||
|  |   name_template: 'checksums.txt' | ||||||
|  |   extra_files: | ||||||
|  |       - glob: ./**.xz | ||||||
|  |  | ||||||
|  | env_files: | ||||||
|  |   # override gitea actions which passes GITHUB_TOKEN to set env var as null | ||||||
|  |   github_token: /dev/null | ||||||
|  |  | ||||||
|  | signs: | ||||||
|  |   - | ||||||
|  |     signature: "${artifact}.sig" | ||||||
|  |     artifacts: checksum | ||||||
|  |     stdin: '{{ .Env.GPGSIGN_PASSPHRASE }}' | ||||||
|  |     args: ["--batch", "-u", "{{ .Env.GPG_FINGERPRINT }}", "--output", "${signature}", "--detach-sign", "${artifact}"] | ||||||
|  |  | ||||||
|  | snapshot: | ||||||
|  |   name_template: "{{ .Branch }}-devel" | ||||||
|  |  | ||||||
|  | nightly: | ||||||
|  |   name_template: "{{ .Branch }}" | ||||||
|  |  | ||||||
|  | gitea_urls: | ||||||
|  |   api: https://gitea.com/api/v1 | ||||||
|  |   download: https://gitea.com | ||||||
|  |  | ||||||
|  | # yaml-language-server: $schema=https://goreleaser.com/static/schema-pro.json | ||||||
|  | # vim: set ts=2 sw=2 tw=0 fo=cnqoj | ||||||
		Reference in New Issue
	
	Block a user