# Использование пользовательских рабочих процессов с GitHub Pages

Вы можете воспользоваться преимуществами использования GitHub Actions и GitHub Pages создания файла рабочего процесса или выбора из предопределенных рабочих процессов.

## Сведения о пользовательских рабочих процессах

Пользовательские рабочие процессы позволяют GitHub Pages создавать сайты с помощью использования GitHub Actions. Вы по-прежнему можете выбрать ветвь, используемую с помощью файла рабочего процесса, но вы можете сделать гораздо больше с использованием пользовательских рабочих процессов. Чтобы начать использование пользовательских рабочих процессов, необходимо сначала включить их для текущего репозитория. Дополнительные сведения см. в разделе [Настройка источника публикации для вашего сайта GitHub Pages](/ru/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site#publishing-with-a-custom-github-actions-workflow).

## `configure-pages` Настройка действия

GitHub Actions позволяет использовать GitHub Pages`configure-pages` действие, которое также позволяет собирать различные метаданные о веб-сайте. Дополнительные сведения см. в описании действия [`configure-pages`](https://github.com/marketplace/actions/configure-github-pages).

Чтобы использовать действие, поместите этот фрагмент в `jobs` нужный рабочий процесс.

```yaml
- name: Configure GitHub Pages
  uses: actions/configure-pages@v5
```

Это действие помогает поддерживать развертывание из любого генератора GitHub Pagesстатических сайтов в . Чтобы сделать этот процесс менее повторяющимся, можно использовать шаблоны рабочих процессов для некоторых наиболее широко используемых статических генераторов сайтов. Дополнительные сведения см. в разделе [Использование шаблонов рабочих процессов](/ru/actions/how-tos/write-workflows/use-workflow-templates).

## `upload-pages-artifact` Настройка действия

Действия `upload-pages-artifact` позволяют упаковывать и отправлять артефакты.
GitHub Pages Артефакт должен быть сжатым `gzip` архивом, содержащим один `tar` файл. Файл `tar` должен быть размером до 10 ГБ и не должен содержать символьные или жесткие ссылки. Дополнительные сведения см. в описании действия [`upload-pages-artifact`](https://github.com/marketplace/actions/upload-github-pages-artifact).

Чтобы использовать действие в текущем рабочем процессе, введите этот фрагмент кода в раздел `jobs`.

```yaml
- name: Upload GitHub Pages artifact
  uses: actions/upload-pages-artifact@v4
```

## GitHub Pages Развертывание артефактов

Действие `deploy-pages` обрабатывает необходимую настройку для развертывания артефактов. Чтобы обеспечить правильную функциональность, необходимо выполнить следующие требования:

* Задание должно иметь минимальное количество `pages: write` разрешений и `id-token: write` разрешений.
* Параметр `needs` должен быть задан на `id` шаге сборки. Если этот параметр не задан, это может привести к независимому развертыванию, которое постоянно выполняет поиск артефакта, который не был создан.
* Необходимо `environment` установить для применения правил защиты филиалов и развертываний. Среда по умолчанию `github-pages`.
* Чтобы указать URL-адрес страницы в качестве выходных данных, используйте `url:` поле.

Дополнительные сведения см. в описании действия [`deploy-pages`](https://github.com/marketplace/actions/deploy-github-pages-site).

```yaml
# ...

jobs:
  deploy:
    permissions:
      contents: read
      pages: write
      id-token: write
    runs-on: ubuntu-latest
    needs: jekyll-build
    environment:
      name: github-pages
      url: ${{steps.deployment.outputs.page_url}}
    steps:
      - name: Deploy artifact
        id: deployment
        uses: actions/deploy-pages@v4
# ...
```

## Связывание отдельных заданий сборки и развертывания

Вы можете связать свои `build` задания `deploy` в одном файле рабочего процесса, устраняя необходимость создания двух отдельных файлов для получения одного результата. Чтобы приступить к работе с файлом `jobs` рабочего процесса, в разделе `build` можно определить и `deploy` задание для выполнения заданий.

```yaml
# ...

jobs:
  # Build job
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Setup Pages
        id: pages
        uses: actions/configure-pages@v5
      - name: Build with Jekyll
        uses: actions/jekyll-build-pages@v1
        with:
          source: ./
          destination: ./_site
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v4

  # Deployment job
  deploy:
    environment:
      name: github-pages
      url: ${{steps.deployment.outputs.page_url}}
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4
# ...
```

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

```yaml
# ...

jobs:
  # Single deploy job no building
  deploy:
    environment:
      name: github-pages
      url: ${{steps.deployment.outputs.page_url}}
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Setup Pages
        uses: actions/configure-pages@v5
      - name: Upload Artifact
        uses: actions/upload-pages-artifact@v4
        with:
          # upload entire directory
          path: '.'
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4

# ...
```

Вы можете определить задания, которые будут выполняться на разных запусках, последовательно или параллельно. Дополнительные сведения см. в разделе [Выбор того, что делает рабочий процесс](/ru/actions/how-tos/write-workflows/choose-what-workflows-do).