|
|
|
@ -5,19 +5,22 @@ set -eu
|
|
|
|
|
root_dir=$(readlink -f $(dirname $(realpath "$0"))/..)
|
|
|
|
|
if ! [ -f "$root_dir"/id_rsa ]; then
|
|
|
|
|
echo 'Generating SSH key'
|
|
|
|
|
ssh-keygen -t rsa -f "$root_dir"/id_rsa -q -N ''
|
|
|
|
|
ssh-keygen -t rsa -f "$root_dir/id_rsa" -q -N ''
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
run_image() {
|
|
|
|
|
# Run the codefirst-docdeployer image with the given branch and command.
|
|
|
|
|
#
|
|
|
|
|
# The container will automatically be added to the same network as a container
|
|
|
|
|
# named 'nginx'. The codefirst-nginx container acts as a SSH server and will
|
|
|
|
|
# be started and stopped automatically. The SSH user, port and authorized
|
|
|
|
|
# keys are already configured.
|
|
|
|
|
local branch=$1
|
|
|
|
|
local pubkey=$(<"$root_dir"/id_rsa.pub)
|
|
|
|
|
local pubkey=$(<"$root_dir/id_rsa.pub")
|
|
|
|
|
shift
|
|
|
|
|
docker network inspect codefirst &> /dev/null || docker network create codefirst
|
|
|
|
|
docker volume create --name=codefirst-docdeployer-drone
|
|
|
|
|
docker volume create --name=codefirst-docdeployer-docs
|
|
|
|
|
docker volume create --name=codefirst-nginx
|
|
|
|
|
nginx_id=$(docker run --rm -d -v codefirst-nginx:/usr/share/nginx --net=codefirst -e PUBLIC_KEY="$pubkey" -e USER_NAME=codefirst --hostname=nginx linuxserver/openssh-server)
|
|
|
|
|
sleep 1 # Wait to let the container start
|
|
|
|
|
nginx_id=$(docker run --rm -d -v codefirst-nginx:/usr/share/nginx --net=codefirst -e PUBLIC_KEY="$pubkey" -e USER_NAME=codefirst -e PUID=0 --hostname=nginx codefirst-nginx)
|
|
|
|
|
sleep 2 # Wait to let the container start
|
|
|
|
|
docker run -v codefirst-docdeployer-drone:/drone/src \
|
|
|
|
|
-v codefirst-docdeployer-docs:/docs \
|
|
|
|
|
--net=codefirst \
|
|
|
|
@ -30,8 +33,11 @@ run_image() {
|
|
|
|
|
--rm codefirst-docdeployer \
|
|
|
|
|
-c "sed -i 's/ssh/ssh -p 2222/g' /entrypoint.sh && sed -i 's/root@nginx/codefirst@nginx/g' /entrypoint.sh && $*"
|
|
|
|
|
docker stop "$nginx_id"
|
|
|
|
|
docker volume rm codefirst-docdeployer-drone codefirst-docdeployer-docs
|
|
|
|
|
docker run --rm -i -v codefirst-nginx:/usr/share/nginx busybox find /usr/share/nginx
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
docker build -t codefirst-docdeployer "$root_dir"
|
|
|
|
|
docker build -t codefirst-nginx "$root_dir/test/nginx"
|
|
|
|
|
|
|
|
|
|
run_image main 'doxygen -g && /entrypoint.sh -b main -l . -t doxygen -d sourcecode_documentation'
|
|
|
|
|