Архив автора: admin

Как обновить Debian 10 до Debian 11 Bullseye

14 августа 2021 года состоялся релиз старой и очень популярной Linux системы — Debian. В своей статье я подробно расскажу, как обновиться с прошлого релиза Debian 10 до 11-й версии Bullseye. Сам процесс не сложный, проходит в штатном режиме с помощью встроенных средств операционной системы.

 

Читать

Книга: C # на примерах

Книга: C # на примерах

Книга: C# на примерах. Евдокимов П. В. 4-е издание.

Эта книга является превосходным учебным пособием для изучения языка программирования C # на примерах. Изложение ведется
последовательно: от развертывания .NET и написания первой программы, до многопоточного программирования, создания клиентсерверных приложений и разработки программ для мобильных устройств. По ходу книги даются все необходимые пояснения и
комментарии. В четвертом издании был частично переработан текст по ходу изложения всей книги, а также обновлены некоторые
примеры. Книга написана простым и доступным языком. Лучший выбор для результативного изучения С#. Начните сразу писать программы на С#!

Скачать с mail облака

2021-08-21T08:28:03Книги и Курсы

Книга: C# для чайников [2019] Мюллер Джон Пол

Книга: C# для чайников [2019] Мюллер Джон Пол

C# для чайников [2019] Мюллер Джон Пол

C# — мощный язык программирования, который стал любимым инструментом программистов, работающих с Visual Studio, и эта книга поможет вам быстро и безболезненно освоить новейшую его версию.
Вы научитесь создавать приложения для Windows, использовать графику, потоки, контейнеры, базы данных и многое другое, узнаете, что такое .NET Framework, полиморфизм, наследование и обобщенное программирование, а также изучите множество других важных и интересных вещей.

Из книги «C# для чайников» вы узнаете не только о типах, конструкциях и операторах языка C#, но и о ключевых концепциях объектно-ориентированного программирования, реализованных в этом языке, который в настоящее время представляет собой один из наиболее приспособленных для создания программ для Windows-инструментов

Если вы в начале большого пути в программирование, смелее покупайте книгу «C# для чайников»: она послужит вам отличным путеводителем, который облегчит ваши первые шаги на этом длинном, но очень увлекательном пути

Из книги «C# для чайников» Вы узнаете, как создать консольное приложение и что такое делегаты, события и интерфейсы. C# — мощный язык программирования, который стал любимым инструментом программистов, работающих с Visual Studio, и эта книга поможет вам быстро и безболезненно освоить новейшую его версию

Вы научитесь создавать приложения для Windows, использовать графику, потоки, контейнеры, базы данных и многое другое, узнаете, что такое .NET Framework, полиморфизм, наследование и обобщенное программирование, а также изучите множество других важных и интересных вещей

В книге «C# для чайников»:

* Создание приложений для Windows
* Циклы и условные переходы
* Синтаксис коллекций
* Интерфейсы и объектно-ориентированные концепции
* Делегаты и события
* Безопасный код
* Работа с разнообразными источниками данных
* Создание приложений для работы в Интернете

Даже если вы никогда не имели дела с программированием, книга «C# для чайников» поможет вам освоить язык C# и научиться писать на нем программы любой сложности. Для читателей, которые уже знакомы с каким-либо языком программирования, процесс изучения C# только упростится, но иметь опыт программирования для чтения книги совершенно необязательно

Джон Пол Мюллер — независимый автор и технический редактор. На сегодняшний день он написал 104 книги и более 600 статей на самые разные темы: от сетей до искусственного интеллекта и от управления базами данных до головокружительного программирования. Некоторые из его текущих работ включают книгу о машинном обучении, пару книг по Python и книгу о MATLAB. Благодаря навыкам технического редактора Джон помог более чем 70 авторам усовершенствовать свои рукописи. Джон всегда интересовался разработкой программного обеспечения и писал о самых разных языках программирования

Скачать с mail облака

2021-08-20T22:44:10Книги и Курсы

Microsoft Surface Go 2 — самый маленький планшетный компьютер 2-в-1

Microsoft снова удивила нас своим самым маленьким съемным планшетным компьютером для бизнеса — Surface Go 2.

Microsoft Surface Go 2 — доступный планшетный компьютер для бизнеса на базе Windows 10 для повседневных задач. Он был анонсирован вместе с   ноутбуком Microsoft Surface Book 3 прошлой весной.

Этот трансформируемый планшет получил 10,5-дюймовый дисплей PixelSense, батарею с увеличенным сроком службы, но при этом оставался очень портативным. Кроме того, дополнительная возможность LTE — это дополнительное преимущество, которое позволяет пользователям оставаться на связи практически в любом месте. Давайте подробнее рассмотрим возможности планшета Microsoft Surface Go 2.

 

Microsoft Surface Go 2: цены и конфигурации

Microsoft предлагает несколько  конфигураций Surface Go 2 по цене от 399,99 до 729,99 долларов. Все модели поддерживают стандарт беспроводной связи 802.11a/b/g/n/ac/ax и технологию Bluetooth Wireless 5.0.

  • Самая дешевая базовая модель Microsoft Surface Go 2 поставляется с процессором Intel Pentium Gold 4425Y, 4 ГБ оперативной памяти и 64 ГБ памяти eMMC.
  • Базу можно настроить на 8 ГБ ОЗУ и 128 ГБ SSD-накопителя при покупке за дополнительные 150 долларов (цена 549,99 долларов).
  • Существует также конфигурация на базе процессора Intel Core M3 Wi-Fi с 8 ГБ оперативной памяти и 128 ГБ SSD.
  • Версия LTE модели M3 стоит 729,99 долларов.

 

Microsoft Surface Go 2: крышка типа Surface и ручка Microsoft Pen

Отметим, что крышка Surface Type Cover продается отдельно. Но добавление крышки клавиатуры в основном превращает этот 10,5-дюймовый планшет в ультрапортативный портативный компьютер. И все благодаря полной версии Windows 10 S Mode. Корпорация Майкрософт предлагает следующие варианты расцветки обучаемых чехлов для клавиатуры: Ice Blue, Poppy Red, Black и Platinum.

Планшет также поддерживает  Surface Pen  и беспроводную мышь Bluetooth.

 

Microsoft Surface Go 2: дизайн и дисплей

Планшет Microsoft Surface Go 2 по дизайну чем-то похож на более мощную   модель Microsoft Surface Pro 7. Он оснащен серебристым магниевым корпусом с зеркальным логотипом Microsoft на задней панели. Однако, будучи 10,5-дюймовой моделью, версия Surface Go 2 заметно меньше и легче, чем ее 12,3-дюймовые аналоги серии Surface Pro. Модель имеет толщину 0,3 дюйма и весит всего 0,57 кг. С другой стороны, Surface Pro 7 весит 0,77 кг. Конечно, он также имеет лучшее оборудование.

Что касается дисплея, то это сенсорный экран PixelSense с разрешением 1920 x1280 FHD. Эта версия также имеет немного более высокую плотность пикселей — 220 пикселей на дюйм и соотношение сторон 3:2. И хотя это стандартно для режима планшета, вы заметите это при использовании Surface Go 2 в качестве замены ноутбука. Например, в широкоэкранном формате видео вы увидите черные полосы над и под отснятым материалом.

Microsoft Surface Go 2 - самый маленький планшетный компьютер 2-в-1

 

Microsoft Surface Go 2: камеры, порты и аудио

Как и все планшеты и кабриолеты Surface, Surface Go 2 оснащен HD-камерами на передней и задней панели. Фронтальная камера с разрешением 5,0 МП 1080p поддерживает функцию аутентификации Windows Hello Face и в основном используется для звонков по телефону и видеоконференций. На задней панели также есть разрешение 1080p HD и автофокус на 8,0 МП, что отлично подходит для фото- и видеосъемки.

Surface Pro Go 2 оснащен удивительным количеством портов для такого небольшого устройства. У вас есть порт USB-C, комбинированный разъем для наушников и разъем Surface на правой стороне. На левой стороне вы найдете устройство для чтения карт памяти microSD, кнопку питания и ручки регулировки громкости.

Также стоит упомянуть, что в планшете установлены стереодинамики Dolby Audio Premium мощностью 2 Вт, обеспечивающие приличное качество звука. Так что прослушивание музыки, подкастов, аудиокниг и потоковых передач на этом планшете может быть весьма приятным. Но если вы ищете более глубокий звук и большую громкость, неизбежно приобретение пары качественных внешних динамиков или наушников.

 

Общая производительность Microsoft Surface Go 2

Обратите внимание, что Microsoft Surface Go 2 ни в коем случае не является мощным устройством. И хотя планшет поддерживает все приложения для Windows, он предназначен для решения основных повседневных задач. С помощью Surface Go 2 вы можете делать заметки, записывать идеи, делать наброски, проверять электронную почту и многое другое. Вы даже можете делать презентации с помощью Microsoft Pen. Самое приятное то, что планшет обеспечивает непрерывное использование в течение 10 часов без необходимости подзарядки. Кроме того, в промежутках между ними вы можете играть в бесплатные игры для Windows.

Кроме того, вы можете выбирать, как использовать свое программное обеспечение. Например, работа в режиме S дает вам доступ к широкому спектру приложений из Microsoft Store.

 

Заключительные слова

Microsoft Surface Go 2 может пригодиться в дороге. Он служит одновременно планшетом и ноутбуком благодаря дополнительной съемной крышке клавиатуры. Surface Go 2 позволяет транслировать любимые шоу, делать заметки и многое другое, что делает его идеальным маленьким попутчиком. Самое приятное то, что планшет практически умещается в кармане. К сожалению, Microsoft не включает Surface Pen и Type Cover в эту модель, что вынуждает пользователей тратить дополнительные средства на эти важные аксессуары. Но, учитывая возможности планшета по такой умеренной цене, мы думаем, что тратить деньги на клавиатуру того стоит.



2021-08-20T19:12:41
Microsoft

Книга: Язык Go Для Начинающих

Книга: Язык Go  Для Начинающих

Книга: Язык Go Для Начинающих. Привет, меня зовут Максим. Сейчас ты будешь читать мою книгу, которая поможет тебе начать разрабатывать современные приложения на языке программирования Go.

С этим языком я активно работаю последних 2.5 года. За это время я успел применить его на практике в проектах различной сложности, как личных так и на работе и фрилансе. Чем больше я разрабатываю на этом языке, тем больше я влюбляюсь в его простоту, производительность и мощность.

Язык я начал изучать в полевых условиях, так как мне нужно было буквально за 1-2 дня сделать тестовое задание на Go при приеме на новую работу. Тогда было совсем мало хорошего материала по этому языку, особенно в рунете. Недавно я решил заново повторить основы и заполнить пробелы в фундаментальных
знаниях Go. Тут мне пришла идея структурировать все знания и опыт для ребят, которые только начинают свой путь с этим языком.

Надеюсь, эта книга будет тебе полезной и послужит хорошим стартом в мир back-end
разработки на этом замечательном языке.

Скачать с mail облака

2021-08-20T08:26:54Книги и Курсы

Создание Jenkins backup/restore в Unix/Linux

Я рассказывал в своих заметках о установке, настройке, масштабировании и о джобах в Jenkins-е. В голову пришло еще то, что нужно еще и иметь бэкапы для того, чтобы можно было откатится назад. Я нагуглил пару решений. Но еще не решил какое лучше. По этому, расскажу о них.




Полезное чтиво:




Установка Jenkins в Unix/Linux




Работа с Jenkins-CLI в Unix/Linux




Установка Jenkins и Jenkins-slave в Unix/Linux




Настройка языка в Jenkins




Создание Jenkins backup/restore в Unix/Linux




И так, нам понадобится установить плагин(ы) (можно и один на выбор, я использовал несколько для сравнения):




  • Thin backup
  • Backup Plugin
  • Periodic Backup
  • SCM Sync configuration




Можно заюзать и другие решения:




  • Использовать Git и взять «$JENKINS_HOME» под него.
  • Написать BASH скрипт и создать джобу на ее выполнение.




Перейдем к решениям!




Использование Thin backup плагина для backup/restore Jenkins-а в Unix/Linux




Переходим «Manage Jenkins» -> «Manage Plugins» и устанавливаем «Thin backup». Я обычно всегда перезапускаю дженкинс для того, чтобы применились все настройки и все работало.




PS: Для перезагрузки дженкинс-сервера, я использую «Restart Safely» плагин.




Настройки бекапа, переходим в «Manage Jenkins» -> «ThinBackup»:




Плагин ThinBackup для Jenkins-а




В данном плагине имеются:




  • Backup Now — Кнопка чтобы сделать бекап сейчас.
  • Restore — Служит для рестора данных.
  • Settings — Настройка для бэкапа.




Начнем с настройки, нажимаем по нему:




Настройка thinBackup плагина для бэкапа дженкинса




Я отметил нужные мне поля и нажал на кнопку «Save». Т. е у меня будут выполнятся бэкапы по заданному расписанию и складыватся в «/backups» папку. Теперь можно запустить «Backup now» чтобы выполнился бэкап.




Вот и все. Можно юзать данный плагин для бэкаа и рестора.




Использование Backup Plugin плагина для backup/restore Jenkins-а в Unix/Linux




Переходим «Manage Jenkins» -> «Manage Plugins» и устанавливаем «Backup plugin». Я обычно всегда перезапускаю дженкинс для того, чтобы применились все настройки и все работало.




Настройки бекапа, переходим в «Manage Jenkins» -> «Backup manager»:







В данном плагине имеются:




  • Setup — Служит для настройки бэкапов.
  • Backup Hudson configuration — Чтобы создать бэкап.
  • Restore Hudson configuration — Для рестора бэкапа.




Я привел настройку к такому виду:







После настроек нажимаем на «Save». Нажимаем на «Backup Hudson configuration» для создания бэкапа.




Использование Periodic Backup плагина для backup/restore Jenkins-а в Unix/Linux




Переходим «Manage Jenkins» -> «Manage Plugins» и устанавливаем «Periodic Backup». Я обычно всегда перезапускаю дженкинс для того, чтобы применились все настройки и все работало.




Настройки бекапа, переходим в «Manage Jenkins» -> «Periodic Backup Manager»:




Меню Periodic Backup plugin




Плагин не сконфигурирован и его нужно отконфигурить. Что я и сделаю сейчас, нажимаем на «Configure»:




Настройка Periodic Backup plugin




Вот и все. Можно выполнить бэкап! Данный плагин понравился больше чем другие!




Использование SCM Sync configuration плагина для backup/restore Jenkins-а в Unix/Linux




Переходим «Manage Jenkins» -> «Manage Plugins» и устанавливаем «SCM Sync configuration». Я обычно всегда перезапускаю дженкинс для того, чтобы применились все настройки и все работало.




Создам проект в гитлабе, например «configurations/jenkins».В данной проекте я буду хранить все настройки.




Переходим в «Manage Jenkins» -> «Configure System» и находим поле «SCM» и заполняем поля. У меня не получилось подружится с этим плагином вообще. Снес его!




Использование bash-скрипта для backup/restore Jenkins-а в Unix/Linux




Можно написать скрипты на любой вкус, используя bash. Есть плагин для запуска скриптов через джобу. Сейчас поставим данный плагин.




Переходим «Manage Jenkins» -> «Manage Plugins» и устанавливаем «Exclusive Execution». Я обычно всегда перезапускаю дженкинс для того, чтобы применились все настройки и все работало. Создам структуру: Projects->Configurations. Т.е папка Projects в ней будут проекты, в данном случае «Configurations» — конфиги (Для создания папки, нажмите «New item» и выбирете «folder»).




Переходим в проект и нажимаем на «New item» и кликаем по «Freestyle project». Вводим имя для проекта, у меня — «jenkins-backup» и нажимаем на «OK»:




Freestyle project для Jenkins бекапа




Потом переходим в созданный проект и нажимаем на «Configure» и находим поле «Source Code Management» и прописываем УРЛ где будет лежать скрипт для бэкапа у меня это готовое решение какого-то чела, например:




настройка SCM




Идем дальше и переходим во «Build Triggers» вкладку и заполним:







Т.е заполним переодичность с которой будет запускаться скрипт.sh1 lines




H 3 * * *




После этого переходим во «Build» вкладку и затем, из списка выбираем «Execute shell». и прописываем параметры для запуска:




Настройка запуска скрипта с параметрами через Build-execute shell




Добавляем в поле следующий текст:sh1 lines




./jenkins-backup.sh $JENKINS_HOME /backups/backup_`date +"%Y_%m_%d_%H:%M:%S"`.tar.gz




И на этом все, нажимаем на «Save». После этого, будет выполнятся бекап по заданному времени. Если есть необходимость, то можно запустить джобу маннуалли (Нажав на «Build Now»).




PS: Можно сделать бэкап-ротейт чтобы все старые бэкапы удалялись автоматом, например, можно добавить еще один «Execute shell» команду:sh1 lines




find /backups/backup_* -mtime +7 -delete




Т.е бэкапы будут хранится 7 дней, остальные будут удалены.




Вот еще один пример скрипта, который можно использовать:sh42 lines




#!/bin/bash

# Setup
#
# - Create a new Jenkins Job
# - Mark "None" for Source Control Management
# - Select the "Build Periodically" build trigger
#   - configure to run as frequently as you like
# - Add a new "Execute Shell" build step
#   - Paste the contents of this file as the command
# - Save
#  
# NOTE: before this job will work, you'll need to manually navigate to the $JENKINS_HOME directory 
# and do the initial set up of the git repository.  
# Make sure the appropriate remote is added and the default remote/branch set up.
#  

# Jenkins Configuraitons Directory
cd $JENKINS_HOME

# Add general configurations, job configurations, and user content
git add -- *.xml jobs/*/*.xml userContent/*

# only add user configurations if they exist
if [ -d users ]; then
    user_configs=`ls users/*/config.xml`

    if [ -n "$user_configs" ]; then
        git add $user_configs
    fi
fi

# mark as deleted anything that's been, well, deleted
to_remove=`git status | grep "deleted" | awk '{print $3}'`

if [ -n "$to_remove" ]; then
    git rm --ignore-unmatch $to_remove
fi

git commit -m "Automated Jenkins commit"

git push -q -u origin master




Как по мне, все тут логично и понятно что он делаеет… Аналогичным способом можно сделать джобу и запускать переодически. Тем самым, все конфиг-файлы, будут попадать в гит.




Вывод: Я протестировал несколько плагинов и выбрал — использовать скрипты или Thin backup, Periodic Backup плагины. Но если есть другие решения, — пишите, дополню материал.




Я для клиента писал вот такой скрипт:sh38 lines




#!/usr/bin/env bash


# JENKINS_HOME
#  +- config.xml     (jenkins root configuration)
#  +- *.xml          (other site-wide configuration files)
#  +- userContent    (files in this directory will be served under your http://server/userContent/)
#  +- fingerprints   (stores fingerprint records)
#  +- nodes          (slave configurations)
#  +- plugins        (stores plugins)
#  +- secrets        (secretes needed when migrating credentials to other servers)
#  +- workspace (working directory for the version control system)
#      +- [JOBNAME] (sub directory for each job)
#  +- jobs
#      +- [JOBNAME]      (sub directory for each job)
#          +- config.xml     (job configuration file)
#          +- latest         (symbolic link to the last successful build)
#          +- builds
#              +- [BUILD_ID]     (for each build)
#                  +- build.xml      (build result summary)
#                  +- log            (log file)
#                  +- changelog.xml  (change log)

echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
echo "==================== Jenkins backup ====================";
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";

JENKINS_DIR="/mnt/data/jenkins"
JENKINS_BACKUP_DIR="/mnt/data/jenkins_backup"

cp -r ${JENKINS_DIR}/*.xml ${JENKINS_BACKUP_DIR}
cp -r ${JENKINS_DIR}/userContent ${JENKINS_BACKUP_DIR}
cp -r ${JENKINS_DIR}/fingerprints ${JENKINS_BACKUP_DIR}
cp -r ${JENKINS_DIR}/nodes ${JENKINS_BACKUP_DIR}
cp -r ${JENKINS_DIR}/plugins ${JENKINS_BACKUP_DIR}
cp -r ${JENKINS_DIR}/secrets ${JENKINS_BACKUP_DIR}
cp -r ${JENKINS_DIR}/workspace ${JENKINS_BACKUP_DIR}
cp -r ${JENKINS_DIR}/jobs ${JENKINS_BACKUP_DIR}




Проверялось, — работает!











Резервное копирование для Jenkins




Все, кто занимается задачами CI/CD, так или иначе знают про Jenkins, даже если им посчастливилось не иметь с ним дела.




Этот непотопляемый кадавр продолжает жить и процветать по следующим причинам:




  • гибкость настроек (от настраиваемых диалоговых окон до встроенного Groovy);
  • архитектура с поддержкой плагинов и обширный набор готовых плагинов на все случаи жизни;
  • и самое главное — большой накопленный объём пользовательских проектов, которые проще продолжать развивать и поддерживать в среде Дженкинса, чем пытаться мигрировать на более современные и приятные платформы.




Очевидно, что чем важнее данные внутри Дженкинса для тех, кто им пользуется, тем актуальнее для них резервное копирование этих данных.




Однако здесь возникают два небольших препятствия:




  • настройки, временные данные и файлы проектов смешаны внутри рабочего каталога в одну кучу;
  • штатного механизма не существует, вместо него есть энное число посторонних костылей, распространяемых в виде плагинов, описаний и копипаст.




Поэтому, взяв за основу один из таких костылей, мы написали свой собственный.




Список предварительных пожеланий к нему был примерно таким:




  • резервная копия должна иметь минимальный размер и максимальную скорость создания (например, дамп виртуальной машины или снимок ZFS с сотнями гигабайт проектов не годится);
  • после восстановления нам достаточно иметь полностью настроенный сервер без предыдущего состояния — который знает, как выполнять новые job’ы, но ничего не помнящий про старые;
  • поскольку настройки имеют текстовый вид, пусть они сохраняются в Git-репозиторий;
  • если Jenkins предназначен для автоматического выполнения заданий, пусть самостоятельно выполняет всю работу по своему обслуживанию.




Общая схема:




  • в $JENKINS_HOME создаётся Git-репозиторий;
  • на Git-сервере для него создаётся origin (далее приводятся настройки для Gitlab);
  • в Дженкинсе создаётся периодическое задание, которое сохраняет в Git ключевые файлы;
  • для уменьшения размера от плагинов сохраняются только манифесты, при восстановлении плагины скачиваются заново.




Сначала создайте пользователя и репозиторий в Gitlab’e:




  • пользователь = jenkins-backup-robot;
  • репозиторий = jenkins-configs;
  • URL репозитория скопируйте в буфер обмена;
  • откройте Repository => Settings => Members;
  • назначьте jenkins-backup-robot мантейнером (иначе Gitlab не даст сделать ему первый push в пустой репозиторий).




Теперь идите в командную строку сервера, на котором работает Jenkins:




  • нам требуется создать SSH-ключ и Git-репозиторий:




sudo -Hiu jenkins

cd ~

git init

git config --global user.name Jenkins

git config --global user.email "jenkins@$(hostname -f)"

git remote add origin ВСТАВЬТЕ_ЗДЕСЬ_URL_GIT_РЕПОЗИТОРИЯ

test -s ~/.ssh/id_rsa.pub || ssh-keygen

cat ~/.ssh/id_rsa.pub




Созданный SSH-ключ надо импортировать в Gitlab:




  • Это делается в разделе Admin => Users => jenkins-backup-robot => Impersonate => Personal Settings => SSH keys.




Создайте в Дженкинсе новое задание:




  • Name: Backup Jenkins configs to Git
  • Type: Free job
  • Label: master
  • SCM: None
  • Build: Build Periodically
  • Schedule: 20 04 * * *
  • Build step: Execute Shell
  • Command:




#!/bin/sh -e



cd "$JENKINS_HOME"



# Add general configurations, secrets, job configurations, nodes, user content, users and plugins info:

ls -1d *.xml secrets/ jobs/*/*.xml nodes/*/*.xml userContent/* users/*/config.xml 

    plugins/*/META-INF/MANIFEST.MF 2>/dev/null | grep -v '^queue.xml$' | xargs -r -d 'n' git add --



# Track deleted files:

LANG=C git status | awk '$1 == "deleted:" { print $2; }' | xargs -r git rm --ignore-unmatch



LANG=C git status | grep -q '^nothing to commit' || {

    git commit -m "Automated Jenkins commit at $(date '+%Y-%m-%d %H:%M')"

    git push -q -u origin master

}




  • SAVE




Пояснения:




  • Метка “master” нужна, если у Дженкинса есть slave-узлы. Если их нет, метку в задании можете не указывать. Если они есть, то в списке узлов отредактируйте свойства мастера и в поле “Labels” добавьте “master”. Если вы этого не сделаете, Дженкинс попытается выполнять задание через агентов на всех узлах, а это явно не то, что нам требуется.
  • Если для подключения к Git-серверу используется SSH, перед выполнением задания не забудьте подключиться к нему вручную, чтобы git push не завершался с ошибкой из-за StrictHostKeyChecking.




Заключительный шаг в Gitlab’e после успешного git push:




  • в свойствах репозитория откройте раздел Members и понизьте уровень доступа для Дженкинса с Maintainer до Developer;
  • в Settings => Repository => Protected branches поменяйте для ветки “master” разрешение “Allow to push” с Maintainers на Maintainers+Developers.




Восстановление плагинов:




  • Т.к. мы сохраняем только манифесты плагинов, после восстановления из резервной копии нам потребуется просканировать каталог с манифестами и составить список команд для загрузки дистрибутивов:




sudo -Hiu jenkins

cd ~/plugins/

gawk 'BEGIN     { RS = "rn" }

      BEGINFILE { n = v = "" }

      ENDFILE   { printf "curl -sS -L -O http://updates.jenkins-ci.org/download/plugins/%s/%s/%s.hpin", n, v, n }

      $1 == "Short-Name:"     { n = $2 }

      $1 == "Plugin-Version:" { v = $2 }

    ' ./*/META-INF/MANIFEST.MF > ./download_all_plugins.sh




  • Обратите внимание, что вместо awk используется gawk (GNU awk), т.к. классический awk не понимает BEGINFILE и ENDFILE. В некоторых дистрибутивах gawk устанавливается по умолчанию, в некоторых его потребуется установить вручную.
  • Если gawk отработает без ошибок, запустите сгенерированный им файл:




sudo -Hiu jenkins

cd ~/plugins/

gawk 'BEGIN     { RS = "rn" }

      BEGINFILE { n = v = "" }

      ENDFILE   { printf "curl -sS -L -O http://updates.jenkins-ci.org/download/plugins/%s/%s/%s.hpin", n, v, n }

      $1 == "Short-Name:"     { n = $2 }

      $1 == "Plugin-Version:" { v = $2 }

    ' ./*/META-INF/MANIFEST.MF > ./download_all_plugins.sh




  • Самостоятельно распаковывать и устанавливать скачанные hpi-файлы не требуется — перезапустите Дженкинс и он сделает это сам.




Источники: https://linux-notes.org/sozdanie-jenkins-backup-restore-v-unix-linux/ и https://cdnnow.ru/blog/jenkins-backup/



2021-08-19T10:17:29
Software