jenkins服务脚本

需求:每次开启服务,和关闭服务都要敲一段命令,太麻烦了,于是尝试制作成系统(centos)服务,开机自动启动服务,service jenkins start ,service jenkins stop,service jenkins restart多爽

#!/bin/bash
#
# chkconfig: 2345 89 11
# description: jenkins service
#其实46行以上的代码只不过是写给46行之后调用,两个分号前面的函数就是你自定义service start,stop,restart 触发的代码
#start,stop逻辑一般是调用你的程序关闭服务的命令,不要傻傻的自己还去写。。
#restart一般是直接调用stop,start
#reload() -----> 告诉程序重读配置文件,改变程序的运行状态
#/etc/rc.d/init.d/  系统服务脚本目录,一个服务会有一个脚本,ls可以看到其实有很多写好的服务脚本,可以打开某一个看看,别人的怎么写的,参考借鉴下
#/var/lock/subsys   服务锁定目录(存在则表示已经创建了实例pid文件)主要是为了防止重复启动


SERVICE_NAME=jenkins
SERVICE_ROOT=/home/jenkins
PIDFILE=/var/run/${SERVICE_NAME}/${SERVICE_NAME}.pid
LOCKFILE=/var/lock/subsys/${SERVICE_NAME}


start() {
	echo "Starting ${SERVICE_NAME} ..."
	start_something	
	touch ${LOCKFILE}
	echo "${SERVICE_NAME} is started"
}

stop() {
	echo "Stopping ${SERVICE_NAME} ..."
	stop_something
	rm -f ${lockfile} ${pidfile}
}

start_something(){
	`nohup ${SERVICE_ROOT}/start_jenkins.sh > jenkins.log 2>&1 &`
}

stop_something(){
	`java -jar ${SERVICE_ROOT}/jenkins_home/war/WEB-INF/jenkins-cli.jar -s http://localhost:8000 shutdown --username admin --password a87905338`
}

restart(){
	stop
	start
}

# See how we were called.
case "$1" in
  start)
start        
;;
  stop)
stop            
;;
  restart|force-reload)
stop                
start
;;
  *)
echo $"Usage: $0 {start|stop|restart|force-reload}"
exit 2
esac




要注意的是, 文件的格式要是 unix. 可以通过 VI 命令 :set ff? 查看.如果不是, 执行的时候会报错:

/bin/bash^M: bad interpreter


:set fileformat=unix --> 设置编码为unix(还可以设置为 doc)


VI 中保存

将该脚本设置为可执行:

chmod +x servicefile



2.添加系统服务

chkconfig --add jenkins


3.系统服务自启动

chkconfig --level 345 jenkins on


4.测试

service jenkins start

service jenkins stop

shutdown -r now

每执行完一个测试命令都访问页面和看看进程是否正常(ps -ef | grep jenkins)


### 如何编写和配置 Jenkins 部署脚本 #### 编写 Jenkins Pipeline 脚本 为了实现 Spring Boot 项目的自动部署,可以采用声明式的 Jenkins Pipeline 脚本来定义整个持续集成流程。下面是一个简单的例子: ```groovy pipeline { agent any environment { DOCKER_IMAGE = 'moxm/java:1.8-full' PROJECT_NAME = 'my-project' CONTAINER_PORT = 'containerPort' JAVA_OPTS = '-Djava.security.egd=file:/dev/./urandom' } stages { stage('Checkout') { steps { git branch: 'main', url: 'https://github.com/user/repo.git' } } stage('Build') { steps { sh "mvn clean package" } } stage('Deploy') { steps { script { docker.build("${PROJECT_NAME}:${env.BUILD_NUMBER}") .inside("--network host") { sh """ BUILD_ID=DONTKILLME \ java -jar ${WORKSPACE}/target/${PROJECT_NAME}.jar ${JAVA_OPTS} & echo 当前构建目录: \$(pwd) """ } } } } stage('Test') { // 可选阶段 steps { // 测试命令... } } } } ``` 此脚本涵盖了从代码检出、编译打包直到最终部署的过程,并且加入了 `BUILD_ID=DONTKILLME` 来防止Jenkins在完成作业后终止Java应用程序[^3]。 #### 安装必要的插件并设置SSH连接 对于远程服务器上的操作,则需先安装特定的 Jenkins 插件如 “Publish Over SSH”,以便能够通过 SSH 协议向目标机器发送指令或传输文件。此外,“Generic Webhook Trigger” 插件可以帮助触发基于Webhooks的工作流事件处理程序[^2]。 #### 准备 Dockerfile 和其他资源文件 如果计划利用容器化技术来运行应用的话,在项目根目录创建一个名为 `Dockerfile` 的文本文件是非常有帮助的。该文件应包含用于组装镜像所需的所有说明;例如指定基础映像、复制源码至工作区以及暴露服务监听端口等动作。这里给出的是针对 Java 应用的一个典型模板[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值