Skip to content

Blackmind79/jenkins-1c-stack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

О проекте

Данный проект содержит в себе основные программы для CI/CD и проверки кода.

Стэк программ включает в себя: Jenkins, SonarQube, Allure

Требования

  1. При сборке jenkins-ssh-agent файл Dockerfile должен быть сохранен как UTF-8 с переводом строки LF (а не CRLF!)
  2. Образ jenkins-ssh-agent-1c после сборки занимает примерно 8.2Гб. Учитывайте при работе.
  3. Если вы хотите запустить Chromium из собранного агента, то зайдите внутрь него через VNC, зайдите в терминал MATE Terminal или XFCE Terminal и запустите команду: chromium --no-sandbox

ВНИМАНИЕ

! Сразу после установки зайдите в Grafana и смените стандартный пароль с admin/admin, либо раскомментируйте в compose.yaml параметр GF_SECURITY_ADMIN_PASSWORD и укажите пароль в .env

Также найден баг Chrome - иногда при входе в Allure UI пишет, что не найден сетевой путь. Это нет так, баг CORS. Удалите кэш сайта или откройте в режиме инкогнито. Либо запустите через Firefox или Edge.

Из-за особенности настройки Allure, доступ к UI идет как: http://host.docker.internal:5252, если установлен локально. Либо укажите внешнее имя хостовой машины, где развернут allure_api.

Аналогично для сервиса SonarQube. Так как контейнеры хоть и видят друг друга, но не возваращют корректно данные.

При запуске агента, переменная PATH сбрасывается, поэтому пришлось определять в pipeline. Внесу изменения в следующей сборке

Также вы можете установить платформу 1С в агент. К сожалению, из-за политики 1С нельзя скопировать платформу напрямую, требуется оплаченная подписка. Для этого положите файл платформы 1С для Linux *x86_64.run (например setup-full-8.3.26.1498-x86_64.run) в папку ./image/jenkins-ssh-agent. И соберите образ docker compose build jenkins-ssh-agent. Файл скопируется в образ и установится.

Можно установить несколько платформ, достаточно скопировать дистрибутивы. При сборке будут обнаружены все *.run файлы и установлены. После чего перезапустите контейнер docker compose down jenkins-ssh-agent && docker compose up -d jenkins-ssh-agent

Если необходимо добавить скрипты из библиотеки onescript, то добавьте их в последнем шаге в файле ./image/jenkins-ssh-agent/Dockerfile. Установка скриптов вынесена последним шагом, чтобы изменения касались последнего слоя и сборка шла быстро без переустановки других компонент.

Полезные ссылки и документация

Описание Ссылка
1C ITS 1С ИТС. Требуется оплаченая подписка.
Jenkins (Dockerhub) Jenkins in Dockerhub
Jenkins (Github) Jenkins in Github
SonarQube (Dockerhub) SonarQube at Dockerhub
SonarQube (Github) SonarQube at Github
SonarQube (Github compose.yaml) SonarQube at Github
Allure API (Dockerhub) Allure API at Dockerhub
Allure API (GitHub) Allure API at Github
Allure UI (Dockerhub) Allure UI at Dockerhub
Allure UI (GitHub) Allure UI at Github
Grafana (Dockerhub) Grafana at Dockerhub
Grafana Documentation Grafana Doc Site
Prometheus (Dockerhub) Prometheus at Dockerhub
Prometheus Documentation Prometheus Doc Site
Node-Exporter (Dockerhub) Node-Exporter at Dockerhub
Windows Exporter (Github) Node exporter for windows

Ссылки на программы, доступные после сборки

Ссылки на программы, доступные после сборки на локальном компьютере. Если вы подключаетесь удаленно, то работайте с fqdn (то есть с hostname, например http://mybestserver.example.com)

Описание Протокол Ссылка
VNC (Grapical desktop) HTTP http://host.docker.internal:7860/vnc.html?host=host.docker.internal&port=7860
Jenkins HTTP http://host.docker.internal:8080
SonarQube HTTP http://host.docker.internal:9000
Allure API HTTP http://host.docker.internal:5050
Allure UI HTTP http://host.docker.internal:5252
Jenkins SSH agent SSH (disabled) ssh jenkins@host.docker.internal -p 2200
Jenkins SSH VNC SSH http://host.docker.internal:7860/vnc.html?host=host.docker.internal&port=7860
Grafana HTTP http://host.docker.internal:3000
Prometheus HTTP (disabled) http://host.docker.internal:9090
Node-Exporter HTTP (disabled) http://host.docker.internal:9100

Основные шаги

Пример файла .env прилагается к проекту как dotenv. Переименуйте его в .env И заполните совими данными. В сборке агента jenkins-ssh-agent установлены менеджер пакетов opm и пакеты: opm, gitsync, vanessa-add, vanessa-automation, ibcmdrunner

  1. Предполагается, что docker уже установлен в системе. Если нет, следуйте документации Get Docker
  2. Создайте SSH-ключи для подключения агента к Jenkins.
# ssh-keygen -t ed25519 -f <filename in current dir> -N <password for opening key> -C "<comment>"
# Пример создания ключа без пароля:
ssh-keygen -t ed25519 -f agent_key -N "" -C "ssh agent key without password"
  1. Запустите проект
  • Соберите образ агента docker compose build, так как для агента требуется доустановить дополнительные пакеты.
  • Укажите в .env файле сгенерированный публичный ключ JENKINS_AGENT_SSH_PUBKEY
  • Запустите стэк docker compose up -d
  1. Настройте вход в Jenkins. Первоначальный пароль содержится в контейнере в /var/jenkins_home/secrets/initialAdminPassword (можно увидеть в папке проекта ) или в логах контейнера docker logs jenkins
  2. Добавьте агент в Jenkins, указав такие параметры как:
Удалённая корневая директория: /home/jenkins/agent
Способ запуска: Launch agent via SSH
Host Key Verification Strategy: Non verifying Verification Strategy (иначе при перезапуске постоянно будет отваливаться known_host)
Credentials: SSH Username with private key (укажите ваш сгенерированный приватный ключ)

Если у вас для агента используется хостовый сервер, то для безопасности можно сделать привязку через known_host. Для этого выполните:

docker compose up -d jenkins \
  && docker exec -it jenkins bash -c "mkdir $JENKINS_HOME/.ssh && chmod -R 700 $JENKINS_HOME/.ssh && touch $JENKINS_HOME/.ssh/known_hosts && chmod -R 600 $JENKINS_HOME/.ssh/known_hosts" \
  && docker compose up -d jenkins-ssh-agent \
  && docker exec -it jenkins bash -c "ssh-keyscan -H ${JENKINS_SSH_AGENT_HOSTNAME_OR_IP} >> $JENKINS_HOME/.ssh/known_hosts"

Где JENKINS_SSH_AGENT_HOSTNAME_OR_IP - адрес вашего хоста для агента

  1. При первом запуске поменяйте административный пароль SonarQube
Login: admin
Password: admin
  1. Добавьте плагины в Jenkins такие как: SonarQube Scanner, Allure
  2. Добавьте плагины в SonarQube такие как: Russian Pack, 1C (BSL) Community Plugin, YAML Analyzer, ShellCheck Analyzer

Обновление версии SonarQube

Для обновления версии SonarQube, после изменения тэга образа, требуется запустить обновление. Зайдите в браузере на ваш сервер с суффиксом /setup:

http://<yourserver>:<port>/setup
https://<your_server>/setup

Далее следуйте сообщениям мастера обновления.

Дополнительно

Параметры JVM, предназначенные специально для контроллера Jenkins, должны быть установлены через JENKINS_JAVA_OPTS, поскольку другие инструменты также могут реагировать на переменную окружения JAVA_OPTS.

Возможные ошибки

Note

Не стал добавлять в Dockerfile, так как могуть быть разные настройки безопасности.

Если у вас возникает ошибка в Jenkins (или в Jenkins Agent) при работе с удаленными репозиториями при работе через SSH ключи, то сделайте следующее:

docker exec -it jenkins bash -c "mkdir ~/.ssh && chmod 700 ./.ssh && touch ./.ssh/known_hosts && chmod 600 ./.ssh/known_hosts"

И добавьте просканированные ключи удаленного репозитория в known_hosts как в Jenkins, так и в агента:

docker exec -it jenkins bash -c "ssh-keyscan -t ed25519 github.com >> ~/.ssh/known_hosts && chmod 600 ~/.ssh/known_hosts"
docker exec -it sshjenkins bash -c "ssh-keyscan -t ed25519 github.com >> /home/jenkins/.ssh/known_hosts && chmod 600 /home/jenkins/.ssh/known_hosts"

Внимание! Добавление StrictHostKeyChecking no в файл /var/jenkins_home/.ssh/config не дает результат! Файл config должен отсутствовать в папке

About

Stack for 1C: Jenkins, SonarQube, Allure

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors