Skip to main content

Esta versão do GitHub Enterprise será descontinuada em 2023-01-18. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, segurança aprimorada e novos recursos, atualize para a última versão do GitHub Enterprise. Para obter ajuda com a atualização, entre em contato com o suporte do GitHub Enterprise.

Coo usar scripts para testar seu código em um executor

Como usar recursos essenciais do GitHub Actions para integração contínua (CI).

Observação: no momento, não há suporte para os executores hospedados no GitHub no GitHub Enterprise Server. Você pode ver mais informações sobre o suporte futuro planejado no GitHub public roadmap.

Visão geral de exemplo

Este artigo usa um fluxo de trabalho de exemplo para demonstrar alguns dos principais recursos de CI do GitHub Actions. Quando esse fluxo de trabalho é disparado, ele executa automaticamente um script que verifica se o site Docs do GitHub tem links desfeitos.

O diagrama a seguir mostra uma visão de alto nível das etapas do fluxo de trabalho e como elas são executadas no trabalho:

Diagrama de visão geral das etapas do fluxo de trabalho

Recursos usados neste exemplo

O fluxo de trabalho de exemplo demonstra os seguintes recursos do GitHub Actions:

RecursoImplementação
Como disparar um fluxo de trabalho a ser executado automaticamente:push

Fluxo de trabalho de exemplo

O fluxo de trabalho a seguir foi criado pela equipe de engenharia de Docs do GitHub. Para revisar a versão mais recente deste arquivo no repositório github/docs, confira link-check-all.yml.

Observação: cada linha desse fluxo de trabalho é explicada na próxima seção em "Noções básicas sobre o exemplo".

YAML
name: 'Link Checker: All English'

# **What it does**: Renders the content of every page and check all internal links.
# **Why we have it**: To make sure all links connect correctly.
# **Who does it impact**: Docs content.

on:
  workflow_dispatch:
  push:
    branches:
      - main
  pull_request:

permissions:
  contents: read
  # Needed for the 'trilom/file-changes-action' action
  pull-requests: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
  cancel-in-progress: true

jobs:
  check-links:
    runs-on: ${{ fromJSON('["ubuntu-latest", "self-hosted"]')[github.repository == 'github/docs-internal'] }}
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Setup node
        uses: actions/setup-node@v2
        with:
          node-version: 16.13.x
          cache: npm

      - name: Install
        run: npm ci

      # Creates file "$/files.json", among others
      - name: Gather files changed
        uses: trilom/file-changes-action@a6ca26c14274c33b15e6499323aac178af06ad4b
        with:
          fileOutput: 'json'

      # For verification
      - name: Show files changed
        run: cat $HOME/files.json

      - name: Link check (warnings, changed files)
        run: |
          ./script/rendered-content-link-checker.mjs \
            --language en \
            --max 100 \
            --check-anchors \
            --check-images \
            --verbose \
            --list $HOME/files.json

      - name: Link check (critical, all files)
        run: |
          ./script/rendered-content-link-checker.mjs \
            --language en \
            --exit \
            --verbose \
            --check-images \
            --level critical

Compreendendo o exemplo

A tabela a seguir explica como cada um desses recursos é usado ao criar um fluxo de trabalho GitHub Actions.

Código Explicação
YAML
name: 'Link Checker: All English'

O nome do fluxo de trabalho, como aparece na guia "Ações" do repositório do GitHub.

YAML
on:

A palavra-chave on permite definir os eventos que são disparados quando o fluxo de trabalho é executado. Você pode definir vários eventos aqui. Para obter mais informações, confira "Como disparar um fluxo de trabalho".

YAML
  workflow_dispatch:

Adicione o evento workflow_dispatch se você quiser a capacidade de executar manualmente esse fluxo de trabalho a partir da interface do usuário. Para obter mais informações, confira workflow_dispatch.

YAML
  push:
    branches:
      - main

Adicione o evento push para que o fluxo de trabalho seja executado automaticamente sempre que um commit for enviado por push a um branch denominado main. Para obter mais informações, confira push.

YAML
  pull_request:

Adicione o evento pull_request para que o fluxo de trabalho seja executado automaticamente sempre que uma solicitação de pull for criada ou atualizada. Para obter mais informações, confira pull_request.

YAML
permissions:
  contents: read
  pull-requests: read

Modifica as permissões padrão concedidas a GITHUB_TOKEN. Isso variará dependendo das necessidades do fluxo de trabalho. Para obter mais informações, confira "Como atribuir permissões a trabalhos".

YAML
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'

Cria um grupo de simultaneidade para eventos específicos e usa o operador || para definir valores de fallback. Para mais informações, confira "Como usar a simultaneidade".

YAML
  cancel-in-progress: true

Cancela todos os trabalhos ou fluxos de trabalho em execução no mesmo grupo de simultaneidade.

YAML
jobs:

Agrupa todos os trabalhos executados no arquivo de fluxo de trabalho.

YAML
  check-links:

Define um trabalho com a ID check-links que é armazenada na chave jobs.

YAML
    runs-on: ${{ fromJSON('["ubuntu-latest", "self-hosted"]')[github.repository == 'github/docs-internal'] }}

Configura o trabalho a ser executado em um executor hospedado no GitHub ou um executor auto-hospedado, dependendo do repositório que executa o fluxo de trabalho. Neste exemplo, o trabalho será executado em um executor auto-hospedado se o repositório for chamado docs-internal e estiver dentro da organização github. Se o repositório não corresponder a esse caminho, ele será executado em um executor ubuntu-latest hospedado no GitHub. Para obter mais informações sobre essas opções, confira "Como escolher o executor para um trabalho".

YAML
    steps:

Agrupa todas as etapas que serão executadas durante o trabalho check-links. Cada trabalho em um fluxo de trabalho tem a própria seção steps.

YAML
      - name: Checkout
        uses: actions/checkout@v2

A palavra-chave uses informa que o trabalho deve recuperar a ação chamada actions/checkout. Esta é uma ação que verifica seu repositório e o faz o download do runner, permitindo que você execute ações contra seu código (como, por exemplo, ferramentas de teste). Você deve usar a ação de checkout sempre que o fluxo de trabalho for executado no código do repositório ou você estiver usando uma ação definida no repositório.

YAML
      - name: Setup node
        uses: actions/setup-node@v2
        with:
          node-version: 16.13.x
          cache: npm

Esta etapa usa a ação actions/setup-node para instalar a versão especificada do pacote de software Node.js no executor, o que permite que você acesse o comando npm.

YAML
      - name: Install
        run: npm ci

A palavra-chave run instrui o trabalho a executar um comando no executor. Nesse caso, npm ci é usado para instalar os pacotes de software npm para o projeto.

YAML
      - name: Gather files changed
        uses: trilom/file-changes-action@a6ca26c14274c33b15e6499323aac178af06ad4b
        with:
          fileOutput: 'json'

Usa a ação trilom/file-changes-action para reunir todos os arquivos alterados. Este exemplo é fixado a uma versão específica da ação, usando o SHA a6ca26c14274c33b15e6499323aac178af06ad4b.

YAML
      - name: Show files changed
        run: cat $HOME/files.json

Lista o conteúdo de files.json. Isso ficará visível no log da execução do fluxo de trabalho e poderá ser útil para depuração.

YAML
      - name: Link check (warnings, changed files)
        run: |
          ./script/rendered-content-link-checker.mjs \
            --language en \
            --max 100 \
            --check-anchors \
            --check-images \
            --verbose \
            --list $HOME/files.json

Esta etapa usa o comando run para executar um script que está armazenado no repositório script/rendered-content-link-checker.mjs e passa todos os parâmetros necessários para execução.

YAML
      - name: Link check (critical, all files)
        run: |
          ./script/rendered-content-link-checker.mjs \
            --language en \
            --exit \
            --verbose \
            --check-images \
            --level critical

Esta etapa usa o comando run para executar um script que está armazenado no repositório script/rendered-content-link-checker.mjs e passa todos os parâmetros necessários para execução.

Próximas etapas