Инструменты пользователя

Инструменты сайта


develop:gh_actions

Это старая версия документа!


GitHub Actions

Введение

Сервис GitHub, который позволяет автоматизировать любой процесс связанный с деплоем кода на продакшн сервер. Код проекта выполняется на виртуальных серверах GH и далее доставляется куда нужно

:!: more

Имеет множество готовых решений, шаблонов и т.д.
Файлы располагаются во вложенной директории «./GitHub/workflows/.yml», файлы в формате yml
Можно работать в онлайн редакторе

Workflow

Поток выполнения действий
Задачи внутри - джобы (jobs), которые состоят из шагов (steps)

:!: more

Workflow обычно выполняет какую то большую задачу (очевидно правильно разбивать «одна задача - один воркфлоу»), их может быть множество, могут выполняться как последовательно так и параллельно, как и джобы

Может быть вызван автоматически, вручную либо выполняться по расписанию

Пример workflow:

name: Print workflow 
  # запуск вручную
on: workflow_dispatch

jobs: 
    # название джобы
  print_hello:
      # среда для запуска джобы
    runs-on: ubuntu-latest
    
    steps:
      - name: Print hello
          # команда которая будет выполнена в терминале
        run: echo "Hello world" 

В этом примере три логических блока:

  • параметры самого воркфлоу (name и on (пар-р запуска)),
  • настройка джоб (название и runs-on (инструкция для докера))
  • и шаги (так же название и run (команда для выполнения))

Jobs

:!: Порядок выполнения jobs

Параллельное выполнение

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

Actions

Вместо инструкции «run», для вызова команд, можно использовать готовые модули или решения, написанные другими разработчиками, они распространяются бесплатно на маркетплейсе GH

:!: пример

Например популярный экшен для загрузки кода из репозитория, «checkout@v3»

name: print workflow
on: workflow_dispatch

jobs:
  checkout:
    runs-on: ubuntu-latest
    steps:
      - name: checkout_repo
        uses: actions/checkout@v3
 
 
 
develop/gh_actions.1706263178.txt.gz · Последнее изменение: 2024/01/26 09:59 — admin