feat release: Add simple release script
Adds a simple script that will build stripped binaries for various platforms and GPG-sign them.
This commit is contained in:
		
							parent
							
								
									d93bc51e86
								
							
						
					
					
						commit
						1e3ecad709
					
				
					 3 changed files with 60 additions and 1 deletions
				
			
		
							
								
								
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1 +1,2 @@
 | 
				
			||||||
.idea/
 | 
					.idea/
 | 
				
			||||||
 | 
					release/
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -74,7 +74,8 @@ to only update the `api` resource sets and the `frontend/user-page` resource set
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Assuming you have Go configured correctly, you can simply `go get github.com/tazjin/kontemplate/...`.
 | 
					Assuming you have Go configured correctly, you can simply `go get github.com/tazjin/kontemplate/...`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
There are signed binary releases available on the [releases page][] for Linux, OS X and Windows.
 | 
					There are signed binary releases available on the [releases page][] for Linux, OS X,
 | 
				
			||||||
 | 
					FreeBSD and Windows.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Usage
 | 
					## Usage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										57
									
								
								build-release.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										57
									
								
								build-release.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,57 @@
 | 
				
			||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					set -ueo pipefail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					readonly GIT_HASH="$(git rev-parse --short HEAD)"
 | 
				
			||||||
 | 
					readonly LDFLAGS="-X main.gitHash=${GIT_HASH} -w -s"
 | 
				
			||||||
 | 
					readonly VERSION="1.0-${GIT_HASH}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function build-for() {
 | 
				
			||||||
 | 
					    local os="${1}"
 | 
				
			||||||
 | 
					    local arch="${2}"
 | 
				
			||||||
 | 
					    local target="release/${os}/${arch}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo "Building kontemplate for ${os}-${arch} in ${target}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    mkdir -p "${target}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    env GOOS="${os}" GOARCH="${arch}" go build \
 | 
				
			||||||
 | 
					        -ldflags "${LDFLAGS}" \
 | 
				
			||||||
 | 
					        -o "${target}/kontemplate" \
 | 
				
			||||||
 | 
					        -tags netgo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function sign-for() {
 | 
				
			||||||
 | 
					    local os="${1}"
 | 
				
			||||||
 | 
					    local arch="${2}"
 | 
				
			||||||
 | 
					    local target="release/${os}/${arch}"
 | 
				
			||||||
 | 
					    local bin="${target}/kontemplate"
 | 
				
			||||||
 | 
					    local hash="$(sha256sum ${bin})"
 | 
				
			||||||
 | 
					    local tar="release/kontemplate-${VERSION}-${os}-${arch}.tar.gz"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo "Signing kontemplate binary for ${os}-${arch} with SHA256 ${hash}"
 | 
				
			||||||
 | 
					    gpg --sign "${bin}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo "Packing release into ${tar}"
 | 
				
			||||||
 | 
					    tar czvf "${tar}" -C "${target}" kontemplate kontemplate.gpg
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					case "${1}" in
 | 
				
			||||||
 | 
					    "build")
 | 
				
			||||||
 | 
					        # Build releases for various operating systems:
 | 
				
			||||||
 | 
					        build-for "linux" "amd64"
 | 
				
			||||||
 | 
					        build-for "darwin" "amd64"
 | 
				
			||||||
 | 
					        build-for "windows" "amd64"
 | 
				
			||||||
 | 
					        build-for "freebsd" "amd64"
 | 
				
			||||||
 | 
					        exit 0
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    "sign")
 | 
				
			||||||
 | 
					        # Sign releases:
 | 
				
			||||||
 | 
					        sign-for "linux" "amd64"
 | 
				
			||||||
 | 
					        sign-for "darwin" "amd64"
 | 
				
			||||||
 | 
					        sign-for "windows" "amd64"
 | 
				
			||||||
 | 
					        sign-for "freebsd" "amd64"
 | 
				
			||||||
 | 
					        exit 0
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue