标签: gitlab-ci

Android 命令行工具 sdkmanager 始终显示:警告:无法创建设置

我使用 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

187
推荐指数
12
解决办法
11万
查看次数

Gitlab CI vs Jenkins

任何人都可以让我知道Jenkins和其他CI之间有什么区别,比如Gitlab-CI,drone.io随GIT发行.在一些研究中,我只能提出Gitlab社区版不允许添加Jenkins,但Gitlab企业版可以.还有其他重大差异吗?

git jenkins gitlab gitlab-ci drone.io

115
推荐指数
4
解决办法
7万
查看次数

Docker:exec /usr/bin/sh:exec 格式错误

我创建了一个自定义 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)

gitlab docker gitlab-ci dockerhub gitlab-ci-runner

109
推荐指数
5
解决办法
19万
查看次数

如何修复“kex_exchange_identification:读取:对等方重置连接”?

我想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)

ssh pipeline scp sshd gitlab-ci

95
推荐指数
3
解决办法
36万
查看次数

如何将工件传递到另一个阶段?

我想将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上运行构建和测试.

gitlab gitlab-ci

78
推荐指数
4
解决办法
5万
查看次数

如何使用Gitlab CI构建Java Maven项目?

我一直在试验没有成功,我正在运行一个在Linux上托管的Gitlab,并试图了解CI功能.

根据Gitlab文档,您只需要创建一个.gitlab-ci.yml文件,即Travis-CI的Gitlab实现.现在从它的外观来看,你可以完成很多工作.gitlab-ci.yml,但很多文档都引用了Ruby和其他语言.关于如何构建Java Maven项目没有任何说法.

如何在Java中构建一个简单的应用程序?我可以使用共享运行器,还是应该使用特定的运行器,在这种情况下,我应该选择哪种或哪种运行器实现:ssh,docker或shell?那么,我应该把.gitlab-ci.yml文件放在文件中至少用Maven构建项目?

java spring maven gitlab-ci gitlab-omnibus

61
推荐指数
5
解决办法
6万
查看次数

使用GitLab CI在本地运行测试?

如果在GitLab CI上配置了GitLab项目,有没有办法在本地运行构建?

我不想把我的笔记本电脑变成一个构建"跑步者",我只是想利用Docker并.gitlab-ci.yml在本地运行测试(即它都是预配置的).这样做的另一个好处是我确信我在本地和CI上使用相同的环境.

这是一个如何使用Docker在本地运行Travis构建的示例,我正在寻找与GitLab类似的东西.

gitlab-ci

58
推荐指数
6
解决办法
4万
查看次数

如何在.gitlab-ci.yml中指定通配符工件子目录?

我正在使用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)

yaml gitlab-ci gitlab-8

56
推荐指数
1
解决办法
2万
查看次数

GitLab CI的多行YAML字符串(.gitlab-ci.yml)

我正在尝试编写一个gitlab-ci.yml使用多行字符串作为命令的文件.但是,它似乎没有被解析.我都试过了- |,并- >用相同的结果.

stages:
  - mystage

Build:
  stage: mystage
  script:
    - |
        echo -e "
            echo 'hi';
            echo 'bye';
        "
Run Code Online (Sandbox Code Playgroud)

当它尝试运行时,它只显示echo -e '要运行的脚本,而不是整个多行字符串.这给我带来了问题.

写这样的东西的正确语法是什么?

yaml gitlab-ci gitlab-ci-runner

56
推荐指数
5
解决办法
4万
查看次数

.gitlab-ci.yml中的多个Docker镜像

这是我使用GitLab及其集成CI服务设置的问题.我有一个当前的GitLab 8.1.和一个支持Docker的gitlabci-multi-runner(0.6.2).在扩展了ubuntu:精确图像以包含gitbuild-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看起来如何支持这个?

git continuous-integration docker gitlab-ci

53
推荐指数
2
解决办法
3万
查看次数