Executando CI/CD do GitHub em sua maquina
Logo quando foi lançado o GitHubActions trouxe um post sobre como configurar seu projeto swift para rodar, mas caso você tenha um projeto privado e queria configurar um runner em seu Mac é possível e muito simples e rápido de configurar. Vamos lá?
Originalmente postado em meu site:
https://micheltlutz.me/post/github-actions-selfhosted-runners
Para iniciar abaixo a diferença entre GitHub e Self hosted runners:
GitHub-hosted runners:
- São atualizados automaticamente.
- São gerenciados e mantidos pelo GitHub.
- Forneça 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
Uma Janela ira abrir 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 versão abaixo é relacionada a 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
Ultimo 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, eu 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 Teston:
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