<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>jenkins &#8211; Lhy&#039;s blog</title>
	<atom:link href="https://blog.lhyshome.com/tag/jenkins/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.lhyshome.com</link>
	<description>welcome</description>
	<lastBuildDate>Thu, 26 Jun 2025 03:12:43 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
<site xmlns="com-wordpress:feed-additions:1">219834889</site>	<item>
		<title>将ruoyi前后端分离版本配置Jenkins流水线</title>
		<link>https://blog.lhyshome.com/2024/05/13/84/</link>
					<comments>https://blog.lhyshome.com/2024/05/13/84/#respond</comments>
		
		<dc:creator><![CDATA[lhy]]></dc:creator>
		<pubDate>Mon, 13 May 2024 08:19:54 +0000</pubDate>
				<category><![CDATA[java]]></category>
		<category><![CDATA[脚本]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[dockerFile]]></category>
		<category><![CDATA[jenkins]]></category>
		<category><![CDATA[k8s]]></category>
		<category><![CDATA[nginx]]></category>
		<guid isPermaLink="false">https://blog.lhyshome.com/?p=84</guid>

					<description><![CDATA[所需中间件 Jenkins+harbor+nexus+docker+k8s Jenkins执行流水线脚本命令 … <span class="read-more"><a href="https://blog.lhyshome.com/2024/05/13/84/">Read More &#187;</a></span>]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">所需中间件</h2>



<p>Jenkins+harbor+nexus+docker+k8s</p>



<p>Jenkins执行流水线脚本命令</p>



<p>harbor维护管理docker镜像</p>



<p>nexus维护私有maven依赖</p>



<p>docker创建服务各个版本的docker镜像</p>



<p>k8s部署服务镜像</p>



<h2 class="wp-block-heading">后端：</h2>



<h3 class="wp-block-heading">Jenkins流水线脚本</h3>



<pre class="wp-block-code"><code>pipeline {
    agent none
    environment {
        FLAG = 'ruoyigatewaydev'
    }
    options {
        timeout(time:25, unit: 'MINUTES')
    }
    stages {
        stage('Build Package') {
            agent {
                docker {
                    image 'maven:3.6.1-jdk-8'
                    args '-v /var/lib/jenkins/repository:/repository '
                }
            }
            steps {
                git branch: 'dev',
                        credentialsId: 'gitlab_local_pwd',
                        url: 'http://git_ip:git_port/lhy/ruoyi-gateway.git'
                sh '''
                mvn -s settings.xml -Dmaven.repo.local=/repository -B clean package -DskipTests=true
                '''
            }
        }
        stage('Build image and Push') {
            agent any
            environment {
                IMAGE_TAG = sh(returnStdout: true,script: 'echo $image_tag').trim()
            }
            steps {
                sh """	
					docker build -t harbor_ip:harbor_port/public/${FLAG}:${IMAGE_TAG} ./
					docker push harbor_ip:harbor_port/public/${FLAG}:${IMAGE_TAG}
					docker image rm harbor_ip:harbor_port/public/${FLAG}:${IMAGE_TAG}
                   """
            }
        }

        stage('Deploy') {
            agent any
            steps {
                script{
                    def remote = &#91;:]
                    remote.name = 'kube'
                    remote.host = 'k8s_ip'
                    remote.port = 22
                    remote.allowAnyHosts = true
                    //通过withCredentials调用Jenkins凭据中已保存的凭据，credentialsId需要填写，其他保持默认即可
                    withCredentials(&#91;usernamePassword(credentialsId: 'Vm_local_pwd', passwordVariable: 'password', usernameVariable: 'userName')]) {
                        remote.user = "${userName}"
                        remote.password = "${password}"
                    }
                    sshCommand remote: remote, command: """ 
                        if &#91; ! -d '/home/ruoyi/${FLAG}' ];then 
                        mkdir /home/ruoyi/${FLAG}
                        else
                        echo "文件夹已经存在"
                        fi
    				   """
                    sshPut remote: remote, from: 'k8s.yaml', into: "/home/ruoyi/${FLAG}"
                    sshCommand remote: remote, command: """ 
    					sed -i 's#${FLAG}:.*#${FLAG}:${IMAGE_TAG}#g' /home/ruoyi/${FLAG}/k8s.yaml
    					kubectl apply -f /home/ruoyi/${FLAG}/k8s.yaml
    					rm -rf /home/ruoyi/${FLAG}/k8s.yaml
    				   """
                }
            }
        }
    }
}</code></pre>



<h3 class="wp-block-heading">k8s.yml</h3>



<pre class="wp-block-code"><code>apiVersion: apps/v1
kind: Deployment
metadata:
  name: ruoyigateway
  namespace: ruoyi-dev
  labels:
    app: ruoyigateway
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ruoyigateway
  template:
    metadata:
      name: ruoyigateway
      labels:
        app: ruoyigateway
    spec:
      containers:
        - name: ruoyigateway
          image: harbor_ip:harbor_port/public/ruoyigatewaydev:7.0
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: containerPort
              protocol: TCP
      restartPolicy: Always
      imagePullSecrets:
        - name: harbor-lhy

---
apiVersion: v1
kind: Service
metadata:
  name: ruoyigateway
  namespace: ruoyi-dev
spec:
  selector:
    app: ruoyigateway
  ports:
    - protocol: TCP
      port: port
      targetPort: targetPort
      nodePort: nodePort
  type: NodePort
</code></pre>



<h3 class="wp-block-heading">DockerFile</h3>



<pre class="wp-block-code"><code>FROM openjdk:8-jre<br>LABEL authors="lhyshome_pc"<br>ADD target/ruoyi-gateway.jar app.jar<br>ENTRYPOINT &#91;"java","-jar","/app.jar"]</code></pre>



<h2 class="wp-block-heading">前端</h2>



<h3 class="wp-block-heading">Jenkins流水线脚本</h3>



<pre class="wp-block-code"><code>pipeline {
    agent none
    environment {
        FLAG = 'ruoyiuidev'
    }
    options {
        timeout(time:25, unit: 'MINUTES')
    }
    stages {
        stage('npm') {
            agent {
                docker {
                    image 'node:14'
                    args '-u root:root --network=host'
                }
            }
            steps {
                git branch: 'dev',
                credentialsId: 'gitlab_local_pwd',
                url: 'http://git_ip:git_port/lhy/ruoyi-ui.git'
                sh """
                    npm install &amp;&amp; npm run build:stage
                """
            }
        }
        stage('Build image and Push') {
            agent any
            environment {
                IMAGE_TAG = sh(returnStdout: true,script: 'echo $image_tag').trim()
            }
            steps {
                sh """	
					docker build -t harbor_ip:harbor_port/public/${FLAG}:${IMAGE_TAG} ./
					docker push harbor_ip:harbor_port/public/${FLAG}:${IMAGE_TAG}
					docker image rm harbor_ip:harbor_port/public/${FLAG}:${IMAGE_TAG}
                   """
            }
        }
        stage('Deploy') {
            agent any
            steps {
                script{
                    def remote = &#91;:]
                    remote.name = 'kube'
                    remote.host = 'k8s_ip'
                    remote.port = 22
                    remote.allowAnyHosts = true
                    //通过withCredentials调用Jenkins凭据中已保存的凭据，credentialsId需要填写，其他保持默认即可
                    withCredentials(&#91;usernamePassword(credentialsId: 'Vm_local_pwd', passwordVariable: 'password', usernameVariable: 'userName')]) {
                        remote.user = "${userName}"
                        remote.password = "${password}"
                    }
                    sshCommand remote: remote, command: """ 
                        if &#91; ! -d '/home/ruoyi/${FLAG}' ];then 
                        mkdir /home/ruoyi/${FLAG}
                        else
                        echo "文件夹已经存在"
                        fi
    				   """
                    sshPut remote: remote, from: 'k8s.yaml', into: "/home/ruoyi/${FLAG}"
                    sshCommand remote: remote, command: """ 
    					sed -i 's#${FLAG}:.*#${FLAG}:${IMAGE_TAG}#g' /home/ruoyi/${FLAG}/k8s.yaml
    					kubectl apply -f /home/ruoyi/${FLAG}/k8s.yaml
    					rm -rf /home/ruoyi/${FLAG}/k8s.yaml
    				   """
                }
            }
        }
    }
}</code></pre>



<h3 class="wp-block-heading">k8s.yml</h3>



<pre class="wp-block-preformatted">apiVersion: apps/v1<br>kind: Deployment<br>metadata:<br>  name: ruoyiui<br>  namespace: ruoyi-dev<br>spec:<br>  replicas: 1<br>  selector:<br>    matchLabels:<br>      app: ruoyiui<br>  template:<br>    metadata:<br>      labels:<br>        app: ruoyiui<br>    spec:<br>      containers:<br>        - name: ruoyiui<br>          image: harbor_ip:harbor_port/public/ruoyiuiprod:9.0<br>          ports:<br>            - containerPort: containerPort<br>---<em><br></em>apiVersion: v1<br>kind: Service<br>metadata:<br>  name: ruoyiui<br>  namespace: ruoyi-dev<br>spec:<br>  type: LoadBalancer<br>  selector:<br>    app: ruoyiui<br>  ports:<br>    - protocol: TCP<br>      port: port<br>      targetPort: targetPort<br>      nodePort: nodePort</pre>



<h3 class="wp-block-heading">DockerFile</h3>



<pre class="wp-block-code"><code>FROM nginx:1.14.1
ADD ./dist /home
ADD ./nginx.conf /etc/nginx
EXPOSE 80
CMD &#91;"nginx", "-g", "daemon off;"]</code></pre>



<h3 class="wp-block-heading">nginx.conf</h3>



<pre class="wp-block-code"><code>worker_processes  1;<br><br>events {<br>    worker_connections  1024;<br>}<br><br>http {<br>    include       mime.types;<br>    default_type  application/octet-stream;<br>    sendfile        on;<br>    keepalive_timeout  65;<br><br>    server {<br>        listen       80;<br>        server_name  localhost;<br><br>        location / {<br>            root   /home;<br>            try_files $uri $uri/ /index.html;<br>            index  index.html index.htm;<br>        }<br><br>        # 避免actuator暴露<br>        if ($request_uri ~ "/actuator") {<br>            return 403;<br>        }<br><br>        error_page   500 502 503 504  /50x.html;<br>        location = /50x.html {<br>            root   html;<br>        }<br>    }<br>}</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.lhyshome.com/2024/05/13/84/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">84</post-id>	</item>
		<item>
		<title>docker部署常用中间件及常用命令</title>
		<link>https://blog.lhyshome.com/2024/05/13/26/</link>
					<comments>https://blog.lhyshome.com/2024/05/13/26/#respond</comments>
		
		<dc:creator><![CDATA[lhy]]></dc:creator>
		<pubDate>Mon, 13 May 2024 02:01:58 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[脚本]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[gitlab]]></category>
		<category><![CDATA[jenkins]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[nacos]]></category>
		<category><![CDATA[rabbitMq]]></category>
		<category><![CDATA[redis]]></category>
		<category><![CDATA[常用命令]]></category>
		<guid isPermaLink="false">https://blog.lhyshome.com/?p=26</guid>

					<description><![CDATA[命令解释 常用命令 Jenkins redis mysql gitlab rabbitMq nacos（ruo… <span class="read-more"><a href="https://blog.lhyshome.com/2024/05/13/26/">Read More &#187;</a></span>]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">命令解释</h2>



<pre class="wp-block-code"><code>-d # 指定容器在后台运行
-p {a}:{b} # 端口映射，a宿主机使用端口，b容器内使用端口 e.g.： -p 80:80
-v {xxxx}:{yyyy} # 文件目录映射 xxxx宿主机目录，yyyy容器内目录 e.g.： -v /usr/local/mysql/log:/var/log/mysql
-e {key}={value} # 设置应用的环境变量 环境变量来源于应用所设 e.g.： -e RABBITMQ_DEFAULT_USER=user 将环境变量"RABBITMQ_DEFAULT_USER"设置为"user"
--restart=always # 开机启动 
--name  # 指定了容器名称 e.g.： --name redis 将容器命名为"redis"
--hostname # 指定主机名
--rm #表示退出容器时会自动将其删除
--privileged=true #在容器内获取root权限</code></pre>



<h2 class="wp-block-heading">常用命令</h2>



<pre class="wp-block-code"><code>docker exec -it {name} /bin/bash  # 进入容器 "name" 为容器名称或容器id
docker cp /usr/local/vendor.js  {containerId}:/usr/src/app/_site  # 将文件复制到容器</code></pre>



<h2 class="wp-block-heading">Jenkins</h2>



<pre class="wp-block-code"><code>docker run --restart=always  -u root   -d   -p 8080:8080   -p 50000:50000   -v jenkins-data:/var/jenkins_home   -v /var/run/docker.sock:/var/run/docker.sock   --name jenkins   jenkinsci/blueocean

2024/12/23
docker run --restart=always  -u root   -d   -p 8080:8080   -p 50000:50000   -v jenkins-data:/var/jenkins_home   -v /var/run/docker.sock:/var/run/docker.sock   --name jenkins2   jenkins/jenkins:2.426.1
# 进入容器命令行
apt-get update
apt-get install -y docker.io
docker login -u {username} -p {password} {harbor}
</code></pre>



<h2 class="wp-block-heading">redis</h2>



<pre class="wp-block-code"><code>docker run -p 6379:6379 --name redis --restart=always -d redis</code></pre>



<h2 class="wp-block-heading">mysql</h2>



<pre class="wp-block-code"><code>docker run -p 3306:3306 --name mysql --restart=always --privileged=true -v /usr/local/mysql/log:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD={PASSWORD} -d mysql:latest</code></pre>



<h2 class="wp-block-heading">gitlab</h2>



<pre class="wp-block-code"><code>docker run  -itd   -p 80:80  -p 22:22  -p 443:443  -v /home/gitlab/etc:/etc/gitlab   -v /home/gitlab/log:/var/log/gitlab  -v /home/gitlab/opt:/var/opt/gitlab  --restart always  --privileged=true  --name gitlab  gitlab/gitlab-ce:15.11.13-ce.0
# 初始密码
cat /home/gitlab/initial_root_password</code></pre>



<h2 class="wp-block-heading">rabbitMq</h2>



<pre class="wp-block-code"><code># 15672--web页面地址 5672--应用连接端口
docker run -d -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS={PASSWORD} --restart=always --name rabbitmq rabbitmq:management </code></pre>



<h2 class="wp-block-heading">nacos（ruoyi）</h2>



<pre class="wp-block-code"><code>docker run \
 --name nacos-ruoyi \
 -p 8848:8848 \
 -p 9848:9848 \
 -p 9849:9849 \
 -e MODE=standalone \
 -e SPRING_DATASOURCE_PLATFORM=mysql \
 -e MYSQL_SERVICE_HOST={HOST/IP} \
 -e MYSQL_SERVICE_PORT=3306 \
 -e MYSQL_SERVICE_DB_NAME={DB_NAME} \
 -e MYSQL_SERVICE_USER={USER} \
 -e MYSQL_SERVICE_PASSWORD={PASSWORD} \
 -e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&amp;connectTimeout=1000&amp;socketTimeout=3000&amp;autoReconnect=true&amp;useUnicode=true&amp;useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;allowPublicKeyRetrieval=true' \
 --restart=always -d \
 nacos/nacos-server:v2.2.0</code></pre>



<p>ps：上述为mysql 8.* 版本，如果使用mysql 5.7可不添加MYSQL_SERVICE_DB_PARAM参数，使用默认MYSQL_SERVICE_DB_PARAM即可</p>



<h2 class="wp-block-heading">stirling-pdf</h2>



<p>docker run -d \<br>-p 8080:8080 \<br>-v /home/stirlingpdf/logs:/logs \<br>-e DOCKER_ENABLE_SECURITY=false \<br>-e LANGS=zh_CN \<br>&#8211;name stirling-pdf \<br>frooodle/s-pdf:0.46.2</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.lhyshome.com/2024/05/13/26/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">26</post-id>	</item>
	</channel>
</rss>
