Тут я покажу вам, як розгорнути застосунок React на GitHub Pages за допомогою GitHub Actions. GitHub Pages — це сервіс хостингу статичних сайтів, який бере HTML, CSS та JavaScript файли безпосередньо з репозиторію на GitHub та робить їх доступними у вигляді вебсайту. GitHub Actions — це сервіс CI/CD, що дозволяє автоматизувати робочий процес публікації вашого статичного сайту на GitHub Pages.

Створення застосунку React

Спочатку створіть новий застосунок React за допомогою Create React App.

npx create-react-app react-app --template typescript
cd react-app

Ваш git-репозиторій має бути ініціалізований автоматично.

Create React App 1 Create React App 2

Створення репозиторію на GitHub

Перебуваючи у теці з новоствореним застосунком та створіть новий репозиторій на GitHub.

gh repo create

Create GitHub Repository

Налаштування репозиторію

Перейдіть до налаштувань репозиторію та увімкніть GitHub Pages. Оберіть джерело для Build and deployment — GitHub Actions.

GitHub Pages Settings

Відкрийте меню Actions/General, прокрутіть до розділу Workflow permissions та надайте дозволи на читання та запис для робочого процесу GitHub Actions.

GitHub Actions Permissions

Додавання робочого процесу GitHub Actions

Створіть нову теку .github/workflows у корені вашого репозиторію.

mkdir -p .github/workflows

Створіть новий файл з назвою (наприклад) deploy.yml у теці .github/workflows.

Додайте назву вашого робочого процесу.

name: Deploy React App

Це дозволить вам вирізняти цей робочий процес серед інших.

Додайте наступний вміст до файлу deploy.yml.



on:
    push:
        branches: [main]
    pull_request:
        types:
            - closed
        branches: [main]
    workflow_dispatch:

Цей розділ описує події, що запускають робочий процес. У цьому випадку робочий процес буде запущений при безпосередньому внесенні змін в гілку main за допомогою git push, при виконанні pull request та при ручному запуску робочого процесу.

Додайте опис завдань до робочого процесу.


jobs:
  build:
    runs-on: ubuntu-latest

Наше завдання з ім’ям build буде виконуватись на останній версії Ubuntu.

Додайте кроки до завдання.


    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'

Перший крок витягує код з репозиторію. Другий крок налаштовує Node.js.

Додайте більше кроків до завдання.


      - name: Install dependencies
        run: npm ci

      - name: Build
        run: npm run build

Третій крок встановлює залежності, а четвертий крок збирає застосунок React.

Додайте останні кроки до завдання.


      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          name: 'github-pages'
          path: build

Тут ми використовуємо дію upload-pages-artifact для завантаження теки збірки як артефакту для подальшого розгортання.

Створіть кроки розгортання.


  deploy:
    if: github.event.pull_request.merged == true || github.event_name == 'push' || github.event_name == 'workflow_dispatch'
    needs: build

    permissions:
      pages: write
      id-token: write
      contents: read

    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}

Завдання розгортання буде виконуватись тільки якщо pull request обʼєднано з основною гілкою або робочий процес запускається через git push або вручну. Воно потребує завершення завдання build. Завдання розгортання має дозволи на запис до сторінок, запис токена id та читання вмісту. Ім’я середовища — github-pages, а URL — покаже вам адресу після завершення кроку розгортання.

Додайте кроки до завдання розгортання.


    runs-on: ubuntu-latest
    steps:
      - name: Setup Pages
        uses: actions/configure-pages@v5

      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          artifact_name: 'github-pages'

Перший крок налаштовує Pages. Другий крок розгортає теку збірки на GitHub Pages за допомогою deploy-pages. Ми використовуємо артефакт попередньо створений на етапі збірки (build) та GitHub token для автентифікації розгортання.

Тепер зробіть commit змін та надішліть їх у репозиторій.

git add .
git commit -m "Add GitHub Actions workflow"
git push

Налаштування package.json

Відкрийте файл package.json і додайте параметр homepage. Ви можете встановити його значення як . або надати URL вашого репо для GitHub Pages ("homepage": "https://andygol.github.io/react-app/").

{
  "name": "react-app",
  "version": "0.1.0",
  "private": true,
+  "homepage": ".",
  "dependencies": {
    …

Розгортання застосунку React

Будь-які зміни, які ви вносите до гілки main, запустять робочий процес GitHub Actions. Робочий процес збере застосунок React і розгорне його на GitHub Pages.

Deployed React App

https://andygol.co.ua/react-app/

Ось і все! Ви успішно розгорнули застосунок React на GitHub Pages за допомогою GitHub Actions.

PS. Якщо ви хочете побачити повний файл робочого процесу, перегляньте репозиторій на GitHub.