Это старая версия документа!
Сервис GitHub, который позволяет автоматизировать любой процесс связанный с деплоем кода на продакшн сервер. Код проекта выполняется на виртуальных серверах GH и далее доставляется куда нужно
Имеет множество готовых решений, шаблонов и т.д.
Файлы располагаются во вложенной директории «./GitHub/workflows/.yml», файлы в формате yml
Можно работать в онлайн редакторе
Поток выполнения действий
Задачи внутри - джобы (jobs), которые состоят из шагов (steps)
Workflow обычно выполняет какую то большую задачу (очевидно правильно разбивать «одна задача - один воркфлоу»), их может быть множество, могут выполняться как последовательно так и параллельно, как и джобы
Может быть вызван автоматически, вручную либо выполняться по расписанию
Пример workflow:
name: Print workflow # запуск вручную on: workflow_dispatch jobs: # название джобы print_hello: # среда для запуска джобы runs-on: ubuntu-latest steps: - name: Print hello # команда которая будет выполнена в терминале run: echo "Hello world"
В этом примере три логических блока:
Параллельное выполнение
jobs: print_hello: runs-on: ubuntu-latest steps: - name: Print hello run: echo "Hello world!" print_full_tech_info: runs-on: ubuntu-latest steps: - name: print full_tech_info run: sudo lshw print_short_tech_info: runs-on: ubuntu-latest steps: - name: run: sudo lshw -short
В интерфейсе GH, данные джобы будут в одном блоке, вместе, выполнялись параллельно
Для последовательного выполнения используется параметр «needs»
jobs: print_hello: runs-on: ubuntu-latest steps: - name: print hello run: echo "hello world" print_full_tech_info: needs: print_hello runs-on: ubuntu-latest steps: - name: print_full_tech_info run: sudo lshw print_short_tech_info: needs: print_full_tech_info runs-on: ubuntu-latest steps: - name: print_short_tech_info run: sudo lswh -short
В интерфейсе GH джобы будут размещены в разных блоках, друг за другом
Если одна из них завершится с ошибкой, то остальные выполняться не будут
Такие цепочки зависимостей можно строить и целыми workflow
name: my_Workflow # секция условий выполнения текущего флоу on: workflow_run: workflows: ["Run tests"] branches: [main] types: # статус выполнения первого флоу - completed
«Джобы выполняются на разных VM», а ну для выполнения в рамках одной VM есть же шаги
Вместо инструкции «run», для вызова команд, можно использовать готовые модули или решения, написанные другими разработчиками, они распространяются бесплатно на маркетплейсе GH
Например популярный экшен для загрузки кода из репозитория, «checkout@v3»
name: print workflow on: workflow_dispatch jobs: checkout: runs-on: ubuntu-latest steps: - name: checkout_repo uses: actions/checkout@v3