djbelyak

Пикабушник
Дата рождения: 7 июля
447 рейтинг 0 подписчиков 31 подписка 5 постов 1 в горячем
Награды:
5 лет на Пикабу
4

Непрерывная интеграция для документов LaTeX в GitLab

Данный пост будет интересен для студентов и ученых, которых утомил Microsoft Word.


Осень - самая прекрасная пора для научно-исследовательских работ. Значит самое время обновить свой подход к написанию научных статей. В последнее время для хранения, управления, коллаборации и прочей работы с исходными кодами я стал использовать gitlab.com.


Первый плюс использования gitlab для научной работы состоит в том, что у вас появляется единая точка для синхронизации с коллегами, а если вы пишете один - резервная копия с историей.


Второй плюс состоит в едином списке задач в виде Issue tracker’а. Могут быть назначены исполнители, сроки, проведены обсуждения. Также прямо в интерфейсе можно разбренчиваться - удобно даже для непосвященных.


Третий плюс, ради которого затевался данный пост, состоит в непрерывной интеграции. При каждом коммите (фиксированной версии рабочей директории), отправленном на сервер gitlab можно запустить команды для сборки проекта. Для программных продуктов собирается, тестируется и выкладывается дистрибутив продукта. Тоже самое доступно и для LaTeX проекта. Можно собрать проект и получить готовый pdf даже не имея полностью установленного LaTeX стека.


При создании непрерывной интеграции создатели gitlab вдохновлялись сервисом travis-ci.org. Соответственно, вся настройка репозитория производится в файле .gitlab-ci.yml. После коммита gitlab runner скачивает этот файл к себе и выполняет описанные в нем действия. Gitlab runner - это программа, которая управляет машиной, на которой происходит сборка. Gitlab имеет партнерское соглашение с Digital Ocean, что позволяет на каждый проект иметь бесплатный runner. Также в качестве runner’а можно зарегистрировать свою машину. Подробности можно узнать в документации (на английском).


Итак, у нас есть в корне репозитория LaTeX-документ с названием report.tex. Остальные части документа импортируются внутри report.tex и также расположены в корне. Для настройки непрерывной интеграции создадим следующий файл:


image: blang/latex

stages:

- build

latex_build_job:

stage: build

script:

- pdflatex report.tex && pdflatex report.tex

tags:

- docker

artifacts:

paths:

- report.pdf


При каждом новом коммите, попавшем в gitlab репозиторий будет происходить следующее:

1. Runner запускает Docker-образ с latex

2. В рабочую директорию клонирует репозиторий со статьей

3. Запускает pdflatex два раза (второй раз нужен для корректного отображения BibTeX’a)

4.При наличии файла report.pdf помечает билд успешным и выгружает этот файл как артефакт сборки.


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

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества