在docker容器中安装gerrit插件

在docker容器中安装gerrit插件,docker,gerrit,Docker,Gerrit,运行gerritcodereview/gerritdocker容器时。Gerrit安装在容器中的directoy中。但是,当尝试通过从下载到/var/gerrit/plugins目录的plugin.jar文件安装插件时,插件不会显示在已安装插件的列表中。即使我重新启动了容器 我与gerrit合作: docker run -ti -p 8080:8080 -p 29418:29418 gerritcodereview/gerrit Gerrit可通过以下途径访问: 我在插件管理器中也有一个插件

运行
gerritcodereview/gerrit
docker容器时。Gerrit安装在容器中的directoy中。但是,当尝试通过从下载到
/var/gerrit/plugins
目录的plugin.jar文件安装插件时,插件不会显示在已安装插件的列表中。即使我重新启动了容器

我与gerrit合作:

docker run -ti -p 8080:8080 -p 29418:29418 gerritcodereview/gerrit
Gerrit可通过以下途径访问:

我在插件管理器中也有一个插件列表,但不知道如何向列表中添加更多插件,我尝试在[httpd]中使用gerrit-ci.gerritforge.com url

我的
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

我非常确定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

终于在我的用例中找到了一种适合我的方法

  • 复制公钥内容并插入ssh web浏览器配置文件设置:my_gerrit_admin_username
  • 向ssh代理添加密钥:
  • 从集装箱外的终端运行:
  • 检查web浏览器是否在插件之间安装了插件

  • 关于gerrit目录,你是对的。当前gerrit有一些重要的回购协议。不确定如果使用新映像升级,是否会丢失数据。我以前没做过。
    eval `ssh-agent`
    ssh-add .ssh/id_rsa
    
    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