upload/koji: reorganize run-koji-container script

run-koji-container has now two actions: start and stop:
- ./run-koji-container.sh start
- ./run-koji-container.sh stop

The start action starts all containers. When it exits, all containers are
started and running in the background. To stop and removethem, use the stop
action.

This change is needed so we're able to easily use this script also in the CI
environment.
This commit is contained in:
Ondřej Budai 2020-08-26 11:05:12 +02:00 committed by Tom Gundersen
parent 355f4da115
commit c9d7892ec0
2 changed files with 68 additions and 35 deletions

View file

@ -3,7 +3,7 @@
Firstly, you need to start the koji container:
```
sudo ./internal/upload/koji/run-koji-container.sh
sudo ./internal/upload/koji/run-koji-container.sh start
```
This command starts a kojihub instance available at
@ -20,3 +20,9 @@ go test -v -tags koji_test ./internal/upload/koji
The test is run on each PR in the Github CI. See `.github/workflows/tests.yml`
for more details.
To stop and remove the koji container, use the following command:
```
sudo ./internal/upload/koji/run-koji-container.sh stop
```

View file

@ -1,6 +1,61 @@
#!/bin/bash
set -eu
koji_stop () {
echo "Shutting down containers, please wait..."
${CONTAINER_RUNTIME} stop org.osbuild.koji.koji || true
${CONTAINER_RUNTIME} rm org.osbuild.koji.koji || true
${CONTAINER_RUNTIME} stop org.osbuild.koji.postgres || true
${CONTAINER_RUNTIME} rm org.osbuild.koji.postgres || true
${CONTAINER_RUNTIME} network rm -f org.osbuild.koji || true
}
koji_clean_up_bad_start () {
EXIT_CODE=$?
echo "Start failed, removing containers."
koji_stop
exit $EXIT_CODE
}
koji_start() {
trap koji_clean_up_bad_start EXIT
${CONTAINER_RUNTIME} network create org.osbuild.koji
${CONTAINER_RUNTIME} run -d --name org.osbuild.koji.postgres --network org.osbuild.koji \
-e POSTGRES_USER=koji \
-e POSTGRES_PASSWORD=kojipass \
-e POSTGRES_DB=koji \
docker.io/library/postgres:12-alpine
${CONTAINER_RUNTIME} run -d --name org.osbuild.koji.koji --network org.osbuild.koji \
-p 8080:80 \
-e POSTGRES_USER=koji \
-e POSTGRES_PASSWORD=kojipass \
-e POSTGRES_DB=koji \
-e POSTGRES_HOST=org.osbuild.koji.postgres \
quay.io/osbuild/ghci-koji:v1
echo "Containers are running, to stop them use:"
echo "$0 stop"
trap - EXIT
}
if [[ $# -ne 1 || ( "$1" != "start" && "$1" != "stop" ) ]]; then
cat <<DOC
usage: $0 start|stop
start - starts the koji containers
stop - stops and removes the koji containers
DOC
exit 3
fi
if [ $UID != 0 ]; then
echo This script must be run as root.
exit 1
@ -15,38 +70,10 @@ else
exit 2
fi
clean_up () {
EXIT_CODE=$?
if [ $1 == "start" ]; then
koji_start
fi
echo "Shutting down containers, please wait..."
${CONTAINER_RUNTIME} stop org.osbuild.koji.koji || true
${CONTAINER_RUNTIME} rm org.osbuild.koji.koji || true
${CONTAINER_RUNTIME} stop org.osbuild.koji.postgres || true
${CONTAINER_RUNTIME} rm org.osbuild.koji.postgres || true
${CONTAINER_RUNTIME} network rm -f org.osbuild.koji || true
exit $EXIT_CODE
}
trap clean_up EXIT
${CONTAINER_RUNTIME} network create org.osbuild.koji
${CONTAINER_RUNTIME} run -d --name org.osbuild.koji.postgres --network org.osbuild.koji \
-e POSTGRES_USER=koji \
-e POSTGRES_PASSWORD=kojipass \
-e POSTGRES_DB=koji \
docker.io/library/postgres:12-alpine
${CONTAINER_RUNTIME} run -d --name org.osbuild.koji.koji --network org.osbuild.koji \
-p 8080:80 \
-e POSTGRES_USER=koji \
-e POSTGRES_PASSWORD=kojipass \
-e POSTGRES_DB=koji \
-e POSTGRES_HOST=org.osbuild.koji.postgres \
quay.io/osbuild/ghci-koji:v1
echo "Running, press CTRL+C to stop..."
sleep infinity
if [ $1 == "stop" ]; then
koji_stop
fi