基于Docker安装Jenkins并实现CI/CD实战部署

2023-05-16

本实践介绍了利用Jenkins和docker技术,如何实现CI/CD的各环节的步骤,包括环境准备,代码提交,编译程序,构建镜像,部署一套完整的安装部署流程。

工具介绍:

  • Docker:是目前最流行的虚拟化技术
  • Jenkis :Jenkins人工或定时触发构建项目,拉取代码,编码、再打包镜像,推送到镜像仓库
  • Gitee:源代码版本管理工具,开发人员提交代码到Gitee仓库,需要把仓库设置成公开
  • 阿里云镜像仓库:存放镜像的仓库

操作系统centos 7.3 关闭防火墙 ,selinux

一、安装docker

我是虚拟机装的Centos7,linux 3.10 内核,docker官方说至少3.8以上,建议3.10以上

root账户登录,查看内核版本如下:

[root@word-test ~]# uname -a
Linux word-test.com 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

进入docker官网在installation per distro 下的install on centos

在这里插入图片描述
参照文档安装,步骤如下:

删除旧版本:

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

需要的安装包

 yum install -y yum-utils

设置镜像仓库

 yum-config-manager \
    --add-repo \
   http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

如果缺包就执行以下命令,然后在执行上面那条命令:

wget -O /etc/yum.repos.d/CentOS-Base.repo \
http://mirrors.aliyun.com/repo/Centos-7.repo

更新yum 软件包索引

yum makecache fast**

安装docker docker -ce社区版 ee 企业版

yum install docker-ce docker-ce-cli containerd.io

安装完成后,启动docker

[root@word-test ~]# systemctl start docker.service 
[root@word-test ~]# systemctl status docker.service 

使用docker version 查看是否安装成功:

Client: Docker Engine - Community
 Version:           20.10.14
 API version:       1.41
 Go version:        go1.16.15
 Git commit:        a224086
 Built:             Thu Mar 24 01:49:57 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.14
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.15
  Git commit:       87a90dc
  Built:            Thu Mar 24 01:48:24 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.5.11
  GitCommit:        3df54a852345ae127d1fa3092b95168e4a88e2f8
 runc:
  Version:          1.0.3
  GitCommit:        v1.0.3-0-gf46b6ba
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

镜像加速配置:
使用Docker时需要首先下载一个官方镜像,例如mysql、wordpress。然而由于网络原因,下载一个Docker官方镜像可能会需要很长的时间,甚至下载失败。为此,阿里云容器镜像服务ACR提供了官方的镜像站点,从而加速官方镜像的下载。

在不同的操作系统下,配置加速器的方式略有不同,此次我使用的是centos7

关于加速器的地址,您登录容器镜像服务控制台后,在左侧导航栏选择镜像工具 > 镜像加速器,在镜像加速器页面就会显示为您独立分配的加速器地址。

例如:
加速器地址:[系统分配前缀].mirror.aliyuncs.com  

配置镜像加速器
针对Docker客户端版本大于 1.10.0 的用户

可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

mkdir -p /etc/docker  #有的直接进入,没有则创建
vim daemon.json       #创建daemon.json文件并进入
 
{
  "registry-mirrors": ["https://3qk4n8zw.mirror.aliyuncs.com"]
}  #写入## 标题

也可以使用输入重定向:
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://3qk4n8zw.mirror.aliyuncs.com"]
}
EOF

 systemctl daemon-reload      #重新加载daemon
 systemctl restart docker     #重启docker

二、安装 Jenkins

docker search jenkins    // 查找jenkins镜像
docker pull jenkins/jenkins  // pull jenkins最新镜像

创建jenkins挂载目录


mkdir /var/jenkins_home/
chmod 777  /var/jenkins_home/  #授权

启动 Jenkins 容器

docker run  -d -e TZ="Asia/Shanghai" --name jenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock  -v /usr/bin/docker:/usr/bin/docker  jenkins/jenkins:latest

参数说明:

-d:后台守护进程运行 ;
-e:设置时区
-p(小写p):端口映射,前面8080为宿主机的端口,后面8080为jenkins:latest镜像的端口(该端口是制作镜像的人制定的)--name:给容器取名字为:jenkins ;

-v: 挂在数据卷 ;

-v /var/jenkins_home:/var/jenkins_home  #最好不要挂在这个目录上,自己创建一个
-v把宿主机的/var/jenkins_home目录挂载到容器的/var/jenkins_home,该目录是jenkins的工作目录,主要方便在本地查看容器的文件。

-v /usr/bin/docker:/usr/bin/docker 把docker的命令  映射  ; 
加上这个-v参数是为了能在Jenkins容器里面能执行docker命令 

-v /var/run/docker.sock:/var/run/docker.sock
Portainer通过绑定的/var/run/docker.sock文件与Docker守护进程通信,执行各种管理操作。

 jenkins/jenkins:latest: 为基础镜像 ;

网页输入locathost +端口访问 Jenkins

在这里插入图片描述

 cat /var/jenkins_home/secrets/initialAdminPassword 查看初始密码
 82634f21e5f9410a91b6ea9068fc883e

接下来安装推荐的插件,安装成功会自动重启jenkins:
在这里插入图片描述
进入主页面,创建第一个管理员用户:

在这里插入图片描述
检查实例配置没问题,点击保存并完成:
在这里插入图片描述

三、 配置Jenkins

3.1 Jenkins配置全局工具配置
主页面 -> 系统管理 -> 全局工具配置

指定Maven、Git路径

如果Jenkins主机没有git命令,需要安装Git:

yum install git -y

关于Maven配置可以参考:
https://blog.csdn.net/clover661/article/details/124357060?spm=1001.2014.3001.5501

3.2 凭据

系统管理 >>> Manage Credentials >>> jenkins >>> 全局凭据 >>> 添加凭据
在这里插入图片描述
首次添加需要从Jenkins这里进入
在这里插入图片描述
点击全局凭据
在这里插入图片描述
添加凭据
在这里插入图片描述
此处配了个giett代码仓库的凭据
在这里插入图片描述

gitee 用户:abc344327477   密码:**********

继续配一个阿里云镜像仓库凭据:
在这里插入图片描述

阿里云镜像仓库:
用户:abc1387723****   密码:***********

3.3 Jenkins安装必要插件
主页面 -> 系统管理 ->管理插件

安装SSH与Git 、maven插件。

SSH插件

在这里插入图片描述
Git 插件

在这里插入图片描述

maven插件

在这里插入图片描述

3. 4 配置国内插件源
安装了中文插件Localization: Chinese (Simplified)的话
Manage Jenkins => Manage Plugins => 高级 => 升级站点,改为国内源

在这里插入图片描述

改成国内源 :

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

在这里插入图片描述

4 创建项目

4.1点击新建项目

在这里插入图片描述
4.2 建一个test项目
在这里插入图片描述
4.3 写上代码仓库地址,我的是gitee代码仓库
在这里插入图片描述
4.4 仓库地址获取:

在这里插入图片描述

4.5 编写pipeline

pipeline {
    agent any
    
    
    options { timestamps() }

environment {
name="java"  
image="registry.cn-hangzhou.aliyuncs.com/xiaoshimei/shimei-tset:${name}$BUILD_ID"

}

    stages {
        stage('拉取代码') {
            steps {
               checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitee', url: 'https://gitee.com/abc344327477/shopfront.git']]])   #流水线生成 编号①
            }
        }
        
        stage ('代码编译') {
            steps {
                //代码编译
                sh 'mvn clean install'
                //sh 'ls -lh target/'
            }
        }
        
        
        stage ('打包docker镜像') {
            steps { //登录镜像仓库
       withCredentials([usernamePassword(credentialsId: 'jingx', passwordVariable: 'PASSWD', usernameVariable: 'USER')]) {  #流水线生成编号②
    sh 'docker login -u$USER -p$PASSWD registry.cn-hangzhou.aliyuncs.com' #登录镜像仓库
}    

                //打包docker镜像
                sh 'docker build -t ${image} .'

                //推送镜像
                sh 'docker push ${image}'

                // 删除镜像
                sh 'docker rmi ${image}'
              
            }
        }
        
        stage ('Deloy') {  //通过ssh部署
            steps {
//拉取镜像:docker pull registry.cn-hangzhou.aliyuncs.com/xiaoshimei/shimei-tset:java$BUILD_ID

sshPublisher(publishers: [sshPublisherDesc(configName: 'centos7-198', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'docker pull registry.cn-hangzhou.aliyuncs.com/xiaoshimei/shimei-tset:java$BUILD_ID', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])  #流水线生成编号③

//删除镜像,第一次部署记得注解掉 :docker rm -f java

sshPublisher(publishers: [sshPublisherDesc(configName: 'centos7-198', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'docker rm -f java ', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)]) #流水线生成编号④

// 运行容器:docker run -d --name java -p8010:8010  registry.cn-hangzhou.aliyuncs.com/xiaoshimei/  shimei-tset:java$BUILD_ID

sshPublisher(publishers: [sshPublisherDesc(configName: 'centos7-198', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'docker run -d --name java -p8010:8010  registry.cn-hangzhou.aliyuncs.com/xiaoshimei/shimei-tset:java$BUILD_ID', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)]) #流水线生成编号⑤


//查看容器 :docker ps 
sshPublisher(publishers: [sshPublisherDesc(configName: 'centos7-198', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'docker ps ', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)]) #流水线生成编号⑥

            }
        }
    
}
}

拉取代码,流水线生成 ①:
在这里插入图片描述

在这里插入图片描述

登录镜像仓库,流水线生成 ②:

在这里插入图片描述

想通过ssh部署需要先部署好SSH
1 需要安装Publish Over SSH插件
在这里插入图片描述
2 插件配置
主界面——>系统管理——>系统设置——>Publish over SSH
配置密码密码 端口 等等

参数说明:

Passphrase:表示登入密码
path to key:SSH-key文件存放路径 文件路径可以是绝对路径 也可以是相对路径(相对于jenkins的工作目录)
key:SSH-key具体的key文本 作用同上 设置其中一个即可
disable exec: 表示是否运行执行命令 因为你在发布之后可能需要通过命令操作服务器,比如上传编译好的网站文件然后重启服务器上的tomcat
name: 一般写成 用户名@主机名 比如root@blog.cooderstory.cn 当存在多个ssh配置文件的时候 我们使用name来区分
hostanme:表示需要登入的远程主机 可以和我一样写个域名或者具体的ip
username: 就是登入的用户名
remote directory: 表示远程路径 登入到服务器后想打开哪个目录
这段SSH的配置主要是让jenkins能通过shh连接到服务器,也就是ssh连接配置

这里的配置要看具体服务器的安全设置的,有的是通过账户密码登入,有的是直接通过ssh-key登入的,或者三者都要。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

生成ssh流水线方法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通过ssh部署,流水线生成 ③:

在这里插入图片描述

通过ssh部署,流水线生成 ④:
在这里插入图片描述

通过ssh部署,流水线生成 ⑤:

在这里插入图片描述
通过ssh部署,流水线生成 ⑥:

在这里插入图片描述

配置完后点击立即构建:

在这里插入图片描述
构建之前给192.168.10.108机上的sock授权
在这里插入图片描述

测试,在浏览器输入 192.168.10.108:8010

最终访问的web界面如下

如果输出下述页面说明是正常的,页面没有加载成功样式,需要修改下项目里访问地址。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Docker安装Jenkins并实现CI/CD实战部署 的相关文章

  • bridged networking(桥接模式)和network address translation(NAT模式)

    在NAT模式下 xff1a 王五的主机里面的虚拟机有一个虚拟的网卡有一个IP地址192 168 100 88 xff0c 可以在内部生成一个虚拟的地址192 168 100 xff19 xff19 与之通信 xff0c 然后通过代理利用主机
  • Linux 目录结构

  • Adaptive AUTOSAR 简介 (2021版)

    目录 1 Adaptive AUTOSAR 简介 Adaptive平台 一种新的 AUTOSAR 1 1 Adaptive的案例 1 2 经典平台与适应性平台的比较 1 3 单一系统 1 4 架构 逻辑架构 1 5 软件架构 本文图片来源
  • 从Adaptive AUTOSAR的角度看SOA

    前言 身处汽车行业的我们深知 xff0c 新技术的应用或者新概念的提出 xff0c 一定是事出有因的 通常是为了抢夺新技术高地 xff0c 让汽车更好地满足未来的需求 那么 xff0c 汽车电子电气架构领域掀起的这股SOA热潮是由什么导致的
  • 什么是BSP?理解LINUX BSP

    BSP 可支持操作系统更好地运行于硬件主板 BSP xff08 Board Support Package xff09 指板级支持包 对于一般的嵌入式系统 xff0c 硬件部分需要嵌入式硬件工程师设计硬件电路 xff0c 而新出厂的电路板需
  • c++11 std::move() 的使用

    std move函数可以以非常简单的方式将左值引用转换为右值引用 xff08 左值 左值引用 右值 右值引用 参见 xff1a http www cnblogs com SZxiaochun p 8017475 html xff09 通过s
  • Adaptive AUTOSAR 学习笔记 3 - AP 背景、技术及特征

    本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20 11 版本 本文从AUTOSAR EXP PlatformDesign pdf开始 xff0c 一边学习 xff0c 一边顺带着翻译一下 尽力而为 x
  • MySQL导入数据(命令行、脚本方式)

    docker安装MySQL并导入数据 安装步骤省略 xff0c 详细可参考百度上文档 一 命令方式 1 把数据传进服务器中 dfc span class token annotation punctuation 64 BBC span sp
  • Linux 终端快捷键

    Linux 终端快捷键 你可能会有这样的疑问 xff1a 对于有些快捷键 xff0c 明明有等效的 一个按键就能搞定的操作 xff0c 为什么非要舍近求远 用两个组合键来实现 xff1f 当对键盘 终端命令熟练到一定程度之后 xff0c 你
  • Adaptive AUTOSAR----Adaptive studio

    Adaptive studio Adaptive Studio 是包含在 RTA VRTE SK 中的 AUTOSAR 编辑器 Adaptive studio 通过高级抽象支持所有 adaptives autosar arxml 元素的配置
  • Linux tcpdump命令详解

    简介 用简单的话来定义tcpdump xff0c 就是 xff1a dump the traffic on a network xff0c 根据使用者的定义对网络上的数据包进行截获的包分析工具 tcpdump可以将网络中传送的数据包的 头
  • 什么是 E2E 保护 ?

    安全在每个领域都是一个永恒的话题 xff0c 汽车也不例外 xff0c 而随着最近几年汽车电动化 智能化和网联化的发展 xff0c 汽车安全也越来越受到用户及开发人员的重视 xff0c 安全的要素也是多方面的 xff0c 例如用户可能关心在
  • CAN总线基础

    概述 汽车电子设备的不断增多 xff0c 对汽车上的线束分布以及信息共享与交流提出了更高的要求 传统的电气系统往往采用单一连接的方式通信 xff0c 这必将带来线束的冗余以及维修的成本的提高 单一布线连接 传统的单一通信的对接方式 xff0
  • 说一说LIN总线

    前几天小编画点时间看了一些关于LIN总线基础的内容 xff0c 把其中的关键点提取了出来 xff0c 在这里分享给大家 在这里你可能要问 不都有CAN总线了吗 xff1f 这个LIN总线又是从哪里来的 xff1f 其实理由很简单 xff0c
  • CAN FD 介绍

    随着电动汽车 xff0c 无人驾驶汽车技术的快速发展 xff0c 以及对汽车高级驾驶辅助系统和人机交互HMI需求的增加 xff0c 传统的CAN总线在传输速率和带宽等方面越来越显得力不从心 xff0c 其主要原因如下 xff1a 1 通常整
  • FlexRay 介绍

    汽车上的总线技术包括 xff1a LIN CAN CAN FD FlexRay MOST及Ethernet xff0c 我们之前已经分享了LIN xff0c CAN CAN FD总线 在开始阅读之前 xff0c 如果你对已介绍的总线技术还不
  • FlexRay总线原理及应用

    由于传统的CAN解决方案不能满足汽车线控系统 xff08 X by Wire xff09 的要求 于是在 2000 年 9 月 xff0c 宝马和戴姆勒克莱斯勒联合飞利浦和摩托罗拉成立了 FlexRay 联盟 该联盟致力于推广 FlexRa
  • SENT信号介绍

    Vehicle攻城狮 The people who are crazy enough to think they can change the world are the ones who do SENT背景介绍 提到车载总线 xff0c
  • Linux 日志管理

    常用日志文件 系统日志是由一个名为syslog的服务管理的 xff0c 如以下日志文件都是由syslog日志服务驱动的 xff1a var log boot log xff1a 录了系统在引导过程中发生的事件 xff0c 就是Linux系统
  • SPI 通讯协议

    Cuitbasics 汽车ECU设计 2 2 当您将微控制器连接到传感器 xff0c 显示器或其他模块时 xff0c 您是否考虑过这两种设备是如何相互通信的 xff1f 他们到底在说什么 xff1f 事实上电子设备之间的通信就像人类之间的交

随机推荐

  • UART串口通讯

    UART代表通用异步接收器 发送器也称为串口通讯 xff0c 它不像SPI和I2C这样的通信协议 xff0c 而是微控制器中的物理电路或独立的IC UART的主要目的是发送和接收串行数据 xff0c 其最好的优点是它仅使用两条线在设备之间传
  • 一文搞懂AUTOSAR的DEM模块

    Dem全称为Diagnostic Event Manager xff0c 负责故障事件的处理 故障数据的存储和管理 简单说其功能是故障事件确认前的故障debounce xff0c 故障事件确认时的故障数据存储 xff0c 故障发生后的故障老
  • linux父子进程问题——孤儿进程与僵尸进程[总结]

    今天遇到一个linux进程启动时指定Max open files不对的问题 xff0c 导致程序建立socket异常 xff0c 进而导致fullgc问题 xff0c 影响正常服务 所以顺带又温习了下linux下的父子进程的特性 孤儿进程与
  • C++11/14/17一些好用新特性自己整理下

    1 override xff1a 子类继承父类的时候 xff0c 子类虚函数名字写错了或者参数列表不匹配会变成另外一个函数编译器无法判断对错 xff0c 和你写不写virtual也没关系 xff0c 这时候可以在虚函数结尾加上overrid
  • vector中emplace_back方法的用途

    在写代码的过程中 xff0c CLion提醒我把 span style background color ffd900 push back span 方法替换成 span style background color ffd900 empl
  • constexper+const+常量表达式

    常量表达式 xff08 const expression xff09 是指值不会改变并且在编译过程就能得到计算结果的表达式 显然 xff0c 字面值属于常量表达式 xff0c 用常量表达式初始化的 const 对象也是常量表达式 一个对象
  • 这篇 CPU Cache,估计也没人看

    无论你写什么样的代码都会交给 CPU 来执行 xff0c 所以 xff0c 如果你想写出性能比较高的代码 xff0c 这篇文章中提到的技术还是值得认真学习的 另外 xff0c 千万别觉得这些东西没用 xff0c 这些东西非常有用 xff0c
  • 每天一个 Linux 命令

    https blog csdn net k346k346 category 9267835 html uptime 命令 1 命令简介 uptime 用于显示系统总共运行了多长时间和系统的平均负载 无选项 uptime 命令会显示一行信息
  • Docker 安装Jenkins并配置Maven

    系统环境 系统版本 xff1a Centos7 9 docker安装参考此链接 xff1a https blog csdn net clover661 article details 122226083 下载docker时候如果报错参考 x
  • 一文详解自动驾驶的运行设计域(ODD)| 自动驾驶系列

    一文详解自动驾驶的运行设计域 xff08 ODD xff09 n 自动驾驶系列 2021年4月30日 xff0c SAE发布了第四版J3016 驾驶自动化分级 xff0c 这是即2014年1月16日 2016年9月30日 2018年6月15
  • QNX BSP分析

    QNX相关历史文章 xff1a QNX简介QNX Neutrino微内核QNX IPC机制QNX进程管理器QNX资源管理器QNX字符I OQNX之编写资源管理器 xff08 一 xff09 QNX之编写资源管理器 xff08 二 xff09
  • SOA面向服务的分布式架构详解

    导语 xff1a SOA作为一种面向服务的架构 xff0c 是一种软件架构设计的模型和方法论 从业务角度来看 xff0c 一切以最大化 服务 的价值为 出发点 xff0c SOA利用企业现有的各种软件体系 xff0c 重新整合并构建起一套新
  • 自动驾驶软件架构之:中间件与SOA(一)

    本文是将中间件作为一个专题 xff0c 专门展开进行详细的分析和讨论 中间件相关技术在计算机分布式系统中发展了很多年 xff0c 尤其在互联网服务 大型商业系统中得到广泛使用 随着智能网联汽车的发展 xff0c 现代汽车也逐步增加了以太网支
  • 嵌入式系统BSP基础知识

    嵌入式系统BSP基础知识 板级支持包 BSP 是定义如何支持特定硬件设备 设备组或硬件平台的信息集合 BSP 包括有关设备上存在的硬件功能的信息和内核配置信息以及所需的任何其他硬件驱动程序 除了用于基本和可选平台功能的通用 Linux 软件
  • constexpr

    constexpr 标志返回值或者其他表达式是常量 xff0c 在编译时就会被计算出来 这个关键字常被用来 C 43 43 const 和 constexpr 的区别 xff1f 知乎 include lt iostream gt usin
  • inline namespace

    include lt iostream gt using namespace std namespace ALL namespace V2014 void fun int num cout lt lt 34 int 34 lt lt 34
  • 进程与线程

    对于操作系统来说 xff0c 一个任务就是一个进程 xff08 Process xff09 xff0c 比如打开一个浏览器就是启动一个浏览器进程 xff0c 打开一个记事本就启动了一个记事本进程 xff0c 打开两个记事本就启动了两个记事本
  • 详解SOME/IP协议文档

    以下内容来源于AutoSar官网的AUTOSAR PRS SOMEIPProtocol文档 详解SOME IP协议文档 2 知乎 以下内容来源于AutoSar官网的AUTOSAR PRS SOMEIPProtocol文档 SOME IP P
  • AP AUTOSAR——Update and Configuration Management UCM

    15 Update and Configuration Management 15 1 What is Update and Configuration Management 更新和配置管理是Adaptive Platform Servic
  • 基于Docker安装Jenkins并实现CI/CD实战部署

    本实践介绍了利用Jenkins和docker技术 xff0c 如何实现CI CD的各环节的步骤 xff0c 包括环境准备 xff0c 代码提交 xff0c 编译程序 xff0c 构建镜像 xff0c 部署一套完整的安装部署流程 工具介绍 x