Category Archives: Scripting/coding

HowTo и примеры использования bash, C, Python, Ruby и т.д.

Golang: struct – структуры в примерах

28 November 2018
 

 Структура – это коллекция типизированных полей, т.е. у кождого поля в структуре есть свой тип данных. Создать структуру можно следующим образом: type Example struct { FirstField string SecondField string ThirdField int } Тут у структуры с именем Example есть коллекция полей – поля FirstField и SecondField типа string, и поле ThirdField типа integer. Если различные поля имеют одинаковый… Read More »

Vim: плагины supertab и vim-devicons

26 November 2018
 

 В продолжение поста vim: превращаем редактор в “IDE” – плагины и вот это вот всё – ещё пара полезностей для vim. supertab supertab вызывает автоподстановку по нажатию кнопки <TAB>, вместо комбинаций типа Ctrl+O/Ctrl+X. Добавляем в .vimrc: … ” https://github.com/ervandew/supertab Plug ‘ervandew/supertab’ … Перечитываем его, и устанавливаем: Для настройки плагина есть много опций, основные, которые могут пригодиться,… Read More »

AWS: s3fs – Permission denied

22 November 2018
 

 После начала использования s3fs – выяснилась одна деталь. Файлы загружаются с помощью boto3. Но после того, как корзина смонтирована к системе – получить доступ к файлам нельзя: Проверяем права на файлы – и ой: И сменить права через chmod тоже не получится: Решение – задавать права доступа через Metadata, при загрузке данных в корзину. См.… Read More »

BASH: скрипт бекапа /home с уведомлениями

12 October 2018
 

 Задача – написать скрипт для домашней машинки, что бы создавать бекапы по расписанию используя rsync, с уведомлениями на почту и в трее. Бекапы хранятся на отдельном жестком диске. Описание настройки отправки почты пользователю есть в посте Arch Linux: ssmtp – отправка локальной почты. Ниже – процесс написания такого скрипта с примерами функций. Сам скрипт доступен в… Read More »

Jenkins: Allure reports plugin в Scripted pipeline

26 September 2018
 

 Allure – фреймворк для создания репортов о результатах выполнения тестов. Для Jenkins имеется плагин allure-jenkins-plugin, который сегодня и будем подключать в Scripted Pipeline Jenkins-а. Документация тут>>> и тут>>>. Устанавливаем плагин: Переходим в http://jenkinsurl/configureTools/, настраиваем Allure Commandline: Переходим в http://jenkinsurl/pipeline-syntax/, и генерируем скрипт: В результате весь скрипт наших автотестов выглядит сейчас так: #!/usr/bin/env groovy node { stage(‘Run tests’) { dir (‘ciscripts’)… Read More »

Python: скрипт добавления комментария в Jira из Jenkins

25 September 2018
 

 В продолжение поста Jenkins: добавление комментария в Jira-тикет после билда – напишем свой костыль, который будет добавлять комментарии в Jira-тикеты. Скрипт будет парсить заголовок коммита, в котором будет указан Jira-тикет, а потом через Jira API добавлять комментарий. Писать будем на Python – полгода не писал на нём, наконец-то появился повод. Парсинг git-коммита Для того, что бы… Read More »

AWS: миграция RTFM 3.0 (final) – CloudFormation и Ansible роли

25 August 2018
 

 Прошёл почти год, как я начал миграцию v2, закончил на посте Ansible: миграция RTFM 2.11 – хост Services – установка PHP, PHP-FPM. Основной её идеей на тот момент было максимально использовать возможности AWS и Ansible – чисто из интереса и для практики, т.к. на предыдущем месте работы её было совсем мало (там в основном был Azure… Read More »

Jenkins: wrapper script does not seem to be touching the log file

23 August 2018
 

 При запуске задачи возникает ошибка: wrapper script does not seem to be touching the log file in /var/lib/jenkins/workspace/ETLFB@tmp/durable-893314e7 (JENKINS-48300: if on a laggy filesystem, consider -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.HEARTBEAT_CHECK_INTERVAL=300) Есть созданная бага тут>>>. Собственно решеине указано в тексте самой ошибки – добавляем HEARTBEAT_CHECK_INTERVAL=300. Обновляем pipeline-скрипт, добавляем System.setProperty(“org.jenkinsci.plugins.durabletask.BourneShellScript.HEARTBEAT_CHECK_INTERVAL”, “3800”);: #!/usr/bin/env groovy node { // checkout https://github.com/project/deployment to the “ci”… Read More »

Jenkins: Scripted Pipeline – подтверждение выполнения для Production окружения

16 August 2018
 

 Есть несколько задач, которые выполняются в Scripted Pipeline. В задачах выполняется провижен CloudFormation и запуск Ansible плейбука на Dev и Production. Что бы исключить случайный запуск Production задачи – хочется добавить шаг подтверждения действия. Используем pipeline-input-step и класс BooleanParameterDefinition. Добавляем функцию verify(): def verify() { stage(‘Verify’) { def userInput = input( id: ‘userInput’, message: ‘This… Read More »

Jenkins: Credentials Binding Plugin и использование нескольких Secret file в Jenkins pipeline

3 July 2018
 

 Задача – запустить ansible-playbook, которому необходимо передать RSA ключ для EC2 и файл с паролем для ansible-vault, т.к. в задачах плейбука используются зашифрованные переменные. Для этого используем Jenkins credentials, где сохраним два файла, а потом через Credentials Binding Plugin – передадим их в контейнер с задачей. Secret file в Credentials Сначала добавляем файлы в Jenkins. Переходим… Read More »