centos7 安装Jenkins

centos7 安装Jenkins

rpm安装方式:

清华源地址
https://mirrors.tuna.tsinghua.edu.cn/jenkins/opensuse/

1.通过 yum install Jenkins的rpm包名 命令进行安装

2.自动安装完成之后:
/usr/lib/jenkins/jenkins.war WAR包
/etc/sysconfig/jenkins 配置文件
/var/lib/jenkins/ 默认的JENKINS_HOME目录
/var/log/jenkins/jenkins.log Jenkins日志文件

3.修改配置文件,添加JDK路径
vim /etc/init.d/jenkins " 编辑Jenkins配置文件,添加jdk的Java路径 后缀加 /bin/java

4.启动jenkins
systemctl start jenkins

5.修改jenkins的插件源地址
/var/lib/jenkins/hudson.model.UpdateCenter.xml 为以下地址
http://mirror.xmission.com/jenkins/updates/update-center.json

6.修改插件下载地址
/var/lib/jenkins/updates/default.json

  1. 把 “ www.google.com ” 改成 “ http://www.baidu.com/ ”
  2. 全局搜索 “ updates.jenkins.io/download ” 替换成 “mirrors.tuna.tsinghua.edu.cn/jenkins ”

docker方式安装

  • docker内maven下载不下来,映射为本机maven.
docker run -u root -d -p 8080:8080 -p 50000:50000 -v /usr/jenkins:/var/jenkins_home -v /usr/maven/apache-maven-3.6.3:/usr/local/maven -v /var/run/docker.sock:/var/run/docker.sock --name myjenkisn jenkinsci/blueocean 
  • 用科学上网方式 下载maven,不映射本机maven
docker run -u root -d -p 8080:8080 -p 50000:50000 -v /usr/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
  • 解决下载插件慢得问题
  1. 修改 hudson.model.UpdateCenter.xml
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
  1. 修改 updates/default.json
updates.jenkins.io/download  改为 mirrors.tuna.tsinghua.edu.cn/jenkins
www.google.com 改为 www.baidu.com

方式二

$ sed -i 's#http://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json && sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json
  • 安装中文插件
    Localization: Chinese (Simplified)

  • 安装maven插件
    Maven Integration

  • shell脚本 打包应用为docker容器

#!/bin/bash -il
#操作/项目路径(Dockerfile存放的路劲)
BASE_PATH=/var/jenkins_home/base
#jar备份路径
BACKUP_PATH=/var/jenkins_home/backup_jar
# 源jar路径  
SOURCE_PATH=/var/jenkins_home/workspace/maven
#docker 镜像/容器名字或者jar名字 这里都命名为这个
SERVER_NAME=jeecg-boot-module-system
#jar包名字
JAR_NAME=jeecg-boot-module-system-2.2.1.jar
#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
#镜像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
 
DATE=`date +%Y%m%d%H%M`
 
# 最新构建代码 移动到项目环境
function transfer(){
    echo "最新构建代码 $SOURCE_PATH/$SERVER_NAME/target/$JAR_NAME 迁移至 $BASE_PATH ...."
        cp $SOURCE_PATH/$SERVER_NAME/target/$JAR_NAME $BASE_PATH 
        cp $SOURCE_PATH/$SERVER_NAME/Dockerfile $BASE_PATH 
    echo "迁移完成"
}
 
# 备份
#function backup(){
#	if [ -f "$BASE_PATH/$SERVER_NAME.jar" ]; then
#    	echo "$SERVER_NAME.jar 备份..."
#        	cp $BASE_PATH/$SERVER_NAME.jar $BASE_PATH/backup/$SERVER_NAME-$DATE.jar
#        echo "备份 $SERVER_NAME.jar 完成"
#    else
#    	echo "$BASE_PATH/$SERVER_NAME.jar不存在,跳过备份"
#    fi
#}
 
# 构建docker镜像
function build(){
	if [ -n "$IID" ]; then
		echo "存在$SERVER_NAME镜像,IID=$IID,删除后重新构建"
        docker stop $SERVER_NAME 
        docker rm $SERVER_NAME 
        docker rmi $SERVER_NAME
        cd $BASE_PATH
		docker build  -t $SERVER_NAME .
	else
		echo "不存在$SERVER_NAME镜像,开始构建镜像"
			cd $BASE_PATH
		docker build  -t $SERVER_NAME .
	fi
}
 
# 运行docker容器
function run(){
	backup
	transfer
	build
	if [ -n "$CID" ]; then
		echo "存在$SERVER_NAME容器,CID=$CID,删除docker容器 ..."
			docker stop $SERVER_NAME 
            docker rm $SERVER_NAME 
		echo "$SERVER_NAME容器删除完成"
        echo "重新创建容器"
			docker run --name $SERVER_NAME  -d -p 8081:8081 $SERVER_NAME
		echo "$SERVER_NAME容器创建完成"
	else
		echo "不存在$SERVER_NAME容器,docker run创建容器..."
			docker run --name $SERVER_NAME  -d -p 8081:8081 $SERVER_NAME
		echo "$SERVER_NAME容器创建完成"
	fi
}
 
#入口
run  
  • 推送到远程服务器启动jar包的脚本
#!/bin/bash
source /etc/profile
#jar所在目录
JAR_PATH=/usr/local/jar
#jar名称
JAR_NAME=demo-0.0.1-SNAPSHOT

#结束进程
echo "查询进程id-->$JAR_NAME"
PID=`ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}'`
echo "得到进程ID:$PID"
for id in $PID
do
	kill -9 $id  
done
echo "结束进程完成"

#运行jar
nohup java -jar $JAR_PATH/$JAR_NAME.jar > $JAR_PATH/$JAR_NAME.out 2>1&
  • 安装dockerCompose
curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
  • 安装gitlab
docker run \
    --detach \
    --publish 8443:443 \
    --publish 8090:8090 \
    --publish 222:22 \
    --restart always \
    --name gitlab --privileged=true \
    --restart unless-stopped \
    -v /usr/gitlab/etc:/etc/gitlab \
    -v /usr/gitlab/log:/var/log/gitlab \
    -v /usr/gitlab/data:/var/opt/gitlab \
    beginor/gitlab-ce:11.0.1-ce.0
  • pipeline 脚本
pipeline {
    agent any
    triggers {
        gitlab (
            triggerOnPush: true,          # 当 GitLab 触发 push 事件时,是否执行构建
            triggerOnMergeRequest: true,  # 当 GitLab 触发 mergeRequest 事件时,是否执行构建
            branchFilterType: 'All',      # 只有符合条件的分支才会触发构建
            secretToken: "abc"
            )
    }
    stages {
        stage('build') {
            steps {
                echo "hello world"
            }
        }
    }
}

微服务docker部署方案

  • pipeline脚本
def tag="latest"
//harbor私服地址
def harbor="registry.cn-hangzhou.aliyuncs.com"
//harbor仓库名
def harbor_name="haiwei"
//项目名
def project_name="jeecg-boot-module-system"

node {
    stage('拉取代码') { 
       checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '73456497-af92-4c1a-8d09-b2b8a62b3ad5', url: 'https://gitee.com/jfb308398254/jenkins-test.git']]])
     
    }
    stage('编译,构建镜像'){
        def imageName="${project_name}:${tag}"
        //编译
        sh '''
        source /etc/profile
        mvn  clean package dockerfile:build
        '''
        //给镜像打标签
        sh "docker tag ${imageName} ${harbor}/${harbor_name}/${imageName}"
        //屏蔽掉阿里得账号密码 使用脚本生成器里得(withCredentials: Bind credentials to variables)
        withCredentials([usernamePassword(credentialsId: '014654bc-394f-40ef-bf6f-f6d76e2addfe', passwordVariable: 'passward', usernameVariable: 'username')]) {
        //登录 阿里镜像
        sh "docker login -u ${username} -p ${passward} ${harbor}"
        //上传镜像
        sh "docker push ${harbor}/${harbor_name}/${imageName}"
      }
        //删除本地镜像
        sh "docker rmi -f ${imageName}"
        sh "docker rmi -f ${harbor}/${harbor_name}/${imageName}"
        //部署 可以在脚本生成里面选择(sshPublisher: Send build artifacts over SSH)
        //必须安装 Publish Over SSH 插件
        sshPublisher(publishers: [sshPublisherDesc(configName: '部署服务器', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "/usr/local/shell/deploy.sh $harbor $harbor_name $project_name $tag 9091", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
    }
}
  • 有远程部署服务器脚本
#! /bin/sh
#接收外部参数
harbor_url=$1
harbor_project_name=$2
project_name=$3
tag=$4
port=$5
imageName=$harbor_url/$harbor_project_name/$project_name:$tag
echo "$imageName"
#查询容器是否存在,存在则删除
containerId=`docker ps -a | grep -w ${project_name}:${tag} | awk '{print $1}'`
if [ "$containerId" != "" ] ; then
#停掉容器
docker stop $containerId
#删除容器
docker rm $containerId
echo "成功删除容器"
fi
#查询镜像是否存在,存在则删除
imageId=`docker images | grep -w $project_name | awk '{print $3}'`
if [ "$imageId" != "" ] ; then
#删除镜像
docker rmi -f $imageId
echo "成功删除镜像"
fi
# 登录Harbor私服
docker login -u 308398254@qq.com -p jfb308398 $harbor_url
# 下载镜像
docker pull $imageName
# 启动容器
docker run -di -p $port:$port $imageName
echo "容器启动成功"

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值