AppCenter和GitLab的集成

你好,你好!


我想谈谈我通过BitBucket设置GitLab和AppCenter集成的经验。


在Xamarin上为跨平台项目自动启动UI测试时,就需要进行这种集成。 切下详细教程!


* 关于跨平台条件下的UI测试自动化,如果公众感兴趣,我将另作文章。


这样的材料只挖了一件。 因此,我的文章可以对某人有所帮助。


任务 :在我们的团队使用GitLab作为版本控制系统的同时,在AppCenter上设置UI测试的自动启动。


原来的问题是AppCenter没有直接与GitLab集成。 作为解决方案之一,选择了通过BitBucket的旁路。


步骤


1.创建一个空的BitBucket存储库


我认为不需要更详细地描述它:)


2.配置GitLab


当推送/合并到存储库时,我们需要将更改也注入BitBucket。 为此,添加运行器(或编辑现有的.gitlab-ci.yml文件)。


首先,将命令添加到before_scripts部分


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

然后将以下命令添加到所需的阶段:


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

就我而言,我有这样的档案


 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 

我们启动构建,检查我们的更改/文件是否基于BitBucket。
*如实践所示,配置SSH密钥是可选的。 但是,以防万一,我将在下面通过SSH提供连接设置算法


SSH连接

首先,您需要生成一个SSH密钥。 关于此的许多文章已被撰写。 例如,您可以在这里查看
生成的密钥如下所示:


接下来,需要在GitLab上将密钥添加为变量。 为此,请转到“设置”>“ CI / CD”>“环境变量”。 添加保存私钥的文件的所有内容。 让我们将变量命名为SSH_PRIVATE_KEY。
* 与公共密钥文件不同,此文件没有扩展名


很好,那么您需要将公钥添加到BitBucket。 为此,请打开存储库,然后转到“设置”>“访问密钥”。



然后单击“添加密钥”,并使用公共密钥(扩展名为.pub的文件)粘贴文件的内容。


下一步是使用gitlab-runner中的键。 使用以下命令,但指定数据而不是星号


 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.配置AppCenter


我们在AppCenter上创建一个新的应用程序。



指定语言/平台



接下来,转到新创建的应用程序的“构建”部分。 我们选择BitBucket,然后选择在步骤1中创建的存储库。


好的,现在您需要配置构建。 为此,找到齿轮图标



原则上,那里的一切都是直观的。 我们选择项目和配置。 如有必要,请在构建后启用测试启动。 它们将自动启动。


原则上就是这样。 听起来很容易,但是自然而然地,一切都不会顺利进行。 因此,我将描述工作时遇到的一些错误:


无法将“ ssh-keygen”识别为内部或外部命令。

出现该问题是因为s​​sh-keygen.exe的路径未添加到环境变量中。
有两个选项:将C:\ Program Files \ Git \ usr \ bin添加到环境变量(将在重新启动计算机后应用),或从此目录启动控制台。


AppCenter连接到错误的BitBucket帐户?

要解决此问题,您需要从AppCenter取消释放BitBucket帐户。 我们输入了错误的BitBucket帐户,然后转到用户个人资料。



接下来,转到设置>访问管理> OAuth



单击撤消以解除帐户绑定。



之后,您需要使用必要的BitBucket帐户登录
* 在极端情况下,还要清除浏览器缓存


现在转到AppCenter。 转到“构建”部分,单击“断开BitBucket帐户的连接”



解除旧帐户的绑定后,我们将再次绑定AppCenter。 现在到所需的帐户。


'eval'不被识别为内部或外部命令

使用代替命令


  - eval $(ssh-agent -s) 

命令:


  - ssh-agent 

在某些情况下,您将必须指定C:\ Program Files \ Git \ usr \ bin \ ssh-agent.exe的完整路径,或者将此路径添加到运行运行程序的计算机上的系统变量中


AppCenter Build尝试从无关的bitBucket存储库中启动项目的构建

就我而言,出现问题是因为我使用多个帐户。 我决定清除缓存。

Source: https://habr.com/ru/post/zh-CN444136/


All Articles