赞
踩
目录
====
从一张图看Devops全流程_王卫东 博客-CSDN博客_devops典型工作链流程
・XL Deploy
Digital.ai documentation | Intelligent Value Stream Management Platform
Digital.ai documentation | Intelligent Value Stream Management Platform
还有很多工具,上图中都没有体现,
比如 SonarQube, Veracode 等等
・deploy
spinnaker-简介_rocky267的博客-CSDN博客_spinnaker
代码管理(SCM):GitHub、GitLab、BitBucket、SubVersion
SCM 的全称是软件配置管理(Software Configuration Management),它是 DevOps 中的一个重要领域,用于管理软件开发中的配置项,包括代码、文档、构建文件、测试数据等等。SCM 可以帮助团队更好地组织、跟踪和控制软件开发过程中的变更,提高团队的协作效率和代码质量。
构建工具:Ant、Gradle、maven自动部署:Capistrano、CodeDeploy
持续集成(CI):Bamboo、Hudson、Jenkins
配置管理:Ansible、Chef、Puppet、SaltStack、ScriptRock GuardRail
容器:Docker、LXC、第三方厂商如AWS
编排:Kubernetes、Core、Apache Mesos、DC/OS
服务注册与发现:Zookeeper、etcd、Consul
脚本语言:python、ruby、shell
日志管理:ELK、Logentries
系统监控:Datadog、Graphite、Icinga、Nagios
性能监控:AppDynamics、New Relic、Splunk
压力测试:JMeter、Blaze Meter、loader.io
预警:PagerDuty、pingdom、厂商自带如AWS SNS
HTTP加速器:Varnish
消息总线:ActiveMQ、SQS
应用服务器:Tomcat、JBoss
Web服务器:Apache、Nginx、IIS
数据库:MySQL、Oracle、PostgreSQL等关系型数据库;cassandra、mongoDB、redis等NoSQL数据库
项目管理(PM):Jira、Asana、Taiga、Trello、Basecamp、Pivotal Tracker
0.Devops
DevOps(Development和Operations的组合词)
它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化
operation 英 [ˌɒpəˈreɪʃən] n. 运转;行动;手术;运算
1.敏捷开发
扫盲——敏捷开发 Agile development 之 Scrum开发_sun0322-CSDN博客
2.持续集成(Continuous Integration)(CI)
CI 环境,持续集成环境,
代码提交后,使用Jenkins自动做成jar包,
可以把生成的jar,自动保存在GitHub上。(也可以直接保存到Artifactory库中)
可以把生成的jar,传送的Veracode的Server上,进行Check。
3.持续交付(Continuous Delivery)(CD)
可以使用Jenkins,发布保存的jar包。
也可也使用其他工具,发布资源。
在Jenkins中新建项目(Job)_ZZY1078689276的专栏-CSDN博客_jenkins新建项目
・pipeline
块(blocks{})
由大括号括起来的语句,如pipeline{},Section{},parameters{},script{}
章节(Sections)
通常包含一个或多个指令或步骤。如 agent 、post、stages、steps
agent
必须存在,agent必须在pipeline块内的顶层定义,但stage内是否使用使可选的
参数:any/none/label/node/docker/dockerfile
常用选项 label/cuetomWorkspace/reuseNode
- agent {
- node {
- label 'my-label'
- customWorkspace '/some/other/path'
- }
- }
指令(Directives)
environment、options、parameters、triggers(触发)、stage、tools、when
步骤(Steps)
Pipeline steps reference
执行脚本式pipeline:使用script{}
玩转Jenkins Pipeline_大宝鱼的博客-CSDN博客_jenkins pipeline
新建Job(【新規ジョブ作成】)时,
选择pipeline(パイプライン)(输油管) 下图中的第三项
通过 (パイプライン),关联リポジトリ
・リポジトリのURL
・ブランチ(branch)
・認証情報
(从GitHub中取得代码的用户,可以在Jekins中配置,配置之后,可以直接使用认证情报)
Jenkins运行时,可以执行工程中配置好的shell脚本
・フリースタイル・プロジェクトのビルド(上面的第一个)
建立工程之后,可以在里面执行脚本
进入之后,选择「设定」(小齿轮图标)
⇒ビルド環境 ⇒ 【ビルド手順の追加】中 选择 「シェルの実行」
---
docker ps | grep Jenkins
---
在此输入命令后,在外面运行这个job,就可以看到命令执行后的结果了
・Jenkins 内置变量
变量名 | 解释 |
BUILD_NUMBER | The current build number, such as "153" |
BUILD_ID | The current build ID, identical to BUILD_NUMBER for builds created in 1.597+, but a YYYY-MM-DD_hh-mm-ss timestamp for older builds |
BUILD_DISPLAY_NAME | The display name of the current build, which is something like "#153" by default. |
JOB_NAME | Name of the project of this build, such as "foo" or "foo/bar". (To strip off folder paths from a Bourne shell script, try: ${JOB_NAME##*/}) |
BUILD_TAG | String of "jenkins-${JOB_NAME}-${BUILD_NUMBER}". Convenient to put into a resource file, a jar file, etc for easier identification. |
EXECUTOR_NUMBER | The unique number that identifies the current executor (among executors of the same machine) that’s carrying out this build. This is the number you see in the "build executor status", except that the number starts from 0, not 1. |
NODE_NAME | Name of the slave if the build is on a slave, or "master" if run on master |
NODE_LABELS | Whitespace-separated list of labels that the node is assigned. |
WORKSPACE | The absolute path of the directory assigned to the build as a workspace. |
JENKINS_HOME | The absolute path of the directory assigned on the master node for Jenkins to store data. |
JENKINS_URL | Full URL of Jenkins, like http://server:port/jenkins/ (note: only available if Jenkins URL set in system configuration) |
BUILD_URL | Full URL of this build, like http://server:port/jenkins/job/foo/15/ (Jenkins URL must be set) |
SVN_REVISION | Subversion revision number that's currently checked out to the workspace, such as "12345" |
SVN_URL | Subversion URL that's currently checked out to the workspace. |
JOB_URL | Full URL of this job, like http://server:port/jenkins/job/foo/ (Jenkins URL must be set) |
・ agent 設定関連
Jenkins pipeline:pipeline 使用之语法详解 - YatHo - 博客园
dockerfile
- docker
- agent {
- docker {
- image 'maven:3-alpine'
- label 'my-defined-label'
- args '-v /tmp:/tmp'
- }
- }
2.GitHub リポジトリ 代码版本管理
DecOps中的缩写,SCM
3.ArtiFactory 代码库管理
(可以理解为 升级版 的 maven的镜像库,
・Maven的配置和此有关
・Jenkins的发布,也于此有关)
(有好多种,比如 JFrog ArtiFactory)
4.SonarLint ( 本地的代码静态检查工具)
5.SonarQube (服务器上,运行的静态代码扫描工具)
主要是代码品质的检查(セキュアコードチェック)
6.Veracode (服务器上,运行的静态代码扫描工具)
主要是代码安全的检查(セキュアコードチェック)
7.FindBugs (本地,服务器上,运行的静态代码扫描工具)
主要是代码品质的检查(セキュアコードチェック)
8.Selenium (web 浏览器,自动化测试工具(根据脚本,自动进行测试操作))
9.flyway (数据库,数据自动迁移工具)
各种服务容器化,直接加载映像,即可使用,不在需要安装
・Docker技术介绍
Docker技术( 容器虚拟化技术 )_时间静止-CSDN博客_docker技术
・入门已经使用
Docker的入门及使用_ruozhuliufeng的博客-CSDN博客
・各种参数
Docker命令_各种参数简介(run、v、rm、-w、-u、-e)_sun0322-CSDN博客_docker e
11.0.命令行执行
在 命令行 (cmd)执行 Maven命令,对java工程进行打包 操作 (指定settings.xml)_sun0322-CSDN博客_命令行运行maven项目
11.1.常用命令汇总
maven的配置及一些常用命令_yuanqiongqiong的博客-CSDN博客
- mvn -version 查看maven的版本及配置信息
- mvn archetype:create -DgroupId= DartifactId= 构建java项目
- mvn archetype:create -DgroupId= DartifactId= -DarchetypeArtifactId=maven-archetype-webapp 创建web项目
- mvn compile 编译项目代码
- mvn package 打包项目
- mvn package -Dmaven.test.skip=true 打包项目时跳过单元测试
- mvn test 运行单元测试
- mvn clean 清除编译产生的target文件夹内容,可以配合相应命令一起使用,如mvn clean package, mvn clean test
- mvn install 打包后将其安装在本地仓库
- mvn deploy 打包后将其安装到pom文件中配置的远程仓库
- mvn eclipse:eclipse 将maven生成eclipse项目结构
- mvn eclipse:clean 清除maven项目中eclipse的项目结构
- mvn site 生成站点目录
- mvn dependency:list 显示所有已经解析的所有依赖
- mvn dependency:tree 以树的结构展示项目中的依赖
- mvn dependency:analyze 对项目中的依赖进行分析,依赖未使用,使用单未引入
- mvn tomcat:run 启动tomcat
・clean package (install deploy)
maven package,clean,install,compile命令 - 水木清周 - 博客园
- mvn clean package依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。
- mvn clean install依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。
- mvn clean deploy依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。
-
- package命令完成了项目编译、单元测试、打包功能
- install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库
- deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
・常用命令 clean install
maven之clean、install命令 - code.world - 博客园
・常用命令 clean package
Maven命令行使用:mvn clean package(打包) - FrankYou - 博客园
- 执行顺序:
- 1、使用清理插件:maven-clean-plugin:2.5执行清理删除已有target目录(版本2.5);
- 2、使用资源插件:maven-resources-plugin:2.6执行资源文件的处理(版本2.6);
- 3、使用编译插件:maven-compiler-plugin:3.1编译所有源文件生成class文件至target\classes目录下(版本3.1);
- 4、使用资源插件:maven-resources-plugin:2.6执行测试资源文件的处理(版本2.6);
- 5、使用编译插件:maven-compiler-plugin:3.1编译测试目录下的所有源代码(版本3.1);
- 6、使用插件:maven-surefire-plugin:2.12运行测试用例(版本2.12);
- 7、使用插件:maven-jar-plugin:2.4对编译后生成的文件进行打包,包名称默认为:artifactId-version,比如本例生成的jar文件:rtp-front-1.0-SNAPSHOT,包文件保存在target目录下(这个生成的包不能在命令行中直接执行,因为我们还没有入口类配置到Manifest资源配置文件中去,后续会阐述)。
・打包项目
・相关知识(什么是Maven)
学Maven,这篇万余字的教程,真的够用了!_江南一点雨的专栏-CSDN博客
11.2.build节点
maven中pom文件build节点讲解_赶路人儿-CSDN博客_maven中build的作用
图片1
---
---
图片2
图片3
图片4
图片5
图片6
大海里面的,鲸鱼上面,有集装箱
・大海,宿主系统
・鲸鱼,Docker
・集装箱 ,容器
Docker的基本组成
・镜像
Docker镜像(Image)就是一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以创建很多容器
・容器
Docker利用容器(Container)独立运行有一个或一组应用。容器是用镜像创建的运行实例。
它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做一个简易版的Linux环境(包括root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序
容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
・仓库
仓库(Repository)是集中存放镜像文件的场所
仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库又包含多个镜像,每个镜像有不同的标签(tag)
图片8
---
(十)Docker-V 详解 - sixinshuier - 博客园
docker -v 挂载问题:_hnmpf的博客-CSDN博客_docker-v
0.docker -v
例子
- 譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定:
-
- # docker run -it -v /test:/soft centos /bin/bash
-
- 冒号":"前面的目录是宿主机目录,后面的目录是容器内目录。
注意点
- ・ 容器目录不可以为相对路径
-
- [root@localhost ~]# docker run -it -v /test:soft centos /bin/bash
-
- invalid value "/test:soft" for flag -v: soft is not an absolute path
-
- See 'docker run --help'.
-
-
- ・ 宿主机目录如果不存在,则会自动生成
-
1.Docker 基本命令
比如 doker ps (命令可以直接在 Jenkins 中执行)
- # 1. 新建并启动容器
- docker run [OPTIONS] IMAGE [COMMOND] [ARGS...]
-
- # OPTIONS 说明
- --name="容器新名字": 为容器指定一个名称;
- -d: 后台运行容器,并返回容器ID,也即启动守护式容器;
- -i:以交互模式运行容器,通常与 -t 同时使用;
- -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- -P: 随机端口映射;
- -p: 指定端口映射,有以下四种格式
- ip:hostPort:containerPort
- ip::containerPort
- hostPort:containerPort
- containerPort
-
- # eg: 使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
- docker run -it centos /bin/bash
-
-
- # 2. 查询当前正在运行的容器(类比虚拟中的查看进程)
- docker ps [OPTIONS]
-
- # OPTIONS说明(常用):
- -a :列出当前所有正在运行的容器+历史上运行过的
- -l :显示最近创建的容器。
- -n:显示最近n个创建的容器。
- -q :静默模式,只显示容器编号。
- --no-trunc :不截断输出。
-
-
- # 3. 退出容器
- exit 容器停止后退出
- ctrl+p+q 容器不停止退出
-
- # 4 .启动容器
- docker start 容器ID/容器名
-
- # 5. 重启容器
- docker restart
-
- # 6. 停止容器
- docker stop 容器ID/容器名
-
- # 7. 强制停止容器
- docker kill 容器ID/容器名
-
- # 8. 删除已经停止的容器(如果没有停止,删除后悔停止)
- docker rm 容器ID
- 删除多个容器(特别是第二种 ,先查询所有运行的进程, 然后通过管道传到后面的删除操作中)
- docker rm -f $(docker ps -a -q)
- docker ps -a -q | xargs docker rm
■重要命令
- # 1. 启动守护式容器(后台运行)
- docker -d 容器名
-
- # 使用镜像centos:latest以后台模式启动一个容器
- docker run -d centos
-
- 问题:然后docker ps -a 进行查看, 会发现容器已经退出
- 很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.
- 容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。
-
- 这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的service即可。例如service nginx start
- 但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,
- 这样的容器后台启动后,会立即自杀因为他觉得他没事可做了.
- 所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行
-
- # 2. 查看容器日志
- docker logs -f -t --tail 容器ID
-
- eg :(图1)
- docker run -d centos /bin/sh -c "while true;do echo hello testLogs;sleep 2;done"
- docker logs -tf --tail 10 02c81778b0e0
-
- -t 是加入时间戳
- -f 跟随最新的日志打印
- --tail 数字 显示最后多少条
-
-
- # 3. 查看容器内运行的进程(图2)
- docker top 容器ID
-
- # 4. 查看容器内部细节(图3)
- docker inspect 容器ID
-
- # 5.进入正在运行的容器并进行交互(图4)
- docker exec -it 容器ID bashShell
-
- # 6. 重新进入容器(图5)
- docker attach 容器ID bashShell(不写的话默认 /bin/bash下)
-
- # 比较5与6的区别
- attach 直接进入容器启动命令终端, 不会启动新的线程
- exec 是在容器中打开新的终端, 并且可以启动新的线程
-
---
- FindBugs:
- FindBugs是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析
-
- PMD:
- PMD是一款静态代码分析工具,它能够自动检测各种潜在缺陷以及不安全或未优化的代码。PMD 通过其内置的编码规则对 Java 代码进行静态检查,主要包括对潜在的 bug,未使用的代码,重复的代码,循环体创建新对象等问题的检验
-
- CheckStyle:
- CheckStyle是一个帮助JAVA开发人员遵守某些编码规范的工具。通过检查代码编码格式,命名约定,Javadoc,类设计等方面进行代码规范和风格的检查,从而有效约束开发人员更好地遵循代码编写规范。
-
====
XL Deploy REST API (xebialabs.com)
====
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。