75 lines
1.8 KiB
Bash
75 lines
1.8 KiB
Bash
|
#! /bin/bash
|
||
|
|
||
|
## Author: Sebastian Mark
|
||
|
## CC-BY-SA (https://creativecommons.org/licenses/by-sa/4.0/deed.de)
|
||
|
## for civil use only
|
||
|
|
||
|
## start renovate cronjob manually
|
||
|
## Usage: start_renovate_bot.sh [--debug] [group/repo group/repo ...]
|
||
|
|
||
|
set -e
|
||
|
|
||
|
NS="renovate"
|
||
|
CRONJOBNAME="renovate-bot"
|
||
|
JOBNAME="renovate-bot-manual-$(openssl rand -hex 3)"
|
||
|
|
||
|
TMPFILE=$(mktemp)
|
||
|
|
||
|
## create a single job from cronjob
|
||
|
kubectl -n $NS --dry-run=client create job $JOBNAME --from=cronjob/$CRONJOBNAME -o yaml >$TMPFILE
|
||
|
|
||
|
## add debug env var
|
||
|
if [[ "$1" == "--debug" ]]; then
|
||
|
kubectl patch --local -f $TMPFILE --type='json' --patch='[
|
||
|
{
|
||
|
"op": "add",
|
||
|
"path": "/spec/template/spec/containers/0/env/-",
|
||
|
"value": { "name": "LOG_LEVEL", "value": "debug"}
|
||
|
}
|
||
|
]' -o yaml | sponge $TMPFILE
|
||
|
shift
|
||
|
fi
|
||
|
|
||
|
## limit job to passed repo(s)
|
||
|
if [[ $# -gt 0 ]]; then
|
||
|
## disable autodiscover
|
||
|
kubectl patch --local -f $TMPFILE --type='json' --patch='[
|
||
|
{
|
||
|
"op": "add",
|
||
|
"path": "/spec/template/spec/containers/0/args",
|
||
|
"value": ["--autodiscover=false"]
|
||
|
}
|
||
|
]' -o yaml | sponge $TMPFILE
|
||
|
|
||
|
## add each repo as single argument
|
||
|
for REPO in "$@"; do
|
||
|
kubectl patch --local -f $TMPFILE --type='json' --patch='[
|
||
|
{
|
||
|
"op": "add",
|
||
|
"path": "/spec/template/spec/containers/0/args/-",
|
||
|
"value": "'$REPO'"
|
||
|
}
|
||
|
]' -o yaml | sponge $TMPFILE
|
||
|
done
|
||
|
fi
|
||
|
|
||
|
## create job
|
||
|
kubectl -n $NS apply -f $TMPFILE
|
||
|
rm $TMPFILE
|
||
|
|
||
|
## wait for corrosponding pod to be ready
|
||
|
PODNAME=$(kubectl -n $NS get pods --selector=job-name=$JOBNAME --no-headers -o custom-columns=":metadata.name")
|
||
|
kubectl -n $NS wait --for=condition=Ready pod/$PODNAME --timeout=3m
|
||
|
|
||
|
## show job logs
|
||
|
echo "waiting for logs...."
|
||
|
echo
|
||
|
kubectl -n $NS logs -f job/$JOBNAME
|
||
|
echo
|
||
|
|
||
|
echo "saving log to /tmp/${JOBNAME}.log"
|
||
|
kubectl -n $NS logs job/$JOBNAME &>/tmp/${JOBNAME}.log
|
||
|
|
||
|
## remove job
|
||
|
kubectl -n $NS delete job $JOBNAME
|