chore: add prefix

This commit is contained in:
Rodney, Tiara 2025-05-09 04:22:30 +02:00
parent 717fb1ac8e
commit 0af2a3c72b
No known key found for this signature in database
GPG key ID: 5CD8EC1D46106723
10 changed files with 0 additions and 0 deletions

View file

@ -1,137 +0,0 @@
#!/usr/bin/env sh
# name of remote sample repository to apply
REMOTE_REPO_NAME='sample.git'
# origin of sample repository to use; will bare clone
REMOTE_REPO_ORIGIN='https://github.com/VaasuDevanS/cowsay-python.git'
# docker-compose service name
DOCKERC_SERVICE_NAME='git-httpd'
# no spaces allowed, in addition to $, ideally RFC2616 quoted string
export REMOTE_USERNAME='sample-user'
# no spaces allowed, in addition to $, ideally RFC2616 quoted string
export REMOTE_PASSWORD='sample-password'
LOCAL_IP_PORT='8080'
export REPO_URL='http://$REMOTE_USERNAME:$REMOTE_PASSWORD@'"$(hostname -i):$LOCAL_IP_PORT/$REMOTE_REPO_NAME"
echo "$REPO_URL"
# check for any OCI-compatible executable
export DOCKER=docker
command -v docker 1>/dev/null
test $? -ne 0 && {
command -v podman 1>/dev/null
if test $? -ne 0; then
echo "neither docker, nor podman found. exiting..." >&2
exit 1;
else
export DOCKER='podman'
fi
}
# check for any Compose-spec compatible executable
export DOCKER_COMPOSE=docker-compose
command -v docker-compose 1>/dev/null
test $? -ne 0 && {
command -v podman-compose 1>/dev/null
if test $? -ne 0; then
echo "neither docker-compose, nor podman-compose found. exiting..." >&2
exit 1;
else
export DOCKER_COMPOSE='podman-compose'
fi
}
# dump the default httpd.conf and remove all comments
sh -cx '$DOCKER run --rm httpd:2.4 cat /usr/local/apache2/conf/httpd.conf' \
| sed 's|^[[:space:]]*#.*$||' | grep . > httpd.conf
# append git-http specific virtualhost to local httpd.conf
cat << EOF >> httpd.conf
LoadModule cgi_module modules/mod_cgi.so
LoadModule alias_module modules/mod_alias.so
LoadModule cgi_module modules/mod_cgi.so
<VirtualHost *:80>
SetEnv GIT_PROJECT_ROOT /srv/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAliasMatch \
"(?x)^/(.*/(HEAD | \\
info/refs | \\
objects/(info/[^/]+ | \\
[0-9a-f]{2}/[0-9a-f]{38} | \\
pack/pack-[0-9a-f]{40}\.(pack|idx)) | \\
git-(upload|receive)-pack))\$" \\
"/usr/lib/git-core/git-http-backend/\$1"
<Directory /usr/lib/git-core>
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
AllowOverride None
# Require all granted
AuthType Basic
AuthName "User Authentication"
AuthUserFile /usr/local/apache2/.htpasswd
Require valid-user
</Directory>
# not important (anymore), just for debugging
LogLevel trace8
ErrorLog /var/log/apache2/git/error.log
CustomLog /var/log/apache2/git/access.log combined
</VirtualHost>
EOF
# create Dockerfile
cat << EOF > Dockerfile
FROM httpd:2.4
# https://git-scm.com/docs/git-http-backend
RUN apt-get update -y && apt-get install -y git apache2-utils
COPY httpd.conf /usr/local/apache2/conf/httpd.conf
RUN mkdir -p /var/log/apache2/git
RUN chown -R www-data:www-data /var/log/apache2
EOF
# create docker-compose.yml
cat << EOF > docker-compose.yml
services:
$DOCKERC_SERVICE_NAME:
build: .
ports:
- "$LOCAL_IP_PORT:80"
EOF
# just a wrapper for repetitive calls to the linux container
remotecmd() {
sh -cx "$DOCKER_COMPOSE exec -w /srv/git/$REMOTE_REPO_NAME $DOCKERC_SERVICE_NAME -- $@"
}
# start the container
sh -cx '$DOCKER_COMPOSE up --detach --build --force-recreate'
# initialize the sample repository directory within the container
sh -cx "$DOCKER_COMPOSE exec $DOCKERC_SERVICE_NAME mkdir -p /srv/git/$REMOTE_REPO_NAME"
remotecmd "git clone --bare --shared $REMOTE_REPO_ORIGIN ."
remotecmd 'git update-server-info'
remotecmd 'chmod -R 755 ..'
remotecmd 'chown -R www-data:www-data ..'
remotecmd "htpasswd -cb /usr/local/apache2/.htpasswd $REMOTE_USERNAME $REMOTE_PASSWORD"
remotecmd 'cat /usr/local/apache2/.htpasswd'
sh -cx "python3 -m venv .venv"
sh -cx ".venv/bin/pip install pipenv"
sh -cx '.venv/bin/pipenv install $REPO_URL'