安装
Docker方式
docker run -d --restart=always \
--hostname jenkins \
-u 0 \
-p 86:8080 \
--name jenkins \
-v /opt/shell:/opt/shell \
-v /usr/share/java:/usr/local/java \
-v /usr/local/tomcat:/usr/local/tomcat \
-v /data/android_env/android-sdk-linux:/data/android_env/android-sdk-linux \
-v /data/jenkins/home:/var/jenkins_home \
-v /data/jenkins/jobs:/var/jenkins_home/jobs \
-v /temp/jenkins/logs:/var/jenkins_home/logs \
-v /temp/jenkins/workspace:/var/jenkins_home/workspace \
-v /temp/jenkins/tools:/var/jenkins_home/tools \
-v /temp/jenkins/.gradle:/var/jenkins_home/.gradle \
-v /temp/jenkins/.sonar:/var/jenkins_home/.sonar \
-v /temp/jenkins/.m2:/var/jenkins_home/.m2 \
-v /temp/jenkins/.android:/var/jenkins_home/.android \
-v /temp/jenkins/.jenkins:/var/jenkins_home/.jenkins \
-v /temp/jenkins/.cache:/var/jenkins_home/.cache \
-v /temp/jenkins/.groovy:/var/jenkins_home/.groovy \
-v /temp/jenkins/.docker:/var/jenkins_home/.docker \
jenkins/jenkins
-u 0: # 防止文件访问权限异常
通过运行
docker logs -f jenkins
找到password后面的字符串获得密码
使用
jenkins中docker的配置(docker-build-step插件方式)
由于jenkins运行在docker,默认没有docker服务,只能借助其他slave机器上的docker服务,比如jenkins运行的主机(host)上,在docker运行的slave主机上按《Docker 安装、使用》配置tcp:6732端口,
jenkins安装docker-build-step插件,安装完后在jenkins–》系统管理–》系统配置–》“Docker Builder”区,设置Docker URL为tcp://slave.domain.or.ip:6732。测试通过即可。
在jenkins的非pipeline的job中,“增加构建步骤”选择“Execute Docker Command”,即可选择各种docker命令。
jenkin把修改的代码push到原始gitlab
安装git plugin,配置如下,保证两个图中的1一直
+refs/heads/develop:refs/remotes/origin/develop
jenkin运行脚本中安全使用用户名密码
参考Injecting Secrets into Jenkins Build Jobs
安装Credentials Binding Plugin
在job的setting里的构建环境里
然后在Execute Command里命令行里直接使用
G
I
T
S
E
C
R
I
T
即
可
,
如
g
i
t
c
l
o
n
e
h
t
t
p
:
/
/
GIT_SECRIT即可,如 git clone http://
GITSECRIT即可,如gitclonehttp://GIT_SECRIT:192.168.0.12/repo.git
jenkins中部署jar到nexus仓库(插件方式)
- 配置maven
修改$JENKINS_HOME/tools/hudson.tasks.Maven_MavenInstallation/maven_3.3.9/conf/settings.xml,此处maven_3.3.9为Jenkins–》系统管理–》Global Tool Configuration–》Maven Install中的版本
<servers>
<server>
<id>nexusRepo</id>
<username>repouser</username>
<password>repopwd</password>
</server>
<!-- Another sample, using keys to authenticate.
<server>
<id>siteServer</id>
<privateKey>/path/to/private/key</privateKey>
<passphrase>optional; leave empty if not used.</passphrase>
</server>
-->
</servers>
- 配置job
保证ID和前面settings.xml的server id一致。
待解决问题
- 如何像命令行一样,在docker的参数中使用脚本呢?
- 如何使shell command中的git add时gitignore生效
参考:
3. 自动push代码
错误解决:
[Docker] ERROR: Failed to exec start:Connect to xxx.xxx.xxx.xxx:6732 [/xxx.xxx.xxx.xxx] failed: Connection refused (Connection refused)
[Docker] ERROR: failed to push image docker.xxx.xxx:9082/cloud/service/user:prod
vim /etc/default/docker
DOCKER_OPTS="-H unix:///var/run/docker.sock -H tcp://0.0.0.0:6732"