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
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
As chaves geradas são mais ou menos assim:
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
Ó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.
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.
Especifique o idioma/plataforma
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
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.
Em seguida, vá para Configurações > Gerenciamento de acesso > OAuth
Clique em Revogar para desvincular sua conta.
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
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