Jenkins是持续开发部署得软件。,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。它是CICD(持续集成与持续交付)的具体实现。

包括:打包,发布,部署流程。

Jenkins有很多插件,比如git,svn,maven,pipeline等插件。

我主要创建了maven项目,所以只需要安装git和maven安装要注意下面几点: 

  • maven一定要安装在jenkins服务器上。
  • maven安装之前要先安装jdk。
  • 建任务前,需要有git环境,并配置好用户名密码。

1.创建docker jenkins容器

新建一个dockerfile文件

from java_ubuntu

user root

run pwd

run curl -fsSL "https://pkg.jenkins.io/debian-stable/jenkins.io.key" | tee  /usr/share/keyrings/jenkins-keyring.asc > /dev/null

run echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc]  https://pkg.jenkins.io/debian-stable binary/ | tee  /etc/apt/sources.list.d/jenkins.list > /dev/null

run apt-get update

run apt-get install fontconfig openjdk-11-jre

run apt-get install jenkins

ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
Env JENKINS_HOME=/var/jenkins_home

WORKDIR /

EXPOSE 8080 50000

cmd jenkins

然后执行镜像构建命令

docker build -t docker_jenkins ./ -f dockerfile-jenkins

2.启动docker jenkins容器

使用docker-compose编排容器,docker-compose -f .\docker-jekins.yml up -d

version: "3.0"

volumes:
  jenkins_home:   #自动创建的是projectname_volumename  (dockerjekins_jenkins_home)
  maven_home: #自动创建的是projectname_volumename  (dockerjekins_maven_home)
  
networks:
  mynetwork:     
    external: true

services: 
    image: docker_jenkins
    container_name: docker_jenkins
    ports:
      - 10240:8080
      - 10241:50000
    volumes:
      - jenkins_home:/var/jenkins_home
      - maven_home:/usr/local/maven
    environment:
      - JAVA_OPTS=-Duser.timezone=Asia/Shanghai
    networks:
     - mynetwork

3.访问jenkins

3.1 登录jenkins

浏览器输入http://localhost:10240/,密码可以在容器日志中查看,也可以进入容器在/var/jenkins_home/secrets/initialAdminPassword文件中查看。

 登录完成之后可以选择安装推荐插件或者选择插件,这里我就不选择安装了,直接跳过。

可以在Manage Jenkins中设置用户,安装插件。

因为没安装任何插件所以创建不了其他的任务。

3.2 jenkins 安装git和maven插件

在Manage Jenkins-> Manage Plugin中安装git和maven

git插件:

maven插件(Maven IntegrationVersion): 

 安装完成之后就可以在New Item中看见Maven的任务

                这时候创建的maven的项目, 并不能使用maven打包,编译等操作需要在jenkins服务器(容器)上安装gt和maven。

4.jenkins服务器上安装git和maven

这里安装的git和maven程序,不是上一步中的jenkins的git插件和maven插件

使用docker exec -it docker_jenkins /bin/bash进入到容器上

#安装git和maven
apt-get install -y git maven

#git的安装目录在/usr/lib/git-core
#maven的安装目录在/usr/share/maven

配置git账户和密码,配置完成之后可以在jenkins服务器(容器)上验证是否可以正常pull代码

1.查看本地配置
git config --list
2.配置用户名
git config --global user.name 用户名
3.配置邮箱
git config --global user.email 邮箱
4.配置密码
git config --global credential.helper store
5.打开任意一个项目,执行git pull 或者git push操作
6.按照提示输入账户密码,以后就不需要再输入了。

配置maven下的setting.xml,将源改成alibaba的

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    
     <localRepository>/usr/share/maven/mavenLibTemp</localRepository>  
    <pluginGroups>
    </pluginGroups>

    <proxies>
    </proxies>

    <servers>
    </servers>
	
	<!-- 阿里云仓库,也可以在pom中设置仓库地址 -->
    <mirrors>
        <mirror>
            <id>aliyun</id>
            <name>aliyun Maven</name>
            <mirrorOf>*</mirrorOf>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        </mirror>
    </mirrors>
    
    <profiles>
    </profiles>
    
    <activeProfiles>
    </activeProfiles>
</settings>

 5.jenkins中设置全局工具配置

Manage Jenkins->Global Tool Configuration

这里的路径都是jenkins服务器(容器)的实际路径

5.1 Maven (setting.xml文件)

5.3 JDK

 5.3 Git

5.4 Maven 

 6.“系统配置”,增加环境变量

Manage Jenkins->Configure System

 7.Jenkins中新建maven项目

在新建的testmaven对新建的项目进行配置

1)Source Code Management (源码配置)

 2)Build (编译)

  7.1 在jenkins上运行编译

在testmaven中启动编译

在Console Output可以看到运行日志并且依赖源也是配置的alibaba

最终可以看到编译成功的信息

 7.2 在jenkins上编译之后部署

上边步骤8只是编译了jar包,如果需要部署,则需要在jenkins页面上安装ssh插件.

1. 插件安装完成之后可以执行一下发布操作.

 2.docker_jenkins安装Docker 

先docker_jenkins容器,然后执行docker 安装

 apt-get -o Acquire::Check-Valid-Until=false update

 apt-get install -y ca-certificates curl gnupg lsb-release

 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null

apt-get install -y  --allow-unauthenticated docker-ce docker-ce-cli containerd.io

查看Docker # 发现只有 Docker Engine docker version 

docker version

 然后提交保存镜像

# 保存当前镜像
docker commit -a "bpf" -m "add docker and tools" ub1 dockerubuntu
# 运行新的容器
docker run -it --name ub2 --hostname docker1 \
-v /var/run/docker.sock:/var/run/docker.sock \
--network mynet dockerubuntu

 3.maven build之后执行docker build操作

#!/bin/bash
echo "----pwd---"
pwd
echo "----docker build---"
docker build -t cloud-producter-two ./client/producter/producter-two/target -f ./client/producter/producter-two/dockerfile
A=`docker images --format "{{.Repository}}:{{.ID}}" | grep "none"  |awk  -F ':' '{print $2}'|wc -l`
if [ $A -ne 0 ];then
   docker rmi $(docker images --format "{{.Repository}}:{{.ID}}" | grep "none"  |awk  -F ':' '{print $2}')
fi

 8.Jenkins上执行Pipeline

  1. Pipeline脚本是由Groovy语言实现,它支持支持两种语法
  2. Declarative 声明式(在Pipeline plugin 2.5中引入)
  3. Scripted Pipeline 脚本式

首先安装pipeline插件,创建任务时就可以创建pipeline的任务了

pieline语法类似:

pipeline {
    agent any

    tools {
        // Install the Maven version configured as "M3" and add it to the path.
        maven "M3"
    }

    stages {
        stage('Build') {
            steps {
                // Get some code from a GitHub repository
                git 'https://github.com/jglick/simple-maven-project-with-tests.git'

                // Run Maven on a Unix agent.
                sh "mvn -Dmaven.test.failure.ignore=true clean package"

                // To run Maven on a Windows agent, use
                // bat "mvn -Dmaven.test.failure.ignore=true clean package"
            }

            post {
                // If Maven was able to run the tests, even if some of the test
                // failed, record the test results and archive the jar file.
                success {
                    junit '**/target/surefire-reports/TEST-*.xml'
                    archiveArtifacts 'target/*.jar'
                }
            }
        }
    }
}

总结:

jenkins实际就是页面插件调用后端(服务器上)工具的命令组合。

参考:

jenkins安装及部署 - 软件老王 - 博客园

docker安装jenkins_hzp666的博客-CSDN博客_docker安装jenkins

jenkins中maven的安装及配置,如何在jenkins中创建maven任务。_大敌的博客-CSDN博客_jenkins maven

https://www.cnblogs.com/bpf-1024/p/15489354.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐