Jenkins 操作文档

357 阅读5分钟

Jenkins 操作文档

一、前期约定

Jenkins作为一个devops成熟工具,丰富插件支持完成各种复杂等业务场景

此文档以Java web项目为主,集成Jdk、Maven、Git、docker、harbor、k8s等为例方式实现

二、流程图

www.processon.com/view/link/5…

三、gitlab创建项目

1、 创建Group

  1. gitlab菜单栏选择Group点击New group

  2. 填写New Group基本信息,点击Create group

2、 创建项目

  1. 点击New

  2. 填写New project基本信息

3、 初始化GIT仓库

  1. 项目创建成功以后,需要依赖GIT仓库

  2. 初始化git仓库分两种,第一种直接在gitlab添加文件初始化,第二种git命令

  3. gitlab添加文件初始化点击New file,提交文件即可

  4. git命令方式初始化仓库

4、 clone项目

  1. git项目有多种下载方式,链接方式、压缩包方式

  2. 链接下载方式,HTTP、SSH链接,其中SSH方式需要添加私钥

  3. SSH私钥配置

  4. 压缩包下载方式,按照压缩包需要手动初始化本地仓库与gitlab建立绑定

四、jenkins配置

1、 Jenkins全局变量

a. 前提需要预先安装Jdk1.8、Maven3.5、Git2.20.1且配置环境变量

b. 配置Manage Jenkins需要具有管理员权限

c. 首页进入全局变量设置ManageJenkins -->Global Tool Configuration,

  1. 设置Jenkins依赖等Jdk

  2. 设置Jenkins依赖等Maven

  3. 设置Jenkins依赖等Git

  4. 配置全局邮箱

a. 配置全局系统邮箱Manager jenkins->Confingure System->Extended email Notification

b. 配置项目邮箱

i. 进入项目列表item list->configure->Editable Email Notification Publisher->Advanced Setting->Triggers->Advanced

2、 注册用户

  1. 注册如图所示

  2. 创建成功,登录账户默认没有权限,如图所示

  3. 管理员admin账户登录,新创建的用户在People

3、 创建指定角色

  1. 管理员admin登录进入Manager Jenkins --> Manager and Assign Roles

  2. 点击Manage Roles

  3. 创建全局角色、项目角色

备注:配置后点击save按钮

4、 分配指定角色

  1. 进入Manager and Assign Roles 点击Assign Roles分配创建好的角色

  2. 管理员amdin为新创建账户分配指定角色

备注:分配成功后,点击save按钮

五、创建Jenkins项目

1、 New Item

  1. 点击New Item,填写基本信息,点击OK

  2. 配置General

  3. Source Code Management

  4. Build Triggers

a. 选择此项,点击下拉菜单中Secret token -->general

  1. Build

a. 此处选择maven

b. 配置maven

i. 跳过单元测试打包

ii. findbugs静态分析工具

iii. 代码审查

iv. 集成checkstyle规范

  1. post-build Actions

a. 代码审查报告

备注:此处脚本文件是构建打包成功完成后,执行镜像操作,脚本附下

2、 持续docker生成镜像脚本文件

Dockerfile:

if sudo docker ps -a|grep -i huan-gitlab-citwo-docker;then

sudo docker rm -f huan-gitlab-citwo-docker

docker rmi -f cicd_demo2:1.0

fi

sleep 1

cp /home/yuanbu/work2/*.jar /home/yuanbu/project2/cicd_demo2

cd /home/yuanbu/project2/cicd_demo2

./buildimage.sh

./run.sh

六、webhook绑定Jenkins项目与Gitlab项目

1、 配置gitlab绑定jenkins的webhook

七、项目持续化集成

1、 gitlab修改代码执行git push命令触发

2、 jenkins项目列表

3、 进入jenkins项目每次git push创建一个任务

4、 jenkins构建任务控制台

备注:如果有错误信息会在控制台日志输出

八、Docker生成镜像

1、 Dockerfile文件

# 版本信息

FROM anapsix/alpine-java:latest

# 维护者信息

MAINTAINER cds "huan@huan.tv"

# 拷贝jar包文件至指定目录

ADD huan-gitlab-ci-0.0.1-SNAPSHOT.jar /usr/local/jar/

# 运行指定目录下的jar包

RUN mv /usr/local/jar/huan-gitlab-ci-0.0.1-SNAPSHOT.jar /usr/local/jar/app.jar

# 开启内部服务端口

EXPOSE 8080

# 启动项目

CMD ["java","-jar","/usr/local/jar/app.jar"]

备注:Docker通过Dockerfile文件生成镜像

2、 docker镜像打tag并且推送harbor管理镜像

docker 镜像打tag标签

sudo docker tag huan-cicd-alpine-docker:latest 49.232.112.122:80/ci-cd/huan-cicd-alpine-docker:latest

推送到Harbor管理后台

sudo docker push 49.232.112.122:80/ci-cd/huan-cicd-alpine-docker:latest

拉取docker镜像命令

sudo docker pull 49.232.112.122:80/ci-cd/huan-cicd-alpine-docker:latest

九、Harbor管理镜像

1、 Harbor镜像管理

https://188.131.163.47/harbor/sign-in?redirect_url=%2Fharbor%2Fprojects

备注:管理镜像

十、Kubenetest

1、 配置部署

脚本文件:deployment.yaml

此文件包含项目部署的基本信息

使用此文档需注意镜像路径及版本是否正确

对项目名称命名不允许使用“_”,可以使用“-”命名

 

apiVersion: extensions/v1beta1

kind: Deployment # 绑定部署yml

metadata:

  name: test-jenkins-kubernates #元数据名称,与服务、访问权需要关联此名称

  namespace: devops # 命令空间与k8s创建保持一致

  labels:

    app: test-jenkins-kubernetes

spec:

  replicas: 1 #副本即部署服务数量

  selector:

    matchLabels:

      app:
test-jenkins-kubernetes

  template:

    metadata:

      labels:

        app:
test-jenkins-kubernetes

    spec:

      containers:

      - name:
test-jenkins-kubernetes

        image: harbor.huan.tv/devops/cicd-alpine-habor:1.0
# 镜像文件名称

        ports:

        - containerPort:
8080

        resources:

          limits:

            cpu:
500m

           
memory: 500Mi

          requests:

            cpu:
100m

           
memory: 100Mi

        env:

        - name: TZ

          value:
Asia/Shanghai

        - name: JAVA_OPTS

          value:
"-Xmx500m"

        volumeMounts:

        - name: tz-config

          mountPath:
/etc/localtime

      imagePullSecrets:

      - name: harbor-secret

      volumes:

      - name: tz-config

        hostPath:

          path:
/usr/share/zoneinfo/Asia/Shanghai

2、 配置服务

脚本文件:service.yaml

此文件包含项目部署后,需要设置的服务信息

使用此文档事项:

1.metadata下name命名规则:项目名称+“-service”

2.selector下app名称要跟部署文件deployment.yaml中metadata下name的名称一致。

 

apiVersion: v1

kind: Service

metadata:

  name: test-jenkins-service

  namespace: devops

  labels:

    svc: test-jenkins

spec:

  selector:

    app: test-jenkins

  ports:

  - port: 8080

 
  targetPort: 8080

3、 配置访问权

脚本文件:ingress.yaml

此文件包含项目的代理服务信息

使用此文档需注意:

1.metadata下name命名规则:项目名称+“-ingress”

2.serviceName的name要与service.yaml中metadata下name一致。

 

 

apiVersion: extensions/v1beta1

kind: Ingress

metadata:

  annotations:

      nginx.ingress.kubernetes.io/rewrite-target:
/

  name: test-jenkins-kubernetes-ingress

  namespace: devops

spec:

  rules:

  - http:

      paths:

      - path: /test-jenkins

        backend:

          serviceName:
test-jenkins-service

          servicePort:
8080

4、 访问地址

cloud.huan.tv/ci-cd/helo

备注:具体访问k8s配置参阅k8s安装使用文档