summaryrefslogtreecommitdiff
path: root/playbooks/roles/ci/templates/volumes/laminar/jobs/build_image.run
blob: ed7bf216cac7d0fc4f16ccef4ee55a5eb0086c08 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/bash
# usage: laminarc queue build_publish_image registry="oci.liz.coffee" \
#            repo="src/cgit" tag="latest" remote="ssh://src.liz.coffee:2222/cgit" \
#            rev="<sha>" image_file="Dockerfile"

set -e

declare -a args=("$registry" "$repo" "$tag" "$remote" "$rev" "$image_file")
for arg in "${args[@]}"
do
  if [[ ! "$arg" =~ ^[[:alnum:]:_\.\/\-]*$ ]]; then
    echo "Invalid argument format. Don't be sneaky snek (-_-)."
    exit 1
  fi
done

log "Logging into registry $registry"
registry_username="$(get_secret $registry | jq -r ".login.username")"
get_secret $registry | jq -r ".login.password" \
  | docker login --username "$registry_username" --password-stdin "$registry"

log "Cloning remote $remote"
r=$(echo "build-$(date --iso-8601=seconds)")
git clone "$remote" "$r" && cd "$r"
git checkout "$rev"

image_tag="$registry/$repo:$tag"
log "Building image $image_tag"
env -i HOME="$HOME" bash -l -c "docker build . -t '$image_tag' -f '$image_file'"

log "Pushing $image_tag"
docker push "$image_tag"

cd -
rm -rf "$r"
docker logout "$registry"