Compare commits

..

14 Commits

Author SHA1 Message Date
d3b12408a6 updated README.md
All checks were successful
GIT.TSWF.IO/docker-base-images/jenkins-ssh-agent-jdk17-dind/pipeline/head This commit looks good
Gitea/docker-base-images/jenkins-ssh-agent-jdk17-dind/pipeline/head This commit looks good
2025-03-03 04:34:55 +03:00
df3d2924d9 updated Dockerfile
All checks were successful
Gitea/docker-base-images/jenkins-ssh-agent-jdk17-dind/pipeline/head This commit looks good
2025-03-03 04:19:27 +03:00
cefcb44095 updated Dockerfile
Some checks failed
Gitea/docker-base-images/jenkins-ssh-agent-jdk17-dind/pipeline/head There was a failure building this commit
2025-03-03 04:18:28 +03:00
9b77b744e0 updated Dockerfile
Some checks failed
Gitea/docker-base-images/jenkins-ssh-agent-jdk17-dind/pipeline/head There was a failure building this commit
2025-03-03 04:16:50 +03:00
e260864a84 updated entrypoint
All checks were successful
Gitea/docker-base-images/jenkins-ssh-agent-jdk17-dind/pipeline/head This commit looks good
2025-03-03 04:12:40 +03:00
44c51a62e5 feature: allow to connect as root
All checks were successful
Gitea/docker-base-images/jenkins-ssh-agent-jdk17-dind/pipeline/head This commit looks good
2025-03-03 04:08:14 +03:00
02f3aec625 chore: debug setup-sshd
Some checks failed
Gitea/docker-base-images/jenkins-ssh-agent-jdk17-dind/pipeline/head There was a failure building this commit
2025-03-03 03:16:53 +03:00
7995151a4d chore: debug Jenkinsfile
All checks were successful
Gitea/docker-base-images/jenkins-ssh-agent-jdk17-dind/pipeline/head This commit looks good
2025-03-03 03:10:34 +03:00
137b16af8f chore: debug Jenkinsfile
Some checks failed
Gitea/docker-base-images/jenkins-ssh-agent-jdk17-dind/pipeline/head There was a failure building this commit
2025-03-03 02:58:37 +03:00
fdbf1cd52e chore: debug Jenkinsfile
Some checks failed
Gitea/docker-base-images/jenkins-ssh-agent-jdk17-dind/pipeline/head There was a failure building this commit
2025-03-03 02:57:10 +03:00
12bbeeb5fa chore: updated README
Some checks failed
Gitea/docker-base-images/jenkins-ssh-agent-jdk17-dind/pipeline/head There was a failure building this commit
2025-03-03 02:23:47 +03:00
ae52dce4ed chore: updated setup-sshd
All checks were successful
Gitea/docker-base-images/jenkins-ssh-agent-jdk17-dind/pipeline/head This commit looks good
2025-03-03 02:03:05 +03:00
23b53821ef chore: updated setup-sshd
All checks were successful
Gitea/docker-base-images/jenkins-ssh-agent-jdk17-dind/pipeline/head This commit looks good
2025-03-03 01:58:30 +03:00
bb1a4631aa chore: updated Dockerfile
All checks were successful
Gitea/docker-base-images/jenkins-ssh-agent-jdk17-dind/pipeline/head This commit looks good
2025-03-03 01:01:54 +03:00
4 changed files with 61 additions and 5 deletions

View File

@ -100,7 +100,7 @@ RUN apk add --no-cache \
# setup SSH server
RUN sed -i /etc/ssh/sshd_config \
-e 's/#PermitRootLogin.*/PermitRootLogin no/' \
-e 's/#PermitRootLogin.*/PermitRootLogin yes/' \
-e 's/#PasswordAuthentication.*/PasswordAuthentication no/' \
-e 's/#SyslogFacility.*/SyslogFacility AUTH/' \
-e 's/#LogLevel.*/LogLevel INFO/' \
@ -121,7 +121,9 @@ WORKDIR "${JENKINS_AGENT_HOME}"
# The file path has been created earlier in the file by `mkdir -p` and we also have configured sshd so that it will
# allow environment variables to be sourced (see `sed` command related to `PermitUserEnvironment`)
RUN echo "PATH=${PATH}" >> ${JENKINS_AGENT_HOME}/.ssh/environment
RUN mkdir -p /root/.ssh/ && echo "PATH=${PATH}" >> /root/.ssh/environment
COPY setup-sshd /usr/local/bin/setup-sshd
RUN chmod a+x /usr/local/bin/setup-sshd
EXPOSE 22

4
Jenkinsfile vendored
View File

@ -37,6 +37,10 @@ pipeline {
tag "${env.RELEASE_TAG_PREFIX}*"
}
steps {
sh "id"
sh "whoami"
sh 'echo Home: $HOME'
sh 'awk -F: -v user=$(whoami) \'$1 == user { print $6 }\' /etc/passwd'
sh "docker login ${env.REGISTRY_HOST} -u ${env.GITEA_USER} -p ${env.GITEA_OAUTH_TOKEN}"
sh "docker image push ${resolveImageName(env)}"
}

View File

@ -10,6 +10,52 @@ RUN addgroup docker || true && \
- В `setup-sshd` вписываем строки:
```shell
# dockerd's patch
dockerd-entrypoint.sh
dockerd-entrypoint.sh &
```
- Собираем, тэгаем и пушим
# Как использовать:
## Запуск агента
Генерируем новую пару SSH ключей.
```shell
ssh-keygen -t rsa -b 4096 -f .ssh/jenkins-ssh-agent -C "jenkins-ssh-agent"
```
Желательно установить [SysBox](https://github.com/nestybox/sysbox/releases/tag/v0.6.6), без него придется делать контейнер с агентом привилегированным.
Берем `docker-compose.yml` файл:
```yaml
version: '3.7'
services:
jenkins-agent:
image: git.tswf.io/docker-base-images/jenkins-ssh-agent-jdk17-dind:1.0.7
restart: always
# Используем, если не хотим делать контейнер привилегированным
runtime: sysbox-runc
# Если не используем SysBox, а зря :c
#privileged: true
ports:
- "31674:22"
environment:
JENKINS_AGENT_SSH_PUBKEY: "<YOR_SSH_PUBLIC_KEY_HERE>"
```
и заменяем `<YOR_SSH_PUBLIC_KEY_HERE>` на сгенеренный публичный ключ
Запускаем агента:
```shell
docker compose up -d
```
## Настройки Jenkins
Смотри [описание агента](AGENT.README.md)
# Использование от ROOT
Образ пропатчен для возможности запуска агента от имени ROOT. Решает сложности с запуском одноразовых docker-агентов на нашей ноде.
Просто в credentials при указании логина пишем `root`. Публичный ключ прописывается и на `jenkins`, и на него.

View File

@ -1,4 +1,6 @@
#!/usr/bin/env bash
echo "STARTING DOCKER DAEMON AS $(id -u)"
dockerd-entrypoint.sh &
set -ex
@ -41,6 +43,11 @@ write_key() {
echo "$1" > "${JENKINS_AGENT_HOME}/.ssh/authorized_keys"
chown -Rf "${ID_GROUP}" "${JENKINS_AGENT_HOME}/.ssh"
chmod 0700 -R "${JENKINS_AGENT_HOME}/.ssh"
mkdir -p "/root/.ssh"
echo "$1" > "/root/.ssh/authorized_keys"
chown -Rf root /root/.ssh
chmod 0700 -R /root/.ssh
}
if [[ ${JENKINS_AGENT_SSH_PUBKEY} == ssh-* ]]; then
@ -78,8 +85,5 @@ fi
# generate host keys if not present
ssh-keygen -A
# theswayfarer's patch
dockerd-entrypoint.sh
# do not detach (-D), log to stderr (-e), passthrough other arguments
exec /usr/sbin/sshd -D -e "${@}"