Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais recentes, acesse a documentação em inglês. Se houver problemas com a tradução desta página, entre em contato conosco.

Migrar do Jenkins para o GitHub Actions

O GitHub Actions e o Jenkins compartilham múltiplas semelhanças, o que torna a migração para GitHub Actions relativamente simples.

Neste artigo

Introdução

O Jenkins e o GitHub Actions permitem criar fluxos de trabalho que criam, testam, publicam, lançam e implementam código automaticamente. O Jenkins e o GitHub Actions compartilham algumas semelhanças em termos de configuração do fluxo de trabalho:

  • O Jenkins cria fluxos de trabalho usando Declarative Pipelines, que são semelhantes aos arquivos do fluxo de trabalho GitHub Actions.
  • O Jenkins usa stages para executar uma coleção de etapas, enquanto o GitHub Actions usa trabalhos para agrupar uma ou mais etapas ou comandos individuais.
  • O Jenkins e o GitHub Actions são compatíveis com criações baseadas em contêineres. Para obter mais informações, consulte "Criar uma ação de contêiner do Docker".
  • É possível reutilizar e compartilhar novamente etapas ou tarefas com a comunidade.

Para obter mais informações, consulte "Conceitos básicos para GitHub Actions".

Principais diferenças

  • O Jenkins tem dois tipos de sintaxe para a criação de pipelines: Declarative Pipeline e Scripted Pipeline. O GitHub Actions usa o YAML para criar fluxos de trabalho e arquivos de configuração. Para obter mais informações, consulte "Sintaxe do fluxo de trabalho para o GitHub Actions".
  • As implementações do Jenkins são tipicamente auto-hospedadas, com usuários mantendo os servidores em seus próprios centros de dados. O GitHub Actions oferece uma abordagem de nuvem híbrida, hospedando seus próprios executores que você pode usar para executar trabalhos, ao mesmo tempo em que também oferece suporte aos executores auto-hospedados. Para obter mais informações, consulte Sobre os executores auto-hospedados.

Comparar recursos

Distribuir suas criações

O Jenkins permite que se envie criações para um único agente de criação, ou você pode distribuí-las entre vários agentes. Você também pode classificar esses agentes de acordo com vários atributos, como, por exemplo, tipos de sistema operacional.

De modo similar, o GitHub Actions pode enviar trabalhos para executores hospedados em GitHub ou executores auto-hospedados, e você pode usar as etiquetas para classificar os executores de acordo com vários atributos. A tabela a seguir compara como o conceito de criação distribuída é implementado tanto para o Jenkins e quanto para o GitHub Actions.

JenkinsGitHub Actions
agentesexecutores
executores auto-hospedados

Usar seções para organizar pipelines

O Jenkins divide seus Declarative Pipelines em múltiplas seções. De forma similar, o GitHub Actions organiza seus fluxos de trabalho em seções separadas. A tabela abaixo compara as seções do Jenkins com o fluxo de trabalho GitHub Actions.

Diretivas do JenkinsGitHub Actions
agentejobs.<job_id>.runs-on
jobs.<job_id>.container
post
stagesjobs
stepsjobs.<job_id>.steps

Usar diretivas

O Jenkins usa diretivas para gerenciar os Declarative Pipelines. Essas diretivas definem as características do seu fluxo de trabalho e como ele será executado. A tabela abaixo demonstra como estas diretivas são mapeadas com conceitos dentro do GitHub Actions.

Diretivas do JenkinsGitHub Actions
ambientejobs.<job_id>.env
jobs.<job_id>.steps.env
optionsjobs.<job_id>.strategy
jobs.<job_id>.strategy.fail-fast
jobs.<job_id>.timeout-minutes
parâmetrosentradas
saídas
gatilhosem
on.<event_name>.types
on.<push|pull_request>.<branches|tags>
on.<push|pull_request>.paths
aciona { upstreamprojects() }jobs.<job_id>.needs
Sintaxe cron do Jenkinson.schedule
stagejobs.<job_id>
jobs.<job_id>.name
toolsEspecificações para executores hospedados em GitHub
entradainputs
quandojobs.<job_id>.if

Usar estágios sequenciais

Processamento paralelo do trabalho

O Jenkins pode executar os stages e as etapas em paralelo, enquanto o GitHub Actions está executando os trabalhos em paralelo.

Jenkins em paraleloGitHub Actions
paralelojobs.<job_id>.strategy.max-parallel

Criar matriz

Tanto o GitHub Actions quanto o Jenkins permitem que você use uma matriz de criação para definir várias combinações de sistema.

JenkinsGitHub Actions
eixoestratégia/matriz
contexto
stagessteps-context
exclui

Usar passos para executar tarefas

O Jenkins agrupa as etapas em stages. Cada uma dessas etapas pode ser um script, função ou comando, entre outros. Da mesma forma, o GitHub Actions usa trabalhos para executar grupos específicos de etapas.

Etapas do JenkinsGitHub Actions
scriptjobs.<job_id>.steps

Exemplos de tarefas comuns

Agendar um pipeline para ser executado com cron

Pipeline do Jenkins Fluxo de trabalho do GitHub Actions
  pipeline {
   agent any
    triggers {
      cron('H/15 * * * 1-5')
    }
 }
on:
schedule:
  - cron:  '*/15 * * * 1-5'

Configurar variáveis de ambiente em um pipeline

Pipeline do Jenkins Fluxo de trabalho do GitHub Actions
pipeline {
  agent any
  environment {
    MAVEN_PATH = '/usr/local/maven'
  }
}
jobs:
  maven-build:
  env:
    MAVEN_PATH: '/usr/local/maven'

Criar projetos projetos de upstream

Pipeline do Jenkins Fluxo de trabalho do GitHub Actions
pipeline {
  triggers {
    upstream(
      upstreamProjects: 'job1,job2',
      threshold: hudson.model.Result.SUCCESS)
    }
  }
}
jobs:
  job1:
  job2:
    needs: job1
  job3:
    needs: [job1, job2]

Criar com vários sistemas operacionais

Pipeline do Jenkins Fluxo de trabalho do GitHub Actions
pipeline {
agent none
stages {
stage('Run Tests') {
  matrix {
    axes {
      axis {
        name: 'PLATFORM'
        values: 'macos', 'linux'
      }
    }
    agent { label "${PLATFORM}" }
    stages {
      stage('test') {
        tools { nodejs "node-12" }
        steps {
          dir("scripts/myapp") {
            sh(script: "npm install -g bats")
            sh(script: "bats tests")
          }
        }
      }
    }
  }
}
}
}
nome: demo-workflow
em:
  push:
trabalhos:
  teste:
    runs-on: ${{ matrix.os }}
    estratégia:
      fail-fast: false
      matriz:
        os: [macos-latest, ubuntu-latest]
    etapas:
      - usa: actions/checkout@v1
      - usa: actions/setup-node@v1
        com:
          node-version: 12
      - executar: npm install -g bats
      - executar: bats tests
        working-directory: scripts/myapp

Esse documento ajudou você?

Privacy policy

Ajude-nos a tornar esses documentos ótimos!

Todos os documentos do GitHub são de código aberto. Você percebeu que algo que está errado ou não está claro? Envie um pull request.

Faça uma contribuição

Ou, aprenda como contribuir.