Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Выкладываем резюме в LaTeX с помощью Docker и Github Actions

Ваша задача заключается в том, чтобы написать своё резюме с помощью LaTeX, заполнить его для стажировок и вообще будущего. Уметь воспроизводить результаты с помощью Docker и настроить CI систему, чтобы при обновлении Вашего резюме пересобиралась финальная pdf.

В этом задании Вам придётся пострадать, проявить навыки гугления и понимания ошибок, которые возникают. Инструкции являются примерными.

Пишем резюме в LaTeX

Шаги действия.

  • Посмотреть и прочитать лекцию про Markdown и LaTeX
  • Зарегистрироваться на Overleaf
  • Слева сверху после регистрации будет зелёная кнопка New Project

  • Нажимаем на неё

  • Дальше перед Вами будут сотни шаблонов для написания резюме. Выбирайте любой, который нравится
  • Заполняйте информацию про себя, прям в Overleaf можно всё менять и заполнять. Вам в любом случае придётся это делать
  • Как только всё сделали, скачайте весь архив

  • Вы можете забить на инструкцию и сделать всё самим, я лишь показал где можно взять хорошие проверенные временем шаблоны

Собираем на Linux

  • Обязательно надо посмотреть и прочитать (если лектор всё таки записал) лекцию про Docker и виртуализацию.

  • Создайте отдельную папку куда вы выложите весь архив со всеми файлами для резюме

  • Установите Docker (сами)

  • Создайте Dockerfile

  • Dockerfile должен состоять из системы, установки зависимостей, копирования нужных файлов или папки и сборки. Как примерно он должен быть устроен, смотрите по таймкоду записи лекции. Также можете посмотреть guide.

  • Чтобы узнать, на какую систему Вам надо собирать, запустите скрипт choose_system.py, где Вы переменную name заменяете на своё ФИО. Измененный файл включите в будущий github репозиторий.

  • Для установки pdflatex, чтобы собирать pdf файлы с Вашими резюме необходимы следующие пакеты (Ubuntu 18.04, Debian), на Ubuntu 20.04 установить можно только те, которые устанавливаются:

    • texlive-fonts-recommended (для шрифтов)
    • texlive-generic-recommended (обычный пакет)
    • texlive-latex-extra (для доп возможностей как параграфы и сложная математика)
    • texlive-fonts-extra (для больше шрифтов)
    • dvipng (для картинок .dvi формата)
    • texlive-latex-recommended (для установки макропакета LaTeX)
    • texlive-base (что-то ещё, без чего не собирается)
    • texlive-pictures (больше картинок)
    • texlive-lang-cyrillic (для русского языка)
    • texlive-science (для ещё больше математики)
    • cm-super (для системных шрифтов)
    • texlive-generic-extra (обычный дополнительный пакет, иногда требуется)

    Fedora (вместо apt на Debian или Ubuntu используйте yum):

    • texlive-collection-latexrecommended
    • texlive-collection-fontsrecommended
    • texlive-collection-pictures
    • texlive-collection-science
    • texlive-collection-langcyrillic

    Вы можете добавлять свои пакеты, если они Вам нужны, ну или если я что-то забыл и что-то не работает на каком-то линуксе.

    Не забывайте сделать update перед install (у apt и у yum, см. таймкод). Если есть проблемы с tzdata, Вам сюда. Не забывайте флаг -y, который означает yes для подтверждения установки.

  • Чтобы разобраться с образами, контейнерами, стоит использовать следующие команды

    • # docker build --tag $YOUR_TAG -f Dockerfile . Для сбора и выставления тега
    • # docker run -it $YOUR_TAG /bin/bash. Для создания контейнера для запуска shell с образом $YOUR_TAG
    • # docker images для просмотра всех образов
    • # docker ps -a для просмотра всех контейнеров
    • # docker cp $CONTAINER_ID:/path/to/file /path/to/local
    • # docker start $CONTAINER_ID
    • # docker attach $CONTAINER_ID
    • # docker stop $CONTAINER_ID
    • # docker rm $CONTAINER_ID
      • # docker stop $(docker ps -a -q) для остановки всех
      • # docker rm $(docker ps -a -q) для удаления всех
    • # docker rmi $IMAGE_ID
    • # docker images prune для удаления всех образов, которые не используются
  • Запустите pdflatex на Ваш главный .tex файл (обычно это main.tex) и убедитесь, что pdf, которая получилась, соответствует Вашим ожиданиям. А если нет, правьте, чтобы соответствовало. Убедитесь, что Вы запускаете pdflatex с аргументом -interaction=nonstopmode

  • Используйте ENTRYPOINT или CMD с bash скриптом, который собирает Ваше резюме, а возможно что-то и ещё делает, например, подчищает логи или что-то архивирует.

Публикуем через CI

  • Обязательно зарегистрируетесь на Github
  • Создайте новый приватный репозиторий
  • Не дай бог Вы положите туда .zip архив. Кладите туда файлы с Вашего архива резюме, желательно в отдельную папку.
  • Положите в корень репозитория так же Dockerfile и README.md.
  • Прочитайте про Github Actions и Docker Github Actions. Если кратко, то это CI система, для чего-то простого она бесплатна. Можете почитать немного про CI системы в одной из лекций.
  • Сделайте README.md, где Вы обязаны указать своё ФИО и группу. Можете ещё пасхалок там наделать, если хочется :)
  • Умно назовите все секции во всех рецептах, см гайд выше
  • Сделайте себе action.yml (опционально и если поняли зачем). Закоммититьте код
  • Сделайте себе .github/workflows/main.yml, закоммитьте код

Зайдите в Actions:

Вы увидите, что сборка должна была начаться и финальная pdf должна была быть получена.

  • В итоге структура файлов должна быть примерно такой:
├── choose_system.py
├── action.yml (опционально и если поняли зачем)
├── Dockerfile
├── .github
│   └── workflows
│       └── main.yml
├── CV
│   ├── main.tex
│   ├── some_other.sty
│   ├── ...
|   ├── ...
|   └── ...
└── README.md
  • Если всё собралось с первого раза, поломайте свою сборку и убедитесь, что оно реально поломалось
  • Почините и закоммитьте правильную версию
  • Убедитесь, что на github в истории Ваших коммитов стоит зелёная галочка :)

Доступ к резюме через github pages

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

Для этого необходимо сделать workflow, публикующий собранную PDF в отдельную ветку в Вашем репозитории. Самостоятельно найдите информацию, как делать подобные workflow.

Когда PDF будет публиковаться в репозиторий, Вы можете подключить github pages:

Github Pagse позволяет сделать содержимое Ваших репозиторией доступным по ссылке. Подробнее можно ознакомиться здесь.

Чтобы получить доступ к github pages в приватных репозиториях, необходимо получить статус PRO. Это можно сделать, получив Github Student Developer Pack: подайте заявку, указав учебную почту @edu.hse.ru и прикрепив фотографию студенческого билета. Если нет возможности подать заявку на Student Pack, публикуйте PDF в отдельный публичный репозиторий.

Вам необходимо сделать так, чтобы Ваше резюме было доступно по ссылке вида

username.github.io/cv/resume.pdf

Измените что-нибудь в резюме, дождитесь зелёных галочек в CI и проверьте, что по ссылке теперь отображается новая версия резюме. Из-за кеширования изменения могут отображаться не сразу.

Сдача домашнего задания

В choose_reviewer.py замените Ivan Ivanov на свое имя и запустите его. Данный скрипт выведет никнейм проверяющего, которого нужно добавить в качестве Collaborator'a в Ваш приватный репозиторий:

  • Вы должны прислать ссылку на коммит, а не на репозиторий, потому что коммиты подделать очень сложно. Для этого вы должны зайти в свою историю коммитов на репозитории

И прислать ссылку на свой коммит как внизу

Оценивание и требования

  • 2 балла за приватный репозиторий github с резюме.
  • 3 балла за наличие Dockerfile, компилирующего PDF из TeX'a.
  • 2 балла за workflow, проверяющий сборку (запуск контейнера по Dockerfile).
  • 2 балла за workflow, публикующий собранное резюме на github pages.
  • 1 балл за эстетическую красоту резюме.

Красоту определяют проверяющие субъективно. Это сделано, чтобы было больше мотивации делать либо домашнее задание на деплой Telegram-бота, либо вложиться в своё резюме.

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

Также Ваш репозиторий должен содержать файл README.md. Без наличия этого файла ваша работа не будет проверена. В README файле должно быть:

  1. Ваше ФИО.
  2. Ссылка на github pages с Вашим резюме, если вы делали этот пункт.

Дедлайн

25 декабря 2021 года 23:59:59 MSK.

Если у Вас не было подобного опыта, начните хотя бы за 3 дня до дедлайна.

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

У меня ничего не работает

Задавайте вопросы в учебном чате или в личных сообщениях ассистентам.