我使用 android 的新命令行工具,因为旧的 android sdk-tools 存储库不再可用。所以我改变了我的 gitlab-ci 来加载 commandlintools。但是当我尝试运行它时,出现以下错误:
Warning: Could not create settings
java.lang.IllegalArgumentException
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.<init>(SdkManagerCliSettings.java:428)
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:152)
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:134)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:57)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Run Code Online (Sandbox Code Playgroud)
我已经尝试过手动执行这些命令,但我遇到了同样的错误。此外,如果我运行sdkmanager --version,也会发生同样的错误。我的 gitlab-ci 看起来像:
image: openjdk:9-jdk
variables:
ANDROID_COMPILE_SDK: "29"
ANDROID_BUILD_TOOLS: "29.0.3"
ANDROID_SDK_TOOLS: "6200805"
before_script:
- apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip
- unzip -d android-sdk-linux android-sdk.zip
- echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null
#- echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" …Run Code Online (Sandbox Code Playgroud) android android-build gitlab-ci android-sdk-manager android-studio-3.6
任何人都可以让我知道Jenkins和其他CI之间有什么区别,比如Gitlab-CI,drone.io随GIT发行.在一些研究中,我只能提出Gitlab社区版不允许添加Jenkins,但Gitlab企业版可以.还有其他重大差异吗?
我创建了一个自定义 docker 映像并将其推送到 docker hub,但是当我在 CI/CD 中运行它时,它给了我这个错误。
exec /usr/bin/sh: exec format error
在哪里 :
Dockerfile
FROM ubuntu:20.04
RUN apt-get update
RUN apt-get install -y software-properties-common
RUN apt-get install -y python3-pip
RUN pip3 install robotframework
Run Code Online (Sandbox Code Playgroud)
.gitlab-ci.yml
robot-framework:
image: rethkevin/rf:v1
allow_failure: true
script:
- ls
- pip3 --version
Run Code Online (Sandbox Code Playgroud)
输出
Running with gitlab-runner 15.1.0 (76984217)
on runner zgjy8gPC
Preparing the "docker" executor
Using Docker executor with image rethkevin/rf:v1 ...
Pulling docker image rethkevin/rf:v1 ...
Using docker image sha256:d2db066f04bd0c04f69db1622cd73b2fc2e78a5d95a68445618fe54b87f1d31f for rethkevin/rf:v1 with digest rethkevin/rf@sha256:58a500afcbd75ba477aa3076955967cebf66e2f69d4a5c1cca23d69f6775bf6a …Run Code Online (Sandbox Code Playgroud) 我想scp使用 PRIVATE_KEY 在 GitLab 管道中复制数据。
错误是:
kex_exchange_identification: read: Connection reset by peer
Connection reset by x.x.x.x port 22
lost connection
Run Code Online (Sandbox Code Playgroud)
管道日志:
$ mkdir -p ~/.ssh
$ echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
$ chmod 600 ~/.ssh/id_rsa
$ eval "$(ssh-agent -s)"
Agent pid 22
$ ssh-add ~/.ssh/id_rsa
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
$ ssh-keyscan -H $IP >> ~/.ssh/known_hosts
# x.x.x.x:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.10
# x.x.x.x:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.10
$ scp -rv api.yml root@$IP:/home/services/test/
Executing: program /usr/bin/ssh host x.x.x.x, user root, …Run Code Online (Sandbox Code Playgroud) 我想将GitLab CI与.gitlab-ci.yml文件一起使用,以使用单独的脚本运行不同的阶段.第一阶段生成一个工具,必须在稍后阶段用于执行测试.我已将生成的工具声明为工件.
现在我如何在后期工作中执行该工具?什么是正确的路径,它周围会有什么文件?
例如,第一阶段构建工件/ bin/TestTool/TestTool.exe,该目录包含其他所需文件(DLL和其他).我的.gitlab-ci.yml文件如下所示:
releasebuild:
script:
- chcp 65001
- build.cmd
stage: build
artifacts:
paths:
- artifacts/bin/TestTool/
systemtests:
script:
- chcp 65001
- WHAT TO WRITE HERE?
stage: test
Run Code Online (Sandbox Code Playgroud)
如果相关,则在Windows上运行构建和测试.
我一直在试验没有成功,我正在运行一个在Linux上托管的Gitlab,并试图了解CI功能.
根据Gitlab文档,您只需要创建一个.gitlab-ci.yml文件,即Travis-CI的Gitlab实现.现在从它的外观来看,你可以完成很多工作.gitlab-ci.yml,但很多文档都引用了Ruby和其他语言.关于如何构建Java Maven项目没有任何说法.
如何在Java中构建一个简单的应用程序?我可以使用共享运行器,还是应该使用特定的运行器,在这种情况下,我应该选择哪种或哪种运行器实现:ssh,docker或shell?那么,我应该把.gitlab-ci.yml文件放在文件中至少用Maven构建项目?
如果在GitLab CI上配置了GitLab项目,有没有办法在本地运行构建?
我不想把我的笔记本电脑变成一个构建"跑步者",我只是想利用Docker并.gitlab-ci.yml在本地运行测试(即它都是预配置的).这样做的另一个好处是我确信我在本地和CI上使用相同的环境.
这是一个如何使用Docker在本地运行Travis构建的示例,我正在寻找与GitLab类似的东西.
我正在使用GitLab CI构建一个C#解决方案,并尝试将一些构建工件从一个构建阶段传递到另一个构建阶段.
问题是,工件不是位于单个目录中,而是位于不同的子目录中,但是它们都具有相同的名称bin/或obj/.
我.gitlab-ci.yml看起来如下:
...
stages:
- build
- test
build:
stage: build
script:
CALL %MSBuild% ...
artifacts:
paths:
- /**/bin/
- /**/obj/
expire_in: 6 hrs
test:
stage: test
dependencies:
- build
...
Run Code Online (Sandbox Code Playgroud)
我尝试使用不同的方式捕获工件,例如
**/bin/
**/obj/
Run Code Online (Sandbox Code Playgroud)
(语法无效),或
.*/bin/
.*/obj/
Run Code Online (Sandbox Code Playgroud)
但那个没有找到任何文物,就像/**/bin/并且/**/obj/,给我以下错误:
Uploading artifacts...
WARNING: /**/bin/: no matching files
WARNING: /**/obj/: no matching files
Run Code Online (Sandbox Code Playgroud)
如何指定要扫描工件的子目录模式?或者这甚至可能吗?
简单地使用
artifacts:
untracked: true
Run Code Online (Sandbox Code Playgroud)
不是一个选项,因为一个巨大的未跟踪packages/子目录,由于存档太大导致工件上传失败:
Uploading artifacts...
untracked: found 4513 files
ERROR: Uploading artifacts to …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个gitlab-ci.yml使用多行字符串作为命令的文件.但是,它似乎没有被解析.我都试过了- |,并- >用相同的结果.
stages:
- mystage
Build:
stage: mystage
script:
- |
echo -e "
echo 'hi';
echo 'bye';
"
Run Code Online (Sandbox Code Playgroud)
当它尝试运行时,它只显示echo -e '要运行的脚本,而不是整个多行字符串.这给我带来了问题.
写这样的东西的正确语法是什么?
这是我使用GitLab及其集成CI服务设置的问题.我有一个当前的GitLab 8.1.和一个支持Docker的gitlabci-multi-runner(0.6.2).在扩展了ubuntu:精确图像以包含git和build-essentials(现在名为precise:base)后,我得到了以下.gitlab-ci.yml运行:
image: precise:base
before_script:
- apt-get install --yes cmake libmatio-dev libblas-dev libsqlite3-dev libcurl4-openssl-dev
- apt-get install --yes libarchive-dev liblzma-dev
build:
script:
- mkdir build/
- cd build
- cmake -D CMAKE_BUILD_TYPE=Debug ../
- make
Run Code Online (Sandbox Code Playgroud)
现在我的问题是如何在不同的图像上包含更多的工作?因为我需要检查代码是否在不同的操作系统(如Ubuntu Precise,Ubuntu Trusty,CentOS 6,CentOS 7)上编译(以及稍后工作).为了减少工作量,我认为最好的方法是提供不同的Docker镜像作为基础.
现在问题是.gitlab-ci.yml看起来如何支持这个?