在Docker容器中安装gerrit插件

时间:2019-11-27 21:13:59

标签: docker gerrit

运行gerritcodereview/gerrit Docker容器时。 Gerrit已安装在容器中的/var/gerrit目录中。但是,当尝试通过docker cp插件.jar文件(从https://gerrit-ci.gerritforge.com/job/plugin-its-jira-bazel-stable-2.16/下载到/var/gerrit/plugins目录)安装插件时,插件未显示在已安装插件的列表中。尽管我重新启动了容器。

我用以下方法跑了吉里特语:

docker run -ti -p 8080:8080 -p 29418:29418 gerritcodereview/gerrit

可以通过以下方式访问Gerrit: http://localhost:8080/admin/plugins

我在插件管理器中也有一个插件列表,但是不知道如何在列表中添加更多插件,因此尝试在[httpd]中使用gerrit-ci.gerritforge.com url。 http://localhost:8080/plugins/plugin-manager/static/index.html

我的gerrit.config文件如下:

[gerrit]
        basePath = git
        serverId = 62b710a2-3947-4e96-a196-6b3fb1f6bc2c
        canonicalWebUrl = http://10033a3fe5b7
[database]
        type = h2
        database = db/ReviewDB
[index]
        type = LUCENE
[auth]
        type = DEVELOPMENT_BECOME_ANY_ACCOUNT
[sendemail]
        smtpServer = localhost
[sshd]
        listenAddress = *:29418
[httpd]
        listenUrl = http://*:8080/
        filterClass = com.googlesource.gerrit.plugins.ootb.FirstTimeRedirect
        firstTimeRedirectUrl = /login/%23%2F?account_id=1000000
[cache]
        directory = cache
[plugins]
        allowRemoteAdmin = true
[container]
        javaOptions = "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"
        javaOptions = "-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance"
        user = gerrit
        javaHome = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre
        javaOptions = -Djava.security.egd=file:/dev/./urandom
[receive]
        enableSignedPush = false
[noteDb "changes"]
        autoMigrate = true

2 个答案:

答案 0 :(得分:0)

我非常确定Gerrit可以从/var/gerrit运行,即使是您的版本也是如此,因为这是我以前使用的版本。

为什么不将docker-compose与自定义Dockerfile一起使用。这样,您可以轻松地重新创建映像,而无需担心升级版本后会再次添加插件的情况。

我建议您使用这些脚本,并将其用于测试。

这是我先前的2.16安装的Dockerfile的样子:

FROM gerritcodereview/gerrit:2.16.8
# Add custom plugins that are not downloaded from the web
COPY ./plugins/* /var/gerrit/plugins/
# Add logo
COPY ./static/* /var/gerrit/static/
ADD https://gerrit-ci.gerritforge.com/view/Plugins-stable-2.16/job/plugin-avatars-gravatar-bazel-master-stable-2.16/lastSuccessfulBuild/artifact/bazel-genfiles/plugins/avatars-gravatar/avatars-gravatar.jar /var/gerrit/plugins/
USER root
# Fix any permissions
RUN chown -R gerrit:gerrit /var/gerrit
USER gerrit
ENV CANONICAL_WEB_URL=https://gerrit.mycompoany.net/r/

在docker-compose.yml下面

version: '3.4'
services:
  gerrit:
    build: .
    ports:
      - "29418:29418"
      - "8080:8080"
    restart: unless-stopped
    volumes:
     - /external/gerrit2.16/etc:/var/gerrit/etc
     - /external/gerrit2.16/git:/var/gerrit/git
     - /external/gerrit2.16/index:/var/gerrit/index
     - /external/gerrit2.16/cache:/var/gerrit/cache
     - /external/gerrit2.16/logs:/var/gerrit/logs
     - /external/gerrit2.16/.ssh:/var/gerrit/.ssh
    #    entrypoint: java -jar /var/gerrit/bin/gerrit.war init --install-all-plugins -d /var/gerrit
    #    entrypoint: java -jar /var/gerrit/bin/gerrit.war reindex -d /var/gerrit

答案 1 :(得分:0)

最终找到了一种适用于我的用例的方法。

  1. 复制公共密钥的内容并将其插入ssh Web浏览器配置文件设置:my_gerrit_admin_username
  2. 从容器外部的终端运行:ssh -p 29418 my_gerrit_admin_username@localhost gerrit plugin install -n its-base.jar https://gerrit-ci.gerritforge.com/job/plugin-its-base-bazel-stable-2.16/lastSuccessfulBuild/artifact/bazel-bin/plugins/its-base/its-base.jar
  3. 检查网络浏览器中的插件是否已安装。