Skip to main content

Utilisation de workflows personnalisés avec GitHub Pages

Vous pouvez tirer parti de l’utilisation de GitHub Actions et de GitHub Pages en crĂ©ant un fichier de workflows ou en choisissant parmi les workflows prĂ©dĂ©finis.

Qui peut utiliser cette fonctionnalité ?

GitHub Pages est disponible dans les rĂ©fĂ©rentiels publics avec GitHub Free et GitHub Free pour les organisations, et dans les rĂ©fĂ©rentiels publics et privĂ©s avec GitHub Pro, GitHub Team, GitHub Enterprise Cloud et GitHub Enterprise Server. Pour plus d’informations, consultez Plans de GitHub.

À propos des workflows personnalisĂ©s

Les workflows personnalisĂ©s permettent de crĂ©er des sites GitHub Pages via l’utilisation de GitHub Actions. Vous pouvez toujours sĂ©lectionner la branche que vous souhaitez utiliser via le fichier de workflows, mais vous pouvez faire beaucoup plus en utilisant des workflows personnalisĂ©s. Pour commencer Ă  utiliser des workflows personnalisĂ©s, vous devez d’abord les activer pour votre rĂ©fĂ©rentiel actuel. Pour plus d’informations, consultez « Configuration d’une source de publication pour votre site GitHub Pages Â».

Configuration de l'action configure-pages

GitHub Actions permet l’utilisation de GitHub Pages via l’action configure-pages, qui vous permet Ă©galement de collecter diffĂ©rentes mĂ©tadonnĂ©es sur un site web. Pour plus d’informations, consultez l’action configure-pages.

Pour utiliser l’action, placez cet extrait de code sous votre jobs dans le workflow souhaitĂ©.

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

Cette action permet de prendre en charge le dĂ©ploiement de n’importe quel gĂ©nĂ©rateur de site statique sur GitHub Pages. Pour rendre ce processus moins rĂ©pĂ©titif, vous pouvez utiliser des modĂšles de workflow pour certains des gĂ©nĂ©rateurs de sites statiques les plus utilisĂ©s. Pour plus d’informations, consultez « Utilisation de modĂšles de workflow Â».

Configuration de l'action upload-pages-artifact

Les actions upload-pages-artifact vous permettent d’empaqueter et de charger des artefacts. L’artefact GitHub Pages doit ĂȘtre une archive gzip compressĂ©e contenant un seul fichier tar. Le fichier tar doit avoir une taille infĂ©rieure Ă  10 Go et ne doit pas contenir de liens symboliques ou physiques. Pour plus d’informations, consultez l’action upload-pages-artifact.

Pour utiliser l’action dans votre workflow actuel, placez cet extrait de code sous jobs.

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

DĂ©ploiement d’artefacts GitHub Pages

L’action deploy-pages gĂšre la configuration nĂ©cessaire au dĂ©ploiement d’artefacts. Pour garantir une fonctionnalitĂ© optimale, les conditions suivantes doivent ĂȘtre remplies :

  • Le travail doit disposer d’un minimum d’autorisations pages: write et id-token: write.
  • Le paramĂštre needs doit ĂȘtre dĂ©fini sur id Ă  l’étape de gĂ©nĂ©ration. Le fait de ne pas dĂ©finir ce paramĂštre peut entraĂźner un dĂ©ploiement indĂ©pendant qui recherche continuellement un artefact jamais créé.
  • Un environment doit ĂȘtre Ă©tabli pour appliquer des rĂšgles de protection de branche/dĂ©ploiement. L’environnement par dĂ©faut est github-pages.
  • Pour spĂ©cifier l’URL de la page en tant que sortie, utilisez le champ url:.

Pour plus d’informations, consultez l’action 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
# ...

Liaison de travaux de génération et de déploiement distincts

Vous pouvez lier vos travaux build et deploy dans un seul fichier de workflows, Ă©liminant ainsi la nĂ©cessitĂ© de crĂ©er deux fichiers distincts pour obtenir le mĂȘme rĂ©sultat. Pour commencer Ă  utiliser votre fichier de workflows, vous pouvez dĂ©finir sous jobs des workflows build et deploy pour exĂ©cuter vos travaux.

# ...

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

Dans certains cas, vous pouvez choisir de tout combiner dans un seul travail, en particulier s’il n’est pas nĂ©cessaire de procĂ©der Ă  une gĂ©nĂ©ration. Vous vous concentrez donc uniquement sur l’étape de dĂ©ploiement.

# ...

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

# ...

Vous pouvez dĂ©finir les travaux Ă  exĂ©cuter sur diffĂ©rents exĂ©cuteurs, de façon sĂ©quentielle ou en parallĂšle. Pour plus d’informations, consultez « Choix de ce que fait votre workflow Â».