mirror of
https://github.com/zokradonh/kopano-docker
synced 2025-06-13 02:46:28 +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