Initial commit

main
Jerry Aldrich 6 years ago
commit fbc81e37f9
  1. 3
      .gitignore
  2. 40
      Dockerfile
  3. 1
      README.md
  4. 3
      bootstrap/configs/gitolite.conf
  5. 37
      entrypoint.sh
  6. 34
      gitolite.rc
  7. 14
      sshd_config

3
.gitignore vendored

@ -0,0 +1,3 @@
bootstrap/keys/sshd_host_keys/*
bootstrap/keys/git/*
bootstrap/repos/*

@ -0,0 +1,40 @@
FROM alpine
LABEL maintainer "jerryaldrichiii@gmail.com"
RUN apk add --no-cache openssh gitolite git-daemon
# Upstream maintainer won't accept patch to allow symlinks
# So...I do a bad thing...
RUN sed -i 's/\(find.*-type f\) -name/\1 -or -type l -name/' /usr/lib/gitolite/commands/compile-template-data
# Create group so data can be shared
RUN addgroup --gid 1000 shared
RUN adduser git shared
VOLUME ["/bootstrap"]
VOLUME ["/srv/git/repos"]
# Configure SSHD
RUN mkdir -p /srv/sshd
COPY sshd_config /srv/sshd/sshd_config
RUN chown -R git:git /srv/sshd
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
EXPOSE 2222 9418
USER git
RUN gitolite setup -a dummy
RUN mkdir /var/lib/git/.gitolite/keydir
RUN rm -rf /var/lib/git/repositories/
RUN ln -s /srv/git/repos/ /var/lib/git/repositories
RUN chown -h git:shared /var/lib/git/repositories
RUN rm /var/lib/git/.gitolite.rc
COPY gitolite.rc /var/lib/git/.gitolite.rc
ENTRYPOINT ["/entrypoint.sh"]

@ -0,0 +1 @@
# Gitolite via Docker

@ -0,0 +1,3 @@
repo testing
RW+ = @all
config cgit.desc = "A test description brought to you by k8s"

@ -0,0 +1,37 @@
#!/bin/sh
set -e
if [ ! -d /bootstrap/keys/git ]; then
echo "ERROR: Can't find SSH public keys (ending in '.pub') in /bootstrap/keys/git"
exit 1
fi
if [ ! -d /bootstrap/keys/sshd_host_keys/ ]; then
echo "ERROR: Can't find SSH host keys /bootstrap/keys/sshd_host_keys"
exit 1
fi
cp -R /bootstrap/keys/git/* /var/lib/git/.gitolite/keydir/
# NOTE: A symlink is not supported for gitolite.conf...see Dockerfile for hack
if [ -f /var/lib/git/.gitolite/conf/gitolite.conf ]; then
rm /var/lib/git/.gitolite/conf/gitolite.conf
ln -s /bootstrap/configs/gitolite.conf /var/lib/git/.gitolite/conf/gitolite.conf
fi
echo "Configuring gitolite...ignore warnings about brand new install"
gitolite compile
gitolite setup --hooks-only >/dev/null
gitolite trigger POST_COMPILE >/dev/null
mkdir /srv/sshd/host_keys
cp /bootstrap/keys/sshd_host_keys/ssh_host_rsa_key /srv/sshd/host_keys/
cp /bootstrap/keys/sshd_host_keys/ssh_host_rsa_key.pub /srv/sshd/host_keys/
chmod 400 /srv/sshd/host_keys/ssh_host_rsa_key
echo "Starting git daemon in background"
git daemon --base-path=/srv/git/repos --detach
echo "Starting SSHD in foreground"
/usr/sbin/sshd -f /srv/sshd/sshd_config -De

@ -0,0 +1,34 @@
# https://gitolite.com/gitolite/rc
%RC = (
UMASK => 0027,
GIT_CONFIG_KEYS => 'cgit\..*',
LOG_EXTRA => 1,
ROLES => {
READERS => 1,
WRITERS => 1,
},
ENABLE => [
'help',
'desc',
'info',
'perms',
'writable',
'ssh-authkeys',
'git-config',
'daemon',
# Comment out if not using cgit
'cgit',
],
);
# This line is required per Perl
1;
# Local variables:
# mode: perl
# End:
# vim: set syn=perl:

@ -0,0 +1,14 @@
Port 2222
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
AllowAgentForwarding no
AllowTcpForwarding no
PermitTTY no
X11Forwarding no
PrintMotd no
PidFile /srv/sshd/sshd.pid
HostKey /srv/sshd/host_keys/ssh_host_rsa_key
Loading…
Cancel
Save