上周,我想与Jenkins一起使用“管道即代码”尝试新事物。 尝试新事物的最佳方法是将其作为Docker容器运行。 这样,我可以保持MacBook整洁,并且不会弄乱我正在研究的现有内容(另请参阅本文,了解Docker可为开发人员提供什么)。 使用Docker的另一个重要优势是,已经有完整的 Docker 堆栈可用于设置必要的工具。 但是,由于某些不清楚的原因,该堆栈在我的MacBook上不起作用(请参阅本期 ),因此我借此机会利用自己选择的一些Docker构建了自己的堆栈:-)。
我的堆栈中的工具是:
- Nexus (作为Maven存储库)
- Gitlab (用于托管我的Java项目的源代码)
- 詹金斯 (当然要使用管道作为代码)
在这篇文章中,我描述了如何设置每个容器并使它们作为一个堆栈一起工作。 我从最简单的一个开始:
- 关系
实际上,我更喜欢Artifactory,因为我更习惯使用它。 但是正如您在这里可以读到的那样,我也很难将Artifactory设置为Docker容器并运行。 Nexus与这有何不同。 只需获得一个公开可用的Docker映像 ,设置一些端口即可。 这是我在“ docker-compose.yml”文件中使用它的方式:
...
services:
...
nexus:
image: clearent/nexus
volumes:
- /opt/data/nexus:/nexus-data
ports:
- 8081:8081
...
- 亚搏体育app
设置它有点困难。 我最终使用了以下Docker容器:
- 雷迪斯
- PostgreSQL的
- 亚搏体育app
所有这些容器均基于Sameer Naik的工作。
- Redis:最新
这个使用Ubuntu映像来自同一家伙,并在其上安装Redis。 有关更多详细信息,请参见此图像的来源 。 图像本身可以在这里找到。
- PostgreSQL:9.6-1
也基于Ubuntu的图像上,其源(和详细描述),可以发现在这里和泊坞图像此处 。
- gitlab:8.15.4
最后是Gitlab映像,它也基于Sameer Naik的源代码( 此处 )和Docker映像( 此处 )。
要将这些图像组合到一个可以正常工作的Gitlab,我使用以下docker-compose代码段:
...
services:
...
redis:
image: sameersbn/redis:latest
volumes:
- /opt/data/gitlab/redis:/var/lib/redis
postgresql:
image: sameersbn/postgresql:9.6-1
environment:
- DEBUG=true
- DB_USER=gitlab
- DB_PASS=password
- DB_NAME=gitlabhq_production
- DB_EXTENSION=pg_trgm
- PG_TRUST_LOCALNET=true
volumes:
- /opt/data/gitlab/postgresql:/var/lib/postgresql
ports:
- "15432:5432"
gitlab:
image: sameersbn/gitlab:8.15.4
depends_on:
- redis
- postgresql
ports:
- "8082:80"
- "8022:22"
environment:
- DEBUG=true
- TZ=Europe/Berlin
- GITLAB_TIMEZONE=Berlin
- GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
- GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string
- GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string
- GITLAB_HOST=localhost
- GITLAB_PORT=8082
- GITLAB_SSH_PORT=8022
- DB_ADAPTER=postgresql
- DB_HOST=postgresql
- DB_PORT=5432
- DB_USER=gitlab
- DB_PASS=password
- DB_NAME=gitlabhq_production
- REDIS_HOST=redis
- REDIS_PORT=6379
...
volumes:
- /opt/data/gitlab/gitlab:/home/git/data
...
在这里查看我的Gitlab存储库以获取完整的docker-compose文件。
- 詹金斯
最后是詹金斯本身。 我从“官方”詹金斯图像开始,但是那对我来说是一些选择,所以我创建了自己的图像,可以在这里找到。
我所做的更改是在操作系统中添加了“ httping”软件包,并且默认情况下已安装了GitLab插件 ,因为我在设置中需要它。 Dockerfile看起来像这样:
FROM jenkins:2.32.1
USER root
RUN apt-get update && apt-get install -y httping
COPY plugins.txt /usr/share/jenkins/plugins.txt
RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt
现在,我已经完成了堆栈的所有组件。 完整的Docker Compose文件可在此处找到。 您可能会注意到,我在主机上使用一些目录来存储数据。 您可以在这里阅读更多有关它的信息 。 要在Mac OS上的Docker中进行设置,请转到Docker偏好设置和“文件共享”窗格,然后添加要在其中存储数据的目录:
这样,我可以轻松地处理堆栈,删除堆栈并创建一个新堆栈,而不会丢失我已经添加的配置和设置。
要启动堆栈,我只需执行“ docker-compose up”,然后启动不同的Docker容器:
现在,我可以通过浏览器输入詹金斯:
并开始使用它。
在另一篇文章中,我将展示如何进一步配置Jenkins,以及一个示例,该示例如何通过使用“管道作为代码”使用此堆栈来设置Spring Boot项目。
翻译自: https://www.javacodegeeks.com/2017/01/set-continuous-delivery-stack.html