Compare commits
No commits in common. "master" and "release-1.0.1" have entirely different histories.
master
...
release-1.
@ -100,7 +100,7 @@ RUN apk add --no-cache \
|
|||||||
|
|
||||||
# setup SSH server
|
# setup SSH server
|
||||||
RUN sed -i /etc/ssh/sshd_config \
|
RUN sed -i /etc/ssh/sshd_config \
|
||||||
-e 's/#PermitRootLogin.*/PermitRootLogin yes/' \
|
-e 's/#PermitRootLogin.*/PermitRootLogin no/' \
|
||||||
-e 's/#PasswordAuthentication.*/PasswordAuthentication no/' \
|
-e 's/#PasswordAuthentication.*/PasswordAuthentication no/' \
|
||||||
-e 's/#SyslogFacility.*/SyslogFacility AUTH/' \
|
-e 's/#SyslogFacility.*/SyslogFacility AUTH/' \
|
||||||
-e 's/#LogLevel.*/LogLevel INFO/' \
|
-e 's/#LogLevel.*/LogLevel INFO/' \
|
||||||
@ -121,9 +121,7 @@ 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
|
# 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`)
|
# allow environment variables to be sourced (see `sed` command related to `PermitUserEnvironment`)
|
||||||
RUN echo "PATH=${PATH}" >> ${JENKINS_AGENT_HOME}/.ssh/environment
|
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
|
COPY setup-sshd /usr/local/bin/setup-sshd
|
||||||
RUN chmod a+x /usr/local/bin/setup-sshd
|
|
||||||
|
|
||||||
EXPOSE 22
|
EXPOSE 22
|
||||||
|
|
||||||
|
4
Jenkinsfile
vendored
4
Jenkinsfile
vendored
@ -37,10 +37,6 @@ pipeline {
|
|||||||
tag "${env.RELEASE_TAG_PREFIX}*"
|
tag "${env.RELEASE_TAG_PREFIX}*"
|
||||||
}
|
}
|
||||||
steps {
|
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 login ${env.REGISTRY_HOST} -u ${env.GITEA_USER} -p ${env.GITEA_OAUTH_TOKEN}"
|
||||||
sh "docker image push ${resolveImageName(env)}"
|
sh "docker image push ${resolveImageName(env)}"
|
||||||
}
|
}
|
||||||
|
48
README.md
48
README.md
@ -10,52 +10,6 @@ RUN addgroup docker || true && \
|
|||||||
- В `setup-sshd` вписываем строки:
|
- В `setup-sshd` вписываем строки:
|
||||||
```shell
|
```shell
|
||||||
# dockerd's patch
|
# 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`, и на него.
|
|
10
setup-sshd
10
setup-sshd
@ -1,6 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
echo "STARTING DOCKER DAEMON AS $(id -u)"
|
|
||||||
dockerd-entrypoint.sh &
|
|
||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
@ -43,11 +41,6 @@ write_key() {
|
|||||||
echo "$1" > "${JENKINS_AGENT_HOME}/.ssh/authorized_keys"
|
echo "$1" > "${JENKINS_AGENT_HOME}/.ssh/authorized_keys"
|
||||||
chown -Rf "${ID_GROUP}" "${JENKINS_AGENT_HOME}/.ssh"
|
chown -Rf "${ID_GROUP}" "${JENKINS_AGENT_HOME}/.ssh"
|
||||||
chmod 0700 -R "${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
|
if [[ ${JENKINS_AGENT_SSH_PUBKEY} == ssh-* ]]; then
|
||||||
@ -85,5 +78,8 @@ fi
|
|||||||
# generate host keys if not present
|
# generate host keys if not present
|
||||||
ssh-keygen -A
|
ssh-keygen -A
|
||||||
|
|
||||||
|
# theswayfarer's patch
|
||||||
|
dockerd-entrypoint.sh
|
||||||
|
|
||||||
# do not detach (-D), log to stderr (-e), passthrough other arguments
|
# do not detach (-D), log to stderr (-e), passthrough other arguments
|
||||||
exec /usr/sbin/sshd -D -e "${@}"
|
exec /usr/sbin/sshd -D -e "${@}"
|
||||||
|
Loading…
Reference in New Issue
Block a user