特里姆,你好!
我想谈谈我通过 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:[email protected]/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 [email protected]
mirror:
stage: mirror
script:
- git push --mirror https://****:****@bitbucket.org/*****/*****.git
3. 设置应用中心
我们在 AppCenter 上创建一个新应用程序。
指定语言/平台
接下来,转到新创建的应用程序的“构建”部分。 我们在此处选择 BitBucket 和步骤 1 中创建的存储库。
太好了,现在我们需要配置构建。 为此,请找到齿轮图标
原则上,一切都是直观的。 选择项目和配置。 如有必要,请在构建后启用测试启动。 它们会自动启动。
基本上就是这样。 听起来很简单,但是,自然,一切都不会一帆风顺。 因此,我将描述我在工作中遇到的一些错误:
“ssh-keygen”不被识别为内部或外部命令。
出现这种情况也是因为 ssh-keygen.exe 的路径未添加到环境变量中。
有两个选项:将 C:Program FilesGitusrbin 添加到环境变量(将在重新启动计算机后应用),或从此目录启动控制台。
AppCenter 连接到了错误的 BitBucket 帐户?
要解决此问题,您需要将 BitBucket 帐户与 AppCenter 取消关联。 我们登录了错误的 BitBucket 帐户并转到用户个人资料。
接下来,转到设置 > 访问管理 > OAuth
单击撤销以取消关联您的帐户。
之后,您需要使用所需的 BitBucket 帐户登录。
* 作为最后的手段,还请清除浏览器缓存。
现在让我们转到应用程序中心。 转到“构建”部分,单击“断开 BitBucket 帐户”
当旧帐户取消链接后,我们再次链接AppCenter。 现在转到所需的帐户。
“eval”不被识别为内部或外部命令
我们用它代替命令
- eval $(ssh-agent -s)
团队:
- ssh-agent
在某些情况下,您必须指定 C:Program FilesGitusrbinssh-agent.exe 的完整路径,或者将此路径添加到运行运行程序的计算机上的系统变量中
AppCenter Build 正在尝试从过时的 bitBucket 存储库启动项目的构建
就我而言,出现问题是因为我正在使用多个帐户。 我决定清除缓存。
来源: habr.com