Это старая версия документа!
Сервис 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