archives/gitlab-shell: new aport
This commit is contained in:
parent
f690124a2f
commit
9f6c072b60
6 changed files with 270 additions and 0 deletions
66
archives/gitlab-shell/APKBUILD
Normal file
66
archives/gitlab-shell/APKBUILD
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||||
|
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||||
|
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
|
||||||
|
pkgname=gitlab-shell
|
||||||
|
pkgver=14.36.0
|
||||||
|
pkgrel=0
|
||||||
|
pkgdesc="GitLab Shell handles git SSH sessions for GitLab"
|
||||||
|
url="https://gitlab.com/gitlab-org/gitlab-shell"
|
||||||
|
arch="all"
|
||||||
|
license="MIT"
|
||||||
|
depends="git openssh"
|
||||||
|
makedepends="go krb5-dev"
|
||||||
|
pkgusers="git"
|
||||||
|
pkggroups="git"
|
||||||
|
install="$pkgname.pre-install $pkgname.post-install"
|
||||||
|
# NOTE: user vs system gitconfig, see https://gitlab.com/gitlab-org/omnibus-gitlab/-/merge_requests/6166
|
||||||
|
source="https://gitlab.com/gitlab-org/gitlab-shell/-/archive/v$pkgver/gitlab-shell-v$pkgver.tar.gz
|
||||||
|
config.patch
|
||||||
|
change-config-path.patch
|
||||||
|
gitconfig
|
||||||
|
"
|
||||||
|
builddir="$srcdir/$pkgname-v$pkgver"
|
||||||
|
options="!check"
|
||||||
|
|
||||||
|
build() {
|
||||||
|
# BUILD_TAGS - build without tracing libs,
|
||||||
|
# see https://gitlab.com/gitlab-org/labkit/-/merge_requests/2
|
||||||
|
make build \
|
||||||
|
VERSION_STRING="$pkgver" \
|
||||||
|
BUILD_TAGS=""
|
||||||
|
}
|
||||||
|
|
||||||
|
package() {
|
||||||
|
local datadir="$pkgdir/var/lib/gitlab"
|
||||||
|
local libdir="$pkgdir/usr/lib/gitlab-shell"
|
||||||
|
|
||||||
|
# XXX: I couldn't figure out how/where is gitlab-shell called,
|
||||||
|
# so I kept /usr/lib/gitlab-shell. It should be changed to /usr.
|
||||||
|
make install DESTDIR="$pkgdir" PREFIX=/usr/lib/gitlab-shell
|
||||||
|
|
||||||
|
install -m644 VERSION "$libdir"/
|
||||||
|
install -m644 -D config.yml.example "$pkgdir"/etc/gitlab/gitlab-shell.yml
|
||||||
|
|
||||||
|
cd "$pkgdir"
|
||||||
|
|
||||||
|
rm "$libdir"/bin/gitlab-sshd
|
||||||
|
|
||||||
|
install -d -m755 -o git -g git \
|
||||||
|
"$pkgdir"/var/log/gitlab \
|
||||||
|
"$datadir"
|
||||||
|
|
||||||
|
install -d -m02770 -o git -g git \
|
||||||
|
"$datadir"/repositories
|
||||||
|
|
||||||
|
install -m644 -o git -g git "$srcdir"/gitconfig "$datadir"/.gitconfig
|
||||||
|
|
||||||
|
ln -s /etc/gitlab/gitlab-shell.yml "$libdir"/config.yml
|
||||||
|
ln -s /etc/gitlab/gitlab_shell_secret "$libdir"/.gitlab_shell_secret
|
||||||
|
}
|
||||||
|
|
||||||
|
sha512sums="
|
||||||
|
6b302be3630e60e3c9f76e58c61674bf08c3fe1395c9af5f354b9a557ecd1ddb43d27c9a995f868c4e4e2e734dd424a37c73e78d26b00f1f6a78f8670b45c371 gitlab-shell-v14.36.0.tar.gz
|
||||||
|
e9dd69c57c65197493f75bdde682075c6ab22892ed07d37c7a73129fb42a8349a676d5986bfd17f1df331645334248383845f21ce08d1e9664c38e4bbf5343ba config.patch
|
||||||
|
499b3a46ea94a33a23b01f6a7509d74f5a6781b930619b3b8ae42bdeae8a052cc636578744d7992b4ae4f9b9f72b11ee3d3c0f5e50986fa3f7e35b979b08aada change-config-path.patch
|
||||||
|
c53da7f145593693392d9fa880ad5a1909bfc7504fd1c93d94a468c3e0f5cc80f712f41ee1dc8bf38105b410c1165658f208bd88a70c4674104c78af33d8d09c gitconfig
|
||||||
|
"
|
11
archives/gitlab-shell/change-config-path.patch
Normal file
11
archives/gitlab-shell/change-config-path.patch
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
--- a/support/gitlab_config.rb
|
||||||
|
+++ b/support/gitlab_config.rb
|
||||||
|
@@ -4,7 +4,7 @@ class GitlabConfig
|
||||||
|
attr_reader :config
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
- @config = YAML.load_file(File.join(ROOT_PATH, 'config.yml'))
|
||||||
|
+ @config = YAML.load_file(ENV.fetch('GITLAB_SHELL_CONFIG', '/etc/gitlab/gitlab-shell.yml'))
|
||||||
|
end
|
||||||
|
|
||||||
|
def home
|
112
archives/gitlab-shell/config.patch
Normal file
112
archives/gitlab-shell/config.patch
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
diff --git a/config.yml.example.orig b/config.yml.example
|
||||||
|
index fb147c4..98eb0e3 100644
|
||||||
|
--- a/config.yml.example.orig
|
||||||
|
+++ b/config.yml.example
|
||||||
|
@@ -13,7 +13,7 @@ user: git
|
||||||
|
# only listen on a Unix domain socket. For Unix domain sockets use
|
||||||
|
# "http+unix://<urlquoted-path-to-socket>", e.g.
|
||||||
|
# "http+unix://%2Fpath%2Fto%2Fsocket"
|
||||||
|
-gitlab_url: "http+unix://%2Fhome%2Fgit%2Fgitlab%2Ftmp%2Fsockets%2Fgitlab-workhorse.socket"
|
||||||
|
+gitlab_url: "http+unix://%2Frun%2Fgitlab%2Fworkhorse.socket"
|
||||||
|
|
||||||
|
# When a http+unix:// is used in gitlab_url, this is the relative URL root to GitLab.
|
||||||
|
# Not used if gitlab_url is http:// or https://.
|
||||||
|
@@ -29,15 +29,15 @@ http_settings:
|
||||||
|
#
|
||||||
|
|
||||||
|
# File used as authorized_keys for gitlab user
|
||||||
|
-auth_file: "/home/git/.ssh/authorized_keys"
|
||||||
|
+auth_file: "/var/lib/gitlab/.ssh/authorized_keys"
|
||||||
|
|
||||||
|
# SSL certificate dir where custom certificates can be placed
|
||||||
|
# https://golang.org/pkg/crypto/x509/
|
||||||
|
-# ssl_cert_dir: /opt/gitlab/embedded/ssl/certs/
|
||||||
|
+# ssl_cert_dir: /etc/gitlab/ssl/certs/
|
||||||
|
|
||||||
|
# File that contains the secret key for verifying access to GitLab.
|
||||||
|
# Default is .gitlab_shell_secret in the gitlab-shell directory.
|
||||||
|
-# secret_file: "/home/git/gitlab-shell/.gitlab_shell_secret"
|
||||||
|
+secret_file: "/etc/gitlab/gitlab_shell_secret"
|
||||||
|
#
|
||||||
|
# The secret field supersedes the secret_file, and if set that
|
||||||
|
# file will not be read.
|
||||||
|
@@ -45,13 +45,13 @@ auth_file: "/home/git/.ssh/authorized_keys"
|
||||||
|
|
||||||
|
# Log file.
|
||||||
|
# Default is gitlab-shell.log in the root directory.
|
||||||
|
-# log_file: "/home/git/gitlab-shell/gitlab-shell.log"
|
||||||
|
+log_file: "/var/log/gitlab/gitlab-shell.log"
|
||||||
|
|
||||||
|
# Log level. INFO by default
|
||||||
|
-log_level: INFO
|
||||||
|
+log_level: WARN
|
||||||
|
|
||||||
|
# Log format. 'json' by default, can be changed to 'text' if needed
|
||||||
|
-# log_format: json
|
||||||
|
+log_format: text
|
||||||
|
|
||||||
|
# Audit usernames.
|
||||||
|
# Set to true to see real usernames in the logs instead of key ids, which is easier to follow, but
|
||||||
|
@@ -62,62 +62,6 @@ audit_usernames: false
|
||||||
|
# For more details, visit https://docs.gitlab.com/ee/development/distributed_tracing.html
|
||||||
|
# gitlab_tracing: opentracing://driver
|
||||||
|
|
||||||
|
-# This section configures the built-in SSH server. Ignored when running on OpenSSH.
|
||||||
|
-sshd:
|
||||||
|
- # Address which the SSH server listens on. Defaults to [::]:22.
|
||||||
|
- listen: "[::]:22"
|
||||||
|
- # Set to true if gitlab-sshd is being fronted by a load balancer that implements
|
||||||
|
- # the PROXY protocol.
|
||||||
|
- proxy_protocol: false
|
||||||
|
- # Proxy protocol policy ("use", "require", "reject", "ignore"), "use" is the default value
|
||||||
|
- # Values: https://github.com/pires/go-proxyproto/blob/195fedcfbfc1be163f3a0d507fac1709e9d81fed/policy.go#L20
|
||||||
|
- proxy_policy: "use"
|
||||||
|
- # Proxy allowed IP addresses. Takes precedent over proxy_policy. Disabled by default.
|
||||||
|
- # proxy_allowed:
|
||||||
|
- # - "192.168.0.1"
|
||||||
|
- # - "192.168.1.0/24"
|
||||||
|
- # Address which the server listens on HTTP for monitoring/health checks. Defaults to localhost:9122.
|
||||||
|
- web_listen: "localhost:9122"
|
||||||
|
- # Maximum number of concurrent sessions allowed on a single SSH connection. Defaults to 10.
|
||||||
|
- concurrent_sessions_limit: 10
|
||||||
|
- # Sets an interval after which server will send keepalive message to a client. Defaults to 15s.
|
||||||
|
- client_alive_interval: 15
|
||||||
|
- # The server waits for this time for the ongoing connections to complete before shutting down. Defaults to 10s.
|
||||||
|
- grace_period: 10
|
||||||
|
- # The server disconnects after this time if the user has not successfully logged in. Defaults to 60s.
|
||||||
|
- login_grace_time: 60
|
||||||
|
- # A short timeout to decide to abort the connection if the protocol header is not seen within it. Defaults to 500ms
|
||||||
|
- proxy_header_timeout: 500ms
|
||||||
|
- # The endpoint that returns 200 OK if the server is ready to receive incoming connections; otherwise, it returns 503 Service Unavailable. Defaults to "/start".
|
||||||
|
- readiness_probe: "/start"
|
||||||
|
- # The endpoint that returns 200 OK if the server is alive. Defaults to "/health".
|
||||||
|
- liveness_probe: "/health"
|
||||||
|
- # Specifies the available message authentication code algorithms that are used for protecting data integrity
|
||||||
|
- macs: [hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1]
|
||||||
|
- # Specifies the available Key Exchange algorithms
|
||||||
|
- kex_algorithms: [curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1]
|
||||||
|
- # Specified the ciphers allowed
|
||||||
|
- ciphers: [aes128-gcm@openssh.com, chacha20-poly1305@openssh.com, aes256-gcm@openssh.com, aes128-ctr, aes192-ctr,aes256-ctr]
|
||||||
|
- # Specified the available Public Key algorithms
|
||||||
|
- public_key_algorithms: [ssh-rsa, ssh-dss, ecdsa-sha2-nistp256, sk-ecdsa-sha2-nistp256@openssh.com, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521, ssh-ed25519, sk-ssh-ed25519@openssh.com, rsa-sha2-256, rsa-sha2-512]
|
||||||
|
- # SSH host key files.
|
||||||
|
- host_key_files:
|
||||||
|
- - /run/secrets/ssh-hostkeys/ssh_host_rsa_key
|
||||||
|
- - /run/secrets/ssh-hostkeys/ssh_host_ecdsa_key
|
||||||
|
- - /run/secrets/ssh-hostkeys/ssh_host_ed25519_key
|
||||||
|
- host_key_certs:
|
||||||
|
- - /run/secrets/ssh-hostkeys/ssh_host_rsa_key-cert.pub
|
||||||
|
- - /run/secrets/ssh-hostkeys/ssh_host_ecdsa_key-cert.pub
|
||||||
|
- - /run/secrets/ssh-hostkeys/ssh_host_ed25519_key-cert.pub
|
||||||
|
- # GSSAPI-related settings
|
||||||
|
- gssapi:
|
||||||
|
- # Enable the gssapi-with-mic authentication method. Defaults to false.
|
||||||
|
- enabled: false
|
||||||
|
- # Keytab path. Defaults to "", system default (usually /etc/krb5.keytab).
|
||||||
|
- keytab: ""
|
||||||
|
- # The Kerberos service name to be used by sshd. Defaults to "", accepts any service name in keytab file.
|
||||||
|
- service_principal_name: ""
|
||||||
|
-
|
||||||
|
lfs:
|
||||||
|
# https://gitlab.com/groups/gitlab-org/-/epics/11872, disabled by default.
|
||||||
|
pure_ssh_protocol: false
|
17
archives/gitlab-shell/gitconfig
Normal file
17
archives/gitlab-shell/gitconfig
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# Based on files/gitlab-cookbooks/gitlab/templates/default/gitconfig.erb
|
||||||
|
# in omnibus-gitlab.
|
||||||
|
|
||||||
|
[user]
|
||||||
|
name = GitLab
|
||||||
|
email = gitlab@local.host
|
||||||
|
|
||||||
|
[core]
|
||||||
|
# Needed for the web editor.
|
||||||
|
autocrlf = input
|
||||||
|
alternateRefsCommand="exit 0 #"
|
||||||
|
# This option is unnecessary on journaled file systems and it's not recognized
|
||||||
|
# by git >= 2.36.
|
||||||
|
# fsyncObjectFiles = true
|
||||||
|
|
||||||
|
[gc]
|
||||||
|
auto = 0
|
23
archives/gitlab-shell/gitlab-shell.post-install
Normal file
23
archives/gitlab-shell/gitlab-shell.post-install
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
#!/bin/sh
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
keys_file='/var/lib/gitlab/.ssh/authorized_keys'
|
||||||
|
|
||||||
|
if [ ! -f "$keys_file" ]; then
|
||||||
|
keys_dir="$(dirname "$keys_file")"
|
||||||
|
echo "* Initializing authorized_keys file in $keys_dir" 1>&2
|
||||||
|
|
||||||
|
mkdir -m0700 -p "$keys_dir"
|
||||||
|
chown git:git "$keys_dir"
|
||||||
|
|
||||||
|
touch "$keys_file"
|
||||||
|
chmod 0600 "$keys_file"
|
||||||
|
chown git:git "$keys_file"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat <<EOF >&2
|
||||||
|
*
|
||||||
|
* GitLab Shell has been initialized. Read /etc/gitlab/gitlab-shell.yml and
|
||||||
|
* modify settings as need.
|
||||||
|
*
|
||||||
|
EOF
|
41
archives/gitlab-shell/gitlab-shell.pre-install
Normal file
41
archives/gitlab-shell/gitlab-shell.pre-install
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# It's very important to set user/group correctly.
|
||||||
|
|
||||||
|
git_dir='/var/lib/gitlab'
|
||||||
|
|
||||||
|
if ! getent group git >/dev/null; then
|
||||||
|
echo '* Creating group git' >&2
|
||||||
|
|
||||||
|
addgroup -S git
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! id git 2>/dev/null 1>&2; then
|
||||||
|
echo '* Creating user git' >&2
|
||||||
|
|
||||||
|
adduser -DHS -G git -h "$git_dir" -s /bin/sh \
|
||||||
|
-g "added by apk for gitlab-shell" git
|
||||||
|
passwd -u git >/dev/null # unlock
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! id -Gn git | grep -Fq redis; then
|
||||||
|
echo '* Adding user git to group redis' >&2
|
||||||
|
|
||||||
|
addgroup git redis
|
||||||
|
fi
|
||||||
|
|
||||||
|
user_home="$(getent passwd git | cut -d: -f6)"
|
||||||
|
|
||||||
|
if [ "$user_home" != "$git_dir" ]; then
|
||||||
|
cat >&2 <<-EOF
|
||||||
|
!!
|
||||||
|
!! User git has home directory in $user_home, but this package and gitlab-ce
|
||||||
|
!! package assumes $git_dir. Although it's possible to use a different
|
||||||
|
!! directory, it's really not easy.
|
||||||
|
!!
|
||||||
|
!! Please change git's home directory to $git_dir, or adjust settings
|
||||||
|
!! and move files yourself. Otherwise GitLab will not work!
|
||||||
|
!!
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
Loading…
Add table
Reference in a new issue