持续集成_20181118

war包直接启动jenkins

java -jar jenkins.war --httpPort=8081
访问:http://:8081/

部署到tomcat中

1.准备一台tomcat 服务器
2. 将 jenkins.war 复制到 $tomcat_home/webapps/ 下  删除原有的 $tomcat_home/webapps/ROOT目录
3. 将 jenkins.war 重命名为 ROOT.war
4. 启动tomcat
5. jenkins服务地址 http://<tomcat_ip>:<tomcat_port>/

docker启动

1.需要找一台装好了docker的Linux机器
2. 拉取 jenkins 的docker镜像:docker pull jenkins
3. 在宿主机上创建一个目录用于存储 jenkins 运行数据,比如 /home/jenkins
4. 启动镜像:docker run --name myjenkins -p 8080:8080 -p 50000:50000 jenkins
5. jenkins服务地址 http://<Linux_IP>:8080/

解决老版本jenkins下载插件问题:

创建新版Jenkins的Docker images

Dockerfile

FROM jenkins:latest
MAINTAINER tester "tester@hogwarts.com"

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
RUN rm -f /usr/share/jenkins/jenkins.war
ADD jenkins.war /usr/share/jenkins/

EXPOSE 8080
EXPOSE 50000

ENV JAVA_OPTS=-Duser.timezone=GMT+08

CMD ["jenkins.sh"]

运行:

docker build -t jenkinsnewversion .

ssh-key 证书配置

  • 1.生成 ssh keys
ssh-keygen -t rsa -C "youremail@example.com"
  • 2.github添加SSH keys
    将id_rsa.pub里面的内容复制下来,在github上的settings里面找到SSH and GPG keys,SSH keys 点击New SSH key粘贴即可,title唯一随便填。

  • 3.测试
    运行

ssh git@github.com

出现
Hi XXXXX! You’ve successfully authenticated, but GitHub does not provide shell access.
说明成功!

  • 登录docker 里面的命令:
docker exec -it <docker container name or ID> bash
  • 验证用户名密码ssh 登录 :
ssh username@<ip or hostname>

删除镜像没有权限;

  • 解决方案:

    Dockerfile 构建的时候 没有删除权限的问题

总方法:曲线救国法

  1. 首先用默认的jenkins docker镜像启动docker container 实例,启动的时候加入-u 0 保证 docker 实例里面是root用户

    启动命令: docker run -d --name jenkinsRoot -u 0 jenkins

  2. 将 jenkinsRoot docker container实例保存成一个新的docker镜像,命名为 jenkinsroot

    保存命令: docker commit jenkinsRoot jenkinsroot

  3. 再基于 jenkinsroot 来构建新的镜像,权限问题就不会困扰了,Dockerfile如下

FROM jenkinsroot
MAINTAINER tester "tester@hogwarts.com"

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
RUN rm -f /usr/share/jenkins/jenkins.war
ADD jenkins.war /usr/share/jenkins/

EXPOSE 8080
EXPOSE 50000

ENV JAVA_OPTS=-Duser.timezone=GMT+08

CMD ["jenkins.sh"]