Carregando...

GitHub Actions Self-hosted runners

05 de April de 2020

 

Logo quando foi lançado o GitHubActions, publiquei um post sobre como configurar seu projeto swift para rodar, mas caso você tenha um projeto privado e queira configurar um runner em seu Mac, é possível e muito simples e rápido de configurar. Vamos lá?

 
Para iniciar temos abaixo a diferença entre GitHub e Self hosted runners:
 

GitHub-hosted runners:

  •  São atualizados automaticamente.
  •  São gerenciados e mantidos pelo GitHub.
  •  Fornecem uma instância limpa para cada execução de trabalho.
  •  Use minutos gratuitos no seu plano do GitHub, com taxas por minuto aplicadas após ultrapassar os minutos gratuitos.
 

Self-hosted runners:

  • Pode usar serviços em nuvem ou máquinas locais pelas quais você já paga.
  • São personalizáveis para seus requisitos de hardware, sistema operacional, software e segurança.
  • Não precisa ter uma instância limpa para cada execução do trabalho.
  • Você pode usar livremente com as Ações do GitHub, mas você é responsável pelo custo de manutenção das máquinas executoras.

 

Adicionando Runner

 

  • No GitHub, navegue para a página principal do repositório.
  • Abaixo do nome do repositório, clique em Settings.

  • Na coluna da esquerda, clique em Actions.
  • Na tela que abrir deixe marcado o campo Enable local and third party Actions for this repository
  • Logo abaixo em Self-hosted runners clique no botão verde Add Runner
     

 Abrirá uma janela com as informações de Download e configuração (selecione MacOS):

 

Download

- Criar pasta (criei em um segundo volume que tenho, mas pode ser em seu home de usuário)

 
Até o momento da criação deste post não é possível configurar o Runner para rodar mais de um projeto. O que fiz foi mudar o nome da pasta `actions-runner` para `actions-runner-meuprojeto`. No caso eu tenho um runner configurado para cada projeto que quero rodar actions.
 
 
$ mkdir actions-runner && cd actions-runner

$ mkdir actions-runner-mdeditor && cd actions-runner-mdeditor	
 
 

Download

Faça o download runner package. A versão abaixo é relacionada à data do post (05/04/2020). 
Siga o link mais atual na janela que carregar em seu projeto.
$ curl -O -L https://github.com/actions/runner/releases/download/v2.168.0/actions-runner-osx-x64-2.168.0.tar.gz`

 

Extrair instalador

$ tar xzf actions-runner-osx-x64-2.168.0.tar.gz

 

Configurando

$ tar xzf actions-runner-osx-x64-2.168.0.tar.gz

 

Crie o runner e inicie a configuração passo a passo:

$ ./config.sh --url  --token 

 

Último passo, execute o runner:

$ ./run.sh

Se tudo deu certo você verá no terminal a seguinte informação:

 

E na sua tela de Runners estará assim:

Quando seu runner não estiver rodando: 

 

Atalhos

 

Devido a esse problema de não ser possível rodar um Runner para múltiplos projetos, criei alguns aliases em meu .bash_profile

 

alias meuprojeto-start-runner='bash pasta-do-seu-runner/actions-runner/run.sh'

 

Basta adicionar esta linha com as informações do caminho do seu runner no final do arquivo salvar e rodar executar o source source ~/.bash_profile

Agora sempre que quiser rodar o runner para esperar alguma action, basta no terminal chamar meuprojeto-start-runner

 

Usando seu Runner

 

Não esqueça de alterar seu arquivo yml de workflow para ele rodar em seu runner alterando o runs-on para self-hosted
 
runs-on: self-hosted
 
Vou deixar um arquivos yml bem simples para testes:
 
name: Build and Test

on:
  push:
    branches: [ develop ]
  pull_request:
    branches: [ master ]

jobs:
  build:

    #runs-on: macos-latest
    runs-on: self-hosted

    steps:
    - uses: actions/checkout@v2
    - name: Build
      run: | 
          xcodebuild clean build \
          -project 'nome do projeto.xcodeproj' \
          -scheme 'nome do scheme'
    - name: Run tests
      run: |
          xcodebuild \
          -project 'nome do projeto.xcodeproj' \
          -scheme 'nome do scheme' \
          test
 

Referências

Desenvolvido por Michel Lütz