| 
									
										
										
										
											2016-09-18 14:14:01 +01:00
										 |  |  | # Makefile for releasing CoreDNS
 | 
					
						
							|  |  |  | #
 | 
					
						
							| 
									
										
										
										
											2017-08-13 09:41:50 -07:00
										 |  |  | # The release binaries are built through docker run like
 | 
					
						
							|  |  |  | # make coredns
 | 
					
						
							|  |  |  | #
 | 
					
						
							|  |  |  | # There advantage of the above command is that we could control reused
 | 
					
						
							|  |  |  | # the binary generation from the default `Makefile`, instread of repeating
 | 
					
						
							|  |  |  | # in `Makefile.release`.
 | 
					
						
							|  |  |  | #
 | 
					
						
							| 
									
										
										
										
											2016-09-18 14:14:01 +01:00
										 |  |  | # The release is controlled from coremain/version.go. The version found
 | 
					
						
							|  |  |  | # there is used to tag the git repo and to build the assets that are
 | 
					
						
							|  |  |  | # uploaded to github (after some sanity checks).
 | 
					
						
							|  |  |  | #
 | 
					
						
							|  |  |  | # The release should be accompanied by release notes published on
 | 
					
						
							| 
									
										
										
										
											2017-07-26 08:55:06 +01:00
										 |  |  | # coredns.io. For example:
 | 
					
						
							|  |  |  | # https://coredns.io/2016/09/18/coredns-001-release/
 | 
					
						
							|  |  |  | # Also send an email to coredns-discuss@ to announce the new version.
 | 
					
						
							| 
									
										
										
										
											2016-09-18 14:14:01 +01:00
										 |  |  | #
 | 
					
						
							|  |  |  | # We use https://github.com/progrium/gh-release to automate github stuff
 | 
					
						
							|  |  |  | # be sure to have that binary in your path.
 | 
					
						
							|  |  |  | #
 | 
					
						
							| 
									
										
										
										
											2016-11-11 09:36:26 +00:00
										 |  |  | # Get a list of authors for this release with:
 | 
					
						
							|  |  |  | #
 | 
					
						
							|  |  |  | # git log --pretty=format:'%an' v001..master | sort -u
 | 
					
						
							|  |  |  | # (where v001 is the previous release, obviously you'll need to adjust this)
 | 
					
						
							|  |  |  | #
 | 
					
						
							| 
									
										
										
										
											2016-09-18 14:14:01 +01:00
										 |  |  | # Steps:
 | 
					
						
							|  |  |  | # * Get an access token: https://help.github.com/articles/creating-an-access-token-for-command-line-use/
 | 
					
						
							|  |  |  | # * export GITHUB_ACCESS_TOKEN=<token>
 | 
					
						
							|  |  |  | # * Up the version in coremain/version.go
 | 
					
						
							| 
									
										
										
										
											2017-05-12 10:15:34 +01:00
										 |  |  | # * Run: make -f Makefile.release release
 | 
					
						
							| 
									
										
										
										
											2016-11-11 17:56:54 +00:00
										 |  |  | #   * will commit your change with 'Release $VERSION'
 | 
					
						
							|  |  |  | #   * push to github
 | 
					
						
							|  |  |  | #   * build the release and do all that fluff.
 | 
					
						
							| 
									
										
										
										
											2017-03-01 15:46:26 +00:00
										 |  |  | #
 | 
					
						
							|  |  |  | # Steps for docker
 | 
					
						
							|  |  |  | # * Login into docker: docker login (should have push creds for coredns registry)
 | 
					
						
							|  |  |  | # * Run: make -f Makefile.release docker
 | 
					
						
							| 
									
										
										
										
											2017-07-24 08:24:53 -07:00
										 |  |  | #
 | 
					
						
							| 
									
										
										
										
											2017-03-01 15:46:26 +00:00
										 |  |  | # Docker push should happen after you make the new release and uploaded it to Github.
 | 
					
						
							| 
									
										
										
										
											2016-09-18 14:14:01 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-27 15:19:41 +00:00
										 |  |  | NAME:=coredns | 
					
						
							| 
									
										
										
										
											2016-09-18 14:14:01 +01:00
										 |  |  | VERSION:=$(shell grep 'coreVersion' coremain/version.go | awk '{ print $$3 }' | tr -d '"') | 
					
						
							| 
									
										
										
										
											2016-11-27 15:19:41 +00:00
										 |  |  | ARCH:=$(shell uname -m) | 
					
						
							| 
									
										
										
										
											2017-02-21 20:02:43 +00:00
										 |  |  | GITHUB:=coredns | 
					
						
							| 
									
										
										
										
											2017-03-01 15:46:26 +00:00
										 |  |  | DOCKER:=coredns | 
					
						
							|  |  |  | DOCKER_IMAGE_NAME:=$(DOCKER)/$(NAME) | 
					
						
							| 
									
										
										
										
											2017-08-11 09:47:37 -07:00
										 |  |  | GITCOMMIT:=$(shell git describe --dirty --always) | 
					
						
							| 
									
										
										
										
											2016-09-18 14:14:01 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-12 10:15:34 +01:00
										 |  |  | all: | 
					
						
							|  |  |  | 	@echo Use the 'release' target to start a release | 
					
						
							| 
									
										
										
										
											2016-10-19 20:49:27 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-13 09:41:50 -07:00
										 |  |  | release: commit push build tar upload | 
					
						
							| 
									
										
										
										
											2017-05-12 10:15:34 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | docker: docker-build docker-upload | 
					
						
							| 
									
										
										
										
											2017-03-01 15:46:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-19 20:49:27 +01:00
										 |  |  | .PHONY: push | 
					
						
							|  |  |  | push: | 
					
						
							|  |  |  | 	@echo Pushing release to master | 
					
						
							|  |  |  | 	git push | 
					
						
							| 
									
										
										
										
											2016-09-18 14:14:01 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-11 17:56:54 +00:00
										 |  |  | .PHONY: commit | 
					
						
							|  |  |  | commit: | 
					
						
							|  |  |  | 	@echo Committing | 
					
						
							|  |  |  | 	git commit -am"Release $(VERSION)" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-18 14:14:01 +01:00
										 |  |  | .PHONY: build | 
					
						
							| 
									
										
										
										
											2017-08-13 09:41:50 -07:00
										 |  |  | build: | 
					
						
							|  |  |  | 	@echo Building: linux  $(VERSION) | 
					
						
							|  |  |  | 	mkdir -p build/Linux      && $(MAKE) coredns BINARY=build/Linux/$(NAME) SYSTEM="GOOS=linux" | 
					
						
							| 
									
										
										
										
											2017-04-30 11:48:19 +01:00
										 |  |  | 	@echo Building: darwin $(VERSION) | 
					
						
							| 
									
										
										
										
											2017-08-13 09:41:50 -07:00
										 |  |  | 	mkdir -p build/Darwin     && $(MAKE) coredns BINARY=build/Darwin/$(NAME) SYSTEM="GOOS=darwin" | 
					
						
							|  |  |  | 	@echo Building: arm    $(VERSION) | 
					
						
							|  |  |  | 	mkdir -p build/Linux/Arm  && $(MAKE) coredns BINARY=build/Linux/Arm/$(NAME) SYSTEM="GOOS=linux GOARCH=arm" | 
					
						
							| 
									
										
										
										
											2016-09-18 14:14:01 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-27 15:19:41 +00:00
										 |  |  | .PHONY: tar | 
					
						
							|  |  |  | tar: | 
					
						
							| 
									
										
										
										
											2016-09-18 14:14:01 +01:00
										 |  |  | 	rm -rf release && mkdir release | 
					
						
							|  |  |  | 	tar -zcf release/$(NAME)_$(VERSION)_linux_$(ARCH).tgz -C build/Linux $(NAME) | 
					
						
							| 
									
										
										
										
											2016-11-27 15:19:41 +00:00
										 |  |  | 	tar -zcf release/$(NAME)_$(VERSION)_linux_armv6l.tgz -C build/Linux/Arm $(NAME) | 
					
						
							| 
									
										
										
										
											2016-09-18 14:14:01 +01:00
										 |  |  | 	tar -zcf release/$(NAME)_$(VERSION)_darwin_$(ARCH).tgz -C build/Darwin $(NAME) | 
					
						
							| 
									
										
										
										
											2016-11-27 15:19:41 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-12 10:15:34 +01:00
										 |  |  | .PHONY: upload | 
					
						
							|  |  |  | upload: | 
					
						
							| 
									
										
										
										
											2016-11-27 15:19:41 +00:00
										 |  |  | 	@echo Releasing: $(VERSION) | 
					
						
							| 
									
										
										
										
											2016-09-18 14:25:47 +01:00
										 |  |  | 	gh-release create $(GITHUB)/$(NAME) $(VERSION) | 
					
						
							| 
									
										
										
										
											2016-09-18 14:14:01 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-01 15:46:26 +00:00
										 |  |  | .PHONY: docker-build | 
					
						
							| 
									
										
										
										
											2017-05-25 02:28:12 -04:00
										 |  |  | docker-build: | 
					
						
							| 
									
										
										
										
											2017-08-13 09:41:50 -07:00
										 |  |  | 	$(MAKE) coredns SYSTEM="GOOS=linux" | 
					
						
							| 
									
										
										
										
											2017-03-01 15:46:26 +00:00
										 |  |  | 	docker build -t $(DOCKER_IMAGE_NAME) . | 
					
						
							|  |  |  | 	docker tag $(DOCKER_IMAGE_NAME):latest $(DOCKER_IMAGE_NAME):$(VERSION) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-12 10:15:34 +01:00
										 |  |  | .PHONY: docker-upload | 
					
						
							|  |  |  | docker-upload: | 
					
						
							| 
									
										
										
										
											2017-03-01 15:46:26 +00:00
										 |  |  | 	@echo Pushing: $(VERSION) | 
					
						
							|  |  |  | 	docker tag $(DOCKER_IMAGE_NAME):latest $(DOCKER_IMAGE_NAME):$(VERSION) | 
					
						
							| 
									
										
										
										
											2017-05-03 19:59:11 +01:00
										 |  |  | 	docker push $(DOCKER_IMAGE_NAME):latest | 
					
						
							|  |  |  | 	docker push $(DOCKER_IMAGE_NAME):$(VERSION) | 
					
						
							| 
									
										
										
										
											2017-03-01 15:46:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-18 14:14:01 +01:00
										 |  |  | .PHONY: clean | 
					
						
							|  |  |  | clean: | 
					
						
							|  |  |  | 	rm -rf release | 
					
						
							|  |  |  | 	rm -rf build |