mirror of
				https://github.com/zokradonh/kopano-docker
				synced 2025-10-31 02:17:47 +00:00 
			
		
		
		
	update descriptions on docker hub (#191)
* add script to update image description on docker hub * also set (short) description fixes #179 * add optional step to makefile to update docker hub readme files to update readme on docker hub add DOCKERREADME=yes to .env (values of variable is irrelevant, only that it its set) * add docker_repo to .env this fixes tagging of images for docker orgs other than the default value
This commit is contained in:
		
							parent
							
								
									371e7a0039
								
							
						
					
					
						commit
						f18e19b5b3
					
				| @ -24,6 +24,8 @@ install: | |||||||
|   - make lint |   - make lint | ||||||
|   - "./test.exp" |   - "./test.exp" | ||||||
|   - make lint # rerun lint to see if output is different with .env in place |   - make lint # rerun lint to see if output is different with .env in place | ||||||
|  |   - echo "docker_repo=$docker_repo" >> .env | ||||||
|  |   - echo "DOCKERREADME=yes" >> .env # add DOCKERREADME env var so that make publish also updates readme files on docker hub | ||||||
|   - travis_retry make build-all |   - travis_retry make build-all | ||||||
| script: | script: | ||||||
|   - make test-ci |   - make test-ci | ||||||
|  | |||||||
							
								
								
									
										95
									
								
								.travis/docker-hub-helper.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										95
									
								
								.travis/docker-hub-helper.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,95 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | # bash .travis/docker-hub-helper.sh base | ||||||
|  | 
 | ||||||
|  | set -euo pipefail | ||||||
|  | IFS=$'\n\t' | ||||||
|  | 
 | ||||||
|  | # this is a kind of ugly hack to be able to source the env file | ||||||
|  | # this is sadly needed since postfix in https://github.com/tomav/docker-mailserver/ cannot deal with quoted values | ||||||
|  | tmpfile=$(mktemp /tmp/kopano-docker-env.XXXXXX) | ||||||
|  | cp ./.env "$tmpfile" | ||||||
|  | sed -i '/LDAP_QUERY_FILTER/s/^/#/g' "$tmpfile" | ||||||
|  | sed -i '/SASLAUTHD_LDAP_FILTER/s/^/#/g' "$tmpfile" | ||||||
|  | # shellcheck disable=SC1090 | ||||||
|  | source "$tmpfile" | ||||||
|  | 
 | ||||||
|  | docker_repo=${docker_repo:-zokradonh} | ||||||
|  | docker_login=${docker_login:-""} | ||||||
|  | docker_pwd=${docker_pwd:-""} | ||||||
|  | 
 | ||||||
|  | if [ -z "$docker_login" ]; then | ||||||
|  |   docker_login="$(<~/.docker-account-user)" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [ -z "$docker_pwd" ]; then | ||||||
|  |   docker_pwd="$(<~/.docker-account-pwd)" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | image=${1:-""} | ||||||
|  | if [ -z "$image" ]; then | ||||||
|  |   echo "ERROR: You must specify an image to modify." | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # below code is based on https://github.com/moikot/golang-dep/blob/aab3ea8462a19407544f1ce9daa11c3f0924394c/.travis/push.sh | ||||||
|  | # | ||||||
|  | # Pushes README.md content to Docker Hub. | ||||||
|  | # | ||||||
|  | # $1 - The image name. | ||||||
|  | # $2 - The JWT. | ||||||
|  | # | ||||||
|  | # Examples: | ||||||
|  | # | ||||||
|  | #   push_readme "foo/bar" "token" | ||||||
|  | # | ||||||
|  | push_readme() { | ||||||
|  |   declare -r image="${1}" | ||||||
|  |   declare -r token="${2}" | ||||||
|  |   declare -r readme="${3}" | ||||||
|  | 
 | ||||||
|  |   local code | ||||||
|  |   code=$(jq -n --arg msg "$(<"${readme}")" \ | ||||||
|  |     '{"registry":"registry-1.docker.io","full_description": $msg }' | \ | ||||||
|  |         curl -s -o /dev/null  -L -w "%{http_code}" \ | ||||||
|  |            https://cloud.docker.com/v2/repositories/"${image}"/ \ | ||||||
|  |            -d @- -X PATCH \ | ||||||
|  |            -H "Content-Type: application/json" \ | ||||||
|  |            -H "Authorization: JWT ${token}") | ||||||
|  | 
 | ||||||
|  |   if [[ "${code}" = "200" ]]; then | ||||||
|  |     printf "Successfully pushed README to Docker Hub" | ||||||
|  |   else | ||||||
|  |     printf "Unable to push README to Docker Hub, response code: %s\n" "${code}" | ||||||
|  |     exit 1 | ||||||
|  |   fi | ||||||
|  | 
 | ||||||
|  |   local code | ||||||
|  |   code=$(jq -n --arg msg "$(head -n 1 "${readme}" | cut -d' ' -f2-)" \ | ||||||
|  |     '{"registry":"registry-1.docker.io","description": $msg }' | \ | ||||||
|  |         curl -s -o /dev/null  -L -w "%{http_code}" \ | ||||||
|  |            https://cloud.docker.com/v2/repositories/"${image}"/ \ | ||||||
|  |            -d @- -X PATCH \ | ||||||
|  |            -H "Content-Type: application/json" \ | ||||||
|  |            -H "Authorization: JWT ${token}") | ||||||
|  | 
 | ||||||
|  |   if [[ "${code}" = "200" ]]; then | ||||||
|  |     printf "Successfully pushed description to Docker Hub" | ||||||
|  |   else | ||||||
|  |     printf "Unable to push description to Docker Hub, response code: %s\n" "${code}" | ||||||
|  |     exit 1 | ||||||
|  |   fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # Login into Docker repository | ||||||
|  | #echo "$docker_pwd" | docker login -u "$docker_login" --password-stdin | ||||||
|  | 
 | ||||||
|  | token=$(curl -s -X POST \ | ||||||
|  | -H "Content-Type: application/json" \ | ||||||
|  | -d '{"username": "'"$docker_login"'", "password": "'"$docker_pwd"'"}' \ | ||||||
|  | https://hub.docker.com/v2/users/login/ | jq -r .token) | ||||||
|  | 
 | ||||||
|  | push_readme "${docker_repo}"/kopano_"${image}" "${token}" "${image}"/README.md | ||||||
|  | 
 | ||||||
|  | if [ -e "$tmpfile" ]; then | ||||||
|  |   rm "$tmpfile" | ||||||
|  | fi | ||||||
							
								
								
									
										9
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								Makefile
									
									
									
									
									
								
							| @ -3,8 +3,8 @@ SHELL := /bin/bash # Use bash syntax | |||||||
| # if not run in travis, get docker_login and _pwd from file
 | # if not run in travis, get docker_login and _pwd from file
 | ||||||
| ifndef TRAVIS | ifndef TRAVIS | ||||||
| 	docker_repo := zokradonh | 	docker_repo := zokradonh | ||||||
| 	docker_login := `cat ~/.docker-account-user` | 	docker_login := $(shell cat ~/.docker-account-user) | ||||||
| 	docker_pwd := `cat ~/.docker-account-pwd` | 	docker_pwd := $(shell cat ~/.docker-account-pwd) | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
| base_download_version := $(shell ./version.sh core) | base_download_version := $(shell ./version.sh core) | ||||||
| @ -256,7 +256,7 @@ tag-zpush: | |||||||
| 
 | 
 | ||||||
| # Docker publish
 | # Docker publish
 | ||||||
| repo-login: ## Login at hub.docker.com
 | repo-login: ## Login at hub.docker.com
 | ||||||
| 	@docker login -u $(docker_login) -p $(docker_pwd) | 	@echo $(docker_pwd) | docker login -u $(docker_login) --password-stdin | ||||||
| 
 | 
 | ||||||
| .PHONY: publish | .PHONY: publish | ||||||
| publish: repo-login | publish: repo-login | ||||||
| @ -267,6 +267,9 @@ publish-container: ## Helper target to push a given image to a registry. Default | |||||||
| 	@echo 'publish latest to $(docker_repo)/kopano_$(component)' | 	@echo 'publish latest to $(docker_repo)/kopano_$(component)' | ||||||
| 	docker push $(docker_repo)/kopano_$(component):${$(component)_version} | 	docker push $(docker_repo)/kopano_$(component):${$(component)_version} | ||||||
| 	docker push $(docker_repo)/kopano_$(component):latest | 	docker push $(docker_repo)/kopano_$(component):latest | ||||||
|  | ifdef DOCKERREADME | ||||||
|  | 	.travis/docker-hub-helper.sh $(component) | ||||||
|  | endif | ||||||
| 
 | 
 | ||||||
| publish-base: tag-base | publish-base: tag-base | ||||||
| 	component=base make publish-container | 	component=base make publish-container | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user