mirror of
				https://github.com/go-task/task.git
				synced 2025-10-30 23:58:01 +02:00 
			
		
		
		
	feat: better release task
This commit is contained in:
		
				
					committed by
					
						 Andrey Nering
						Andrey Nering
					
				
			
			
				
	
			
			
			
						parent
						
							fb3c64c46e
						
					
				
				
					commit
					f35e51e4e5
				
			
							
								
								
									
										47
									
								
								Taskfile.yml
									
									
									
									
									
								
							
							
						
						
									
										47
									
								
								Taskfile.yml
									
									
									
									
									
								
							| @@ -123,10 +123,53 @@ tasks: | ||||
|     cmds: | ||||
|       - go install github.com/goreleaser/goreleaser@latest | ||||
|  | ||||
|   release: | ||||
|   release:*: | ||||
|     desc: Prepare the project for a new release | ||||
|     summary: | | ||||
|       This task will do the following: | ||||
|  | ||||
|       - Update the version and date in the CHANGELOG.md file | ||||
|       - Update the version in the package.json and package-lock.json files | ||||
|       - Copy the latest docs to the "current" version on the website | ||||
|       - Commit the changes | ||||
|       - Create a new tag | ||||
|       - Push the commit/tag to the repository | ||||
|       - Create a GitHub release | ||||
|  | ||||
|       To use the task, simply run "task release:<version>" where "<version>" is is one of: | ||||
|  | ||||
|       - "major" - Bumps the major number | ||||
|       - "minor" - Bumps the minor number | ||||
|       - "patch" - Bumps the patch number | ||||
|       - A semver compatible version number (e.g. "1.2.3") | ||||
|     vars: | ||||
|       VERSION: | ||||
|         sh: "go run ./cmd/release --version {{index .MATCH 0}}" | ||||
|       COMPLETE_MESSAGE: | | ||||
|         Creating release with GoReleaser: https://github.com/go-task/task/actions/workflows/release.yml | ||||
|  | ||||
|         Please wait for the CI to finish and then do the following: | ||||
|  | ||||
|         - Copy the changelog for v{{.VERSION}} to the GitHub release | ||||
|         - Publish the package to NPM with `task npm:publish` | ||||
|         - Update and push the snapcraft manifest in https://github.com/go-task/snap/blob/main/snap/snapcraft.yaml | ||||
|     preconditions: | ||||
|       - sh: test $(git rev-parse --abbrev-ref HEAD) = "main" | ||||
|         msg: "You must be on the main branch to release" | ||||
|       - sh: "[[ -z $(git diff --shortstat main) ]]" | ||||
|         msg: "You must have a clean working tree to release" | ||||
|     prompt: "Are you sure you want to release version {{.VERSION}}?" | ||||
|     cmds: | ||||
|       - go run ./cmd/release {{.CLI_ARGS}} | ||||
|       - cmd: echo "Releasing v{{.VERSION}}" | ||||
|         silent: true | ||||
|       - "go run ./cmd/release {{.VERSION}}" | ||||
|       - "git add --all" | ||||
|       - "git commit -m v{{.VERSION}}" | ||||
|       - "git push" | ||||
|       - "git tag v{{.VERSION}}" | ||||
|       - "git push origin tag v{{.VERSION}}" | ||||
|       - cmd: printf "%s" '{{.COMPLETE_MESSAGE}}' | ||||
|         silent: true | ||||
|  | ||||
|   npm:publish: | ||||
|     desc: Publish release to npm | ||||
|   | ||||
| @@ -11,6 +11,7 @@ import ( | ||||
|  | ||||
| 	"github.com/Masterminds/semver/v3" | ||||
| 	"github.com/otiai10/copy" | ||||
| 	"github.com/spf13/pflag" | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| @@ -25,6 +26,16 @@ var ( | ||||
| 	versionRegex          = regexp.MustCompile(`(?m)^  "version": "\d+\.\d+\.\d+",$`) | ||||
| ) | ||||
|  | ||||
| // Flags | ||||
| var ( | ||||
| 	versionFlag bool | ||||
| ) | ||||
|  | ||||
| func init() { | ||||
| 	pflag.BoolVarP(&versionFlag, "version", "v", false, "resolved version number") | ||||
| 	pflag.Parse() | ||||
| } | ||||
|  | ||||
| func main() { | ||||
| 	if err := release(); err != nil { | ||||
| 		fmt.Println(err) | ||||
| @@ -33,7 +44,7 @@ func main() { | ||||
| } | ||||
|  | ||||
| func release() error { | ||||
| 	if len(os.Args) != 2 { | ||||
| 	if len(pflag.Args()) != 1 { | ||||
| 		return errors.New("error: expected version number") | ||||
| 	} | ||||
|  | ||||
| @@ -42,11 +53,14 @@ func release() error { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	if err := bumpVersion(version, os.Args[1]); err != nil { | ||||
| 	if err := bumpVersion(version, pflag.Arg(0)); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	fmt.Println(version) | ||||
| 	if versionFlag { | ||||
| 		fmt.Println(version) | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	if err := changelog(version); err != nil { | ||||
| 		return err | ||||
|   | ||||
		Reference in New Issue
	
	Block a user