Открыть список
Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Команда sponge: «губка» для стандартного ввода

Настройка Linux
Все мы знаем, что при выполнении команд в шелле мы можем перенаправлять стандартный вывод на стандартный ввод других команд, а также записывать его в файл.

Это достаточно детально описано в главе I/O Redirection в «Продвинутом руководстве по программированию на Bash» (Advanced Bash-Scripting Guide).

В частности, иногда бывает так, что вам нужно прочитать какой-то файл, как-то его обработать (например, выбрать оттуда только те строки, которые подходят под некое регулярное выражение), и затем записать результат в тот же самый файл. Допустим, ваш файл называется «messages.log», и вы хотите оставить в нём только те строки, которые начинаются со слова «Success», двоеточия и пробела (а все остальные строки убрать).

Можно предположить, что для этого подойдёт такая команда:

grep "^Success:\s" messages.log > messages.log

Но это предположение окажется неправильным — при выполнении этой строчки файл messages.log будет открыт на запись и очищен ещё до того, как grep начнёт его просматривать.
Читать дальше →
Всего голосов 62: ↑53 и ↓9 +44
Просмотры9.5K
Комментарии 23

Автоматическое развертывание приложения ElasticBeanstalk c помощью Bitbucket Pipelines

PythonAmazon Web ServicesAtlassian
У bitbucket есть сервис ( Bitbucket Pipelines), который среди прочего позволяет предельно просто организовать автоматическое развертывание приложений в облаке Amazon, в частности используя ElasticBeanstallk. Кому интересно, прошу под кат.


Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Просмотры10.6K
Комментарии 9

Jenkins Pipeline Shared Libraries

IT-инфраструктураDevOps
Всем привет. В данной статье хочу поделиться знаниями, полученными в процессе автоматизации развертывания наших сервисов на различные серверы в разных дата-центрах.

Задача была следующей: есть определенный набор скриптов для развертывания сервисов, которые нужно запускать на каждом сервере каждого дата-центра. Скрипты выполняют серию операций: проверка статуса, вывод из-под load balancer’а, выпуск версии, развертывание, проверка статуса, отправка уведомлений через email и Slack и т.д. Это просто и удобно, но с ростом числа дата-центров и сервисов процесс выкатки новой версии может занять целый день. Кроме того, за некоторые действия отвечают отдельные команды, например, настройка load balancer’а. Также хотелось, чтобы управляющий процессом код хранился в общедоступном репозитории, дабы каждый член команды мог его поддерживать.

Решить задачу удалось с помощью Jenkins Pipeline Shared Libraries: этапы процесса разделились визуально на логические части, код хранится в репозитории, а осуществить доставку на 20 серверов стало возможно в один клик. Ниже приведен пример подобного тестового проекта:

image

Сейчас я расскажу и покажу примеры как этого достичь. Надеюсь эта статья поможет сохранить время другим разработчикам, а также буду рад дельным комментариям.
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры28.3K
Комментарии 17

Управление задачами в Jenkins

Блог компании SelectelDevOps


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

На рынке сейчас представлено много других инструментов (как платных, так и бесплатных), позволяющих построить процесс непрерывной интеграции максимально комфортно.
Читать дальше →
Всего голосов 24: ↑24 и ↓0 +24
Просмотры140K
Комментарии 15

System.IO.Pipelines: высокоэффективный IO в .NET

Блог компании MicrosoftПрограммирование.NETC#
Перевод
System.IO.Pipelines — это новая библиотека, упрощающая организацию кода в .NET. Трудно обеспечить высокую производительность и точность, если приходится иметь дело со сложным кодом. Задача System.IO.Pipelines — упростить код. Подробнее под катом!

Читать дальше →
Всего голосов 27: ↑26 и ↓1 +25
Просмотры22.2K
Комментарии 17

Знакомство с Azure DevOps

Блог компании MicrosoftMicrosoft AzureDevOps
Перевод
Вышел Azure DevOps! Сегодня мы кратко расскажем об этой новой платформе, ее решениях, процессе перехода с Visual Studio Team Services и об использовании в реальных проектах. Присоединяйтесь!

Читать дальше →
Всего голосов 14: ↑14 и ↓0 +14
Просмотры29.1K
Комментарии 0

Serverless CI/CD на AWS

Блог компании SouthbridgeСистемное администрированиеСерверное администрированиеDevOps
Перевод



Было бы круто, если бы развертывание в формате копи-пейст осталось в прошлом, но, увы, дела обстоят иначе. Бывает, разработчикам предпочтительней именно такой метод поставки. Хоть сейчас пиши статью о том, почему это не есть гуд, но вы и без меня все знаете. С тенденцией к бессерверной (serverless) архитектуре пайплайны CI/CD играют важную роль в поставке приложений. Я еще писал о них в статье "3 лучших совета для вашего следующего бессерверного проекта".


Темой CI и CD я интересуюсь давненько, а впервые столкнулся с ней несколько лет назад — благодаря TeamCity. В настоящее время TeamCity по-прежнему используется для большинства наших пайплайнов CI/CD. Работает TeamCity прекрасно, ничего против не имею, но я всегда стремлюсь улучшить работу. Например, было бы хорошо собирать пайплайны в виде кода — это одно из направлений, в которых TeamCity не так хорош.


Инструменты интеграции и поставки на AWS я изучил какое-то время назад, и, хотя мы используем CodeDeploy для другого проекта, который работает на EC2, бессерверный проект я с ними еще не развертывал. Ознакомившись с инструментами повторно, я обратил внимание вот на что: теперь есть встроенная функция интеграции для развертывания CloudFormation и Lambda, предположительно, на основе SAM AWS; мы используем serverless framework, — она генерирует шаблоны CloudFormation, но с инструментами AWS она “из коробки” не работает.

Читать дальше →
Всего голосов 16: ↑15 и ↓1 +14
Просмотры6.1K
Комментарии 4

System.IO.Pipelines — a little-known tool for lovers of high performance

.NETC#
Перевод
Hello reader. Quite a lot of time has passed since the release of .NET Core 2.1. And such cool innovations as Span and Memory are already widely known, you can read, see and hear a lot about them. However, unfortunately, library called System.IO.Pipeslines did not receive the same attention. Almost everything there is on this topic is the only post that have been translated and copied on many resources. There should be more information about that technology to look on it from different angles.


Read more →
Всего голосов 8: ↑8 и ↓0 +8
Просмотры20.6K
Комментарии 0

6 самых свежих курсов по Azure

Блог компании MicrosoftОблачные вычисленияMicrosoft AzureУчебный процесс в ITОблачные сервисы
Привет, Хабр! Ранее мы опубликовали уже 3 статьи из 5 в нашей серии подборок интересных учебных курсов от Microsoft. Сегодня – уже четвертая часть, и в ней мы расскажем про самые свежие курсы по облаку Azure.

Кстати!

  • Все курсы бесплатные (вы даже сможете попробовать платные продукты бесплатно);
  • 5/6 на русском языке;
  • Начать обучение можно мгновенно;
  • По окончании вы получите бейдж об успешном прохождении обучения.

Присоединяйтесь, подробности под катом!

Новая серия статей


Следующая серия статей, начало 2020 года


Эта серия статей, 2019 год


Читать дальше →
Всего голосов 20: ↑19 и ↓1 +18
Просмотры12.4K
Комментарии 2

Стас Афанасьев. Juno. Pipelines на базе io.Reader/io.Writer. Часть 1

Блог компании ua-hosting.companyПрограммированиеIT-инфраструктураGoКонференции
В докладе поговорим про концепцию io.Reader/io.Writer, для чего они нужны, как их правильно реализовывать и какие в связи с этим существуют подводные камни, а также про построение pipelines на базе стандартных и кастомных реализаций io.Reader/io.Writer.

Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Просмотры2.6K
Комментарии 1

Как Gitlab-CI наследует переменные окружения?

GitСистемы сборкиDevOps
Из песочницы

Переменные в Gitlab можно задать в нескольких местах:


  1. В настройках групп
  2. В настройках проекта
  3. Внутри .gitlab-ci.yml

При этом переменные в настройках групп и проекта можно задать как "файл"или "обычную переменную" и поставить галочки "защищено" и "маскировать".



Начнем с простого наследования и будем постепенно усложняться.


С конечным списком уровней приоритетов можно ознакомиться в конце документа.

Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Просмотры6.2K
Комментарии 2

Стас Афанасьев. Juno. Pipelines на базе io.Reader/io.Writer. Часть 2

Блог компании ua-hosting.companyПрограммированиеIT-инфраструктураGoКонференции
В докладе поговорим про концепцию io.Reader/io.Writer, для чего они нужны, как их правильно реализовывать и какие в связи с этим существуют подводные камни, а также про построение pipelines на базе стандартных и кастомных реализаций io.Reader/io.Writer.

Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Просмотры1.7K
Комментарии 0

Приглашаем на Live-Вебинар — Автоматизация процессов с GitLab CI/CD — 29 Окт., 15:00 -16:00 (MST)

Блог компании GitLabOpen sourceGitAgileDevOps

Расширяем знания и переходим на следующий уровень




Вы только начинаете изучать основные принципы Continuous Integration / Continuous Delivery или написали уже не один десяток пайплайнов? Вне зависимости от уровня Ваших знаний, присоединяйтесь к нашему вебинару, чтобы на практике разобраться, почему тысячи организаций по всему миру выбирают GitLab в качестве ключевого инструмента для автоматизации IT процессов.
Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Просмотры1.3K
Комментарии 4

В начале был “workflow”

Блог компании АркадияСистемы управления версиямиУправление разработкойСистемы сборкиDevOps

Добрый день! Меня зовут Кирилл, и я DevOps-инженер. За свою карьеру мне не раз приходилось внедрять DevOps-практики как в существующие, так и в новые команды, поэтому хочу поделиться своим опытом и мыслями по поводу стратегий ветвления. Существует множество различных типов рабочих процессов, и чтобы разобраться что к чему, предлагаю рассмотреть пример создания нового программного продукта. 

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Просмотры2.9K
Комментарии 6

К порядку: правила создания конвейеров обработки данных

Блог компании BadooПрограммированиеХранение данныхХранилища данных

К 2020 году вы не могли не заметить, что миром правят данные. И, как только речь заходит о работе с ощутимыми объёмами, появляется необходимость в сложном многоэтапном конвейере обработки данных

Сам по себе конвейер обработки данных — это комплект преобразований, которые требуется провести над входными данными. Сложен он, например, потому, что информация всегда поступает на вход конвейера в непроверенном и неструктурированном виде. А потребители хотят видеть её в лёгкой для понимания форме.

В наших приложениях Badoo и Bumble конвейеры принимают информацию из самых разных источников: генерируемых пользователями событий, баз данных и внешних систем. Естественно, без тщательного обслуживания конвейеры становятся хрупкими: выходят из строя, требуют ручного исправления данных или непрерывного наблюдения.

Я поделюсь несколькими простыми правилами, которые помогают нам в работе с преобразованием данных и, надеюсь, помогут и вам. 

Читать далее
Всего голосов 36: ↑35 и ↓1 +34
Просмотры3.5K
Комментарии 6