Skip to content
Snippets Groups Projects
Commit c873c66a authored by Jon Azpiazu's avatar Jon Azpiazu
Browse files

Merge branch '43-force-ddeploy-options-e-g-image-retention' into 'master'

Resolve "Force `ddeploy` options (e.g. image retention)"

Closes #43

See merge request tecnalia_robotics-public/gitlab_templates!73
parents 3c95d5eb d3a1ed95
No related branches found
No related tags found
No related merge requests found
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
DOCKER_PUSH_TAG: ${CI_COMMIT_REF_SLUG} DOCKER_PUSH_TAG: ${CI_COMMIT_REF_SLUG}
DDEPLOY_YAML: ddeploy.yaml DDEPLOY_YAML: ddeploy.yaml
before_script: before_script:
- apk add --update python3 git py3-pip git-lfs - apk add --update python3 git py3-pip git-lfs bash curl jq
# forward the SSH authentication into the Docker executor # forward the SSH authentication into the Docker executor
- "which ssh-agent || ( apk update && apk add openssh-client )" - "which ssh-agent || ( apk update && apk add openssh-client )"
- eval $(ssh-agent -s) - eval $(ssh-agent -s)
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
- ddeploy --yaml ${DDEPLOY_YAML} - ddeploy --yaml ${DDEPLOY_YAML}
# Get ID of image created by ddeploy # Get ID of image created by ddeploy
- 'DOCKER_ID=$(docker images --format="{{.ID}}" | head -1)' - 'DOCKER_ID=$(docker images --format="{{.ID}}" | head -1)'
- curl -Ls https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/raw/master/scripts/enforce_labels.bash | bash -s -- ${DOCKER_ID}
# Tag and push with the branch or tag name. # Tag and push with the branch or tag name.
- echo "Pushing to ${DOCKER_PUSH_REGISTRY}/${DOCKER_PUSH_NAME}:${DOCKER_PUSH_TAG}" - echo "Pushing to ${DOCKER_PUSH_REGISTRY}/${DOCKER_PUSH_NAME}:${DOCKER_PUSH_TAG}"
- docker tag ${DOCKER_ID} ${DOCKER_PUSH_REGISTRY}/${DOCKER_PUSH_NAME}:${DOCKER_PUSH_TAG} - docker tag ${DOCKER_ID} ${DOCKER_PUSH_REGISTRY}/${DOCKER_PUSH_NAME}:${DOCKER_PUSH_TAG}
......
#!/bin/bash
# From a given list of labels, check which of them are already defined in the provided docker image; if any of the labels
# is not defined, a new image with the same name is generated with the label(s) added.
# Labels already defined are not modified.
if [ "$#" -ne 1 ]; then
echo "Usage: $0 IMAGE_NAME"
exit 1
fi
image_name="$1"
# list of labels to be enforced
declare -A enforced_labels=( ["com.jfrog.artifactory.retention.maxCount"]="10" ["com.jfrog.artifactory.retention.maxDays"]="7")
if ! docker inspect --type=image "$1" > /dev/null ; then
echo "Error: image does not exist"
exit 0
fi
# check if every label is defined
for label in "${!enforced_labels[@]}" ; do
if ! docker inspect -f "{{json .Config.Labels }}" "$image_name" | jq -e '.['\""$label"\"']' > /dev/null ; then
echo "Key not found"
echo "$label = ${enforced_labels[$label]}"
# add missing label to the arguments to be provided to `docker build`
label_args+=" --label $label=\"${enforced_labels[$label]}\""
fi
done
# generate new image
if [ -n "${label_args+x}" ]; then
run_command="echo \"FROM $image_name\" | docker build $label_args -t $image_name -"
eval "$run_command"
fi
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment