Integração do AppCenter e GitLab

Olá, olá!


Quero falar sobre minha experiência na configuração da integração do GitLab e do AppCenter via BitBucket.


A necessidade dessa integração surgiu durante a configuração do início automático de testes de interface do usuário para um projeto de plataforma cruzada no Xamarin. Um tutorial detalhado sob o corte!


* Na automação do teste de interface do usuário em condições de plataforma cruzada, criarei um artigo separado se o público estiver interessado.


Esse material desenterrou apenas um artigo . Portanto, meu artigo pode ajudar alguém.


Objetivo : configurar o início automático de testes de interface do usuário no AppCenter, enquanto nossa equipe usa o GitLab como um sistema de controle de versão.


O problema acabou sendo que o AppCenter não se integra diretamente ao GitLab. Como uma das soluções, um desvio através do BitBucket foi escolhido.


Passos


1. Crie um repositório BitBucket vazio


Não vejo a necessidade de descrevê-lo com mais detalhes :)


2. Configure o GitLab


Precisamos que, quando push / mesclar para o repositório, as alterações também sejam derramadas no BitBucket. Para fazer isso, adicione o corredor (ou edite o arquivo .gitlab-ci.yml existente).


Primeiro, adicione comandos à seção before_scripts


- git config --global user.email "user@email" - git config --global user.name "username" 

Em seguida, adicione o seguinte comando ao estágio desejado:


 - git push --mirror https://username:password@bitbucket.org/username/projectname.git 

No meu caso, eu tenho esse arquivo


 before_script: - git config --global user.email "user@email" - git config --global user.name "username" stages: - mirror mirror: stage: mirror script: - git push --mirror https://****:*****@bitbucket.org/****/testapp.git 

Iniciamos a compilação, verifique se nossas alterações / arquivos são baseados no BitBucket.
* Como a prática demonstrou, a configuração de chaves SSH é opcional. Mas, apenas no caso, darei o algoritmo de configuração da conexão através do SSH abaixo


Conexão SSH

Primeiro você precisa gerar uma chave SSH. Muitos artigos foram escritos sobre isso. Para um exemplo, você pode procurar aqui .
As chaves geradas são mais ou menos assim:


Em seguida, a chave secreta precisa ser adicionada como uma variável no GitLab. Para fazer isso, vá para Configurações> CI / CD> Variáveis ​​de ambiente. Adicione TODO o conteúdo do arquivo no qual você salvou a chave privada. Vamos nomear a variável SSH_PRIVATE_KEY.
* este arquivo, diferente de um arquivo de chave pública, não terá extensão


Ótimo, então você precisa adicionar a chave pública ao BitBucket. Para fazer isso, abra o repositório, vá para Configurações> Teclas de acesso.



Em seguida, clique em Adicionar chave e cole o conteúdo do arquivo com a chave pública (arquivo com a extensão .pub).


O próximo passo é usar as chaves no gitlab-runner. Use estes comandos, mas especifique seus dados em vez de asteriscos


 image: timbru31/node-alpine-git:latest stages: - mirror before_script: - eval $(ssh-agent -s) - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null - mkdir -p ~/.ssh - chmod 700 ~/.ssh - ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts - chmod 644 ~/.ssh/known_hosts - git config --global user.email "*****@***" - git config --global user.name "****" - ssh -T git@bitbucket.org mirror: stage: mirror script: - git push --mirror https://****:****@bitbucket.org/*****/*****.git 

3. Configure o AppCenter


Criamos um novo aplicativo no AppCenter.



Especifique o idioma / plataforma



Em seguida, vá para a seção Compilar do aplicativo recém-criado. Selecionamos o BitBucket e o repositório criado na etapa 1.


Ok, agora você precisa configurar a compilação. Para fazer isso, localize o ícone de roda dentada



Em princípio, tudo é intuitivo lá. Selecionamos o projeto e a configuração. Se necessário, ative o lançamento de testes após a compilação. Eles iniciarão automaticamente.


Em princípio, é tudo. Parece fácil, mas, naturalmente, tudo não vai bem. Portanto, descreverei alguns erros que encontrei enquanto trabalhava:


'ssh-keygen' não é reconhecido como um comando interno ou externo.

Ele surge porque o caminho para o ssh-keygen.exe não foi adicionado às variáveis ​​de ambiente.
Existem duas opções: adicione C: \ Arquivos de programas \ Git \ usr \ bin às variáveis ​​de ambiente (serão aplicadas após a reinicialização da máquina) ou inicie o console nesse diretório.


AppCenter conectado à conta BitBucket errada?

Para resolver o problema, você precisa desatar a conta do BitBucket do AppCenter. Entramos na conta BitBucket errada, acessamos o perfil do usuário.



Em seguida, vá para Configurações> Gerenciamento de acesso> OAuth



Clique em Revogar para desatar a conta.



Depois disso, você precisa fazer login na conta BitBucket necessária
* Em casos extremos, limpe também o cache do navegador


Agora vá para o AppCenter. vá para a seção Build, clique em Desconectar conta BitBucket



Quando a conta antiga é desatada, vinculamos o AppCenter novamente. Agora para a conta desejada.


'eval' não é reconhecido como um comando interno ou externo

Use em vez do comando


  - eval $(ssh-agent -s) 

Comando:


  - ssh-agent 

Em alguns casos, você precisará especificar o caminho completo para C: \ Arquivos de Programas \ Git \ usr \ bin \ ssh-agent.exe ou adicionar esse caminho às variáveis ​​do sistema na máquina em que o corredor está sendo executado


O AppCenter Build tenta iniciar uma compilação para um projeto a partir de um repositório irrelevante bitBucket

No meu caso, o problema surgiu porque eu trabalhei com várias contas. Eu decidi limpar o cache.

Source: https://habr.com/ru/post/pt444136/


All Articles