Integração AppCenter e GitLab

Tryam, olá!

Gostaria de falar sobre minha experiência na configuração da integração entre GitLab e AppCenter via BitBucket.

A necessidade dessa integração surgiu ao configurar o lançamento automático de testes de UI para um projeto multiplataforma no Xamarin. Tutorial detalhado abaixo do corte!

* Farei um artigo separado sobre como automatizar testes de UI em condições de plataforma cruzada se o público estiver interessado.

Eu só desenterrei um desses materiais статью. Portanto, meu artigo pode ajudar alguém.

Tarefa: Configure o lançamento automático de testes de UI no AppCenter, visto que nossa equipe usa GitLab como sistema de controle de versão.

problema Acontece que o AppCenter não se integra diretamente ao GitLab. Bypass via BitBucket foi escolhido como uma das soluções.

Degraus

1. Crie um repositório vazio no BitBucket

Não vejo necessidade de descrever isso com mais detalhes :)

2. Configurando o GitLab

Precisamos que, ao enviar/mesclar no repositório, as alterações também sejam carregadas no BitBucket. Para fazer isso, adicione um executor (ou edite o arquivo .gitlab-ci.yml existente).

Primeiro adicionamos 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:[email protected]/username/projectname.git

No meu caso, este é o arquivo que recebi:

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

Lançamos a compilação, verificamos se nossas alterações/arquivos estão no BitBucket.
* como a prática tem mostrado, a configuração de chaves SSH é opcional. Mas, por precaução, fornecerei um algoritmo para configurar uma conexão via SSH abaixo

Conectando via SSH

Primeiro você precisa gerar uma chave SSH. Muitos artigos foram escritos sobre isso. Por exemplo, você pode olhar aqui.
As chaves geradas são mais ou menos assim:
Integração AppCenter e GitLab

Próximo A chave secreta precisa ser adicionado 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 secreta. Vamos chamar a variável SSH_PRIVATE_KEY.
* este arquivo, diferentemente do arquivo de chave pública, não terá a extensão
Integração AppCenter e GitLab

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

Integração AppCenter e GitLab

Aqui clicamos em Adicionar chave e inserimos o conteúdo do arquivo com a chave pública (arquivo com extensão .pub).

A próxima etapa é usar as chaves no gitlab-runner. Use estes comandos, mas substitua os asteriscos pelos seus detalhes

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 [email protected]

mirror:
  stage: mirror
  script:
    - git push --mirror https://****:****@bitbucket.org/*****/*****.git

3. Configurando o AppCenter

Criamos um novo aplicativo no AppCenter.

Integração AppCenter e GitLab

Especifique o idioma/plataforma

Integração AppCenter e GitLab

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

Ótimo, agora precisamos configurar a compilação. Para fazer isso, encontre o ícone de engrenagem

Integração AppCenter e GitLab

Em princípio, tudo ali é intuitivo. Selecione um projeto e configuração. Se necessário, habilite o lançamento de testes após a construção. Eles começarão automaticamente.

Basicamente, isso é tudo. Parece simples, mas, naturalmente, nem tudo correrá bem. Portanto, descreverei alguns erros que encontrei durante o trabalho:

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

Também ocorre porque o caminho para ssh-keygen.exe não é adicionado às variáveis ​​de ambiente.
Existem duas opções: adicionar C:Program FilesGitusrbin às variáveis ​​de ambiente (será aplicado após a reinicialização da máquina) ou iniciar o console a partir deste diretório.

AppCenter conectado à conta BitBucket errada?

Para resolver o problema, você precisa desvincular sua conta BitBucket do AppCenter. Efetuamos login na conta BitBucket errada e acessamos o perfil do usuário.

Integração AppCenter e GitLab

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

Integração AppCenter e GitLab

Clique em Revogar para desvincular sua conta.

Integração AppCenter e GitLab

Depois disso, você precisa fazer login com a conta BitBucket necessária.
* Como último recurso, limpe também o cache do navegador.

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

Integração AppCenter e GitLab

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

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

Nós o usamos em vez de um comando

  - eval $(ssh-agent -s)

Equipe:

  - ssh-agent

Em alguns casos, você terá que especificar o caminho completo para C:Program FilesGitusrbinssh-agent.exe ou adicionar esse caminho às variáveis ​​do sistema na máquina onde o executor está sendo executado

O AppCenter Build está tentando iniciar uma compilação para um projeto a partir de um repositório bitBucket desatualizado

No meu caso, o problema surgiu porque eu estava trabalhando com várias contas. Decidi limpar o cache.

Fonte: habr.com

Adicionar um comentário