Skip to main content

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

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

Кто может использовать эту функцию?

GitHub Pages доступен в общедоступных репозиториях с GitHub Free и GitHub Free для организаций, а также в общедоступных и частных репозиториях с GitHub Pro, GitHub Team, GitHub Enterprise Cloudи GitHub Enterprise Server. Дополнительные сведения см. в разделе "Планы GitHub".

GitHub Pages теперь использует GitHub Actions для выполнения сборки Jekyll. При использовании ветви в качестве источника сборки GitHub Actions необходимо включить в репозитории, если вы хотите использовать встроенный рабочий процесс Jekyll. Кроме того, если GitHub Actions недоступен или отключен, добавление .nojekyll файла в корень исходной ветви будет обойти процесс сборки Jekyll и развернуть содержимое напрямую. Дополнительные сведения о включении GitHub Actionsсм. в разделе "Управление параметрами GitHub Actions для репозитория".

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

Пользовательские рабочие процессы позволяют создавать сайты GitHub Pages с помощью GitHub Actions. Вы по-прежнему можете выбрать ветвь, используемую с помощью файла рабочего процесса, но вы можете сделать гораздо больше с использованием пользовательских рабочих процессов. Чтобы начать использование пользовательских рабочих процессов, необходимо сначала включить их для текущего репозитория. Дополнительные сведения см. в разделе Настройка источника публикации для сайта GitHub Pages.

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

GitHub Actions позволяет использовать GitHub Pages через configure-pages действие, которое также позволяет собирать различные метаданные о веб-сайте. Дополнительные сведения см. в описании действия configure-pages.

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

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

Это действие помогает поддерживать развертывание от любого генератора статических сайтов до GitHub Pages. Чтобы сделать этот процесс менее повторяющимся, можно использовать шаблоны рабочих процессов для некоторых наиболее широко используемых статических генераторов сайтов. Дополнительные сведения см. в разделе Использование шаблонов рабочих процессов.

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

Действия upload-pages-artifact позволяют упаковывать и отправлять артефакты. Артефакт GitHub Pages должен быть сжатым gzip архивом, содержащим один tar файл. Файл tar должен быть размером до 10 ГБ и не должен содержать символьные или жесткие ссылки. Дополнительные сведения см. в описании действия upload-pages-artifact.

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

- name: Upload GitHub Pages artifact
  uses: actions/upload-pages-artifact@v3

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

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

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

Дополнительные сведения см. в описании действия deploy-pages.

# ...

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 в одном файле рабочего процесса, устраняя необходимость создания двух отдельных файлов для получения одного результата. Чтобы приступить к работе с файлом build рабочего процесса, в разделе jobs можно определить и deploy задание для выполнения заданий.

# ...

jobs:
  # Build job
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - 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@v3

  # 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
# ...

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

# ...

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@v4
      - name: Setup Pages
        uses: actions/configure-pages@v5
      - name: Upload Artifact
        uses: actions/upload-pages-artifact@v3
        with:
          # upload entire directory
          path: '.'
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4

# ...

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