DevOps使用到的工具・术语

目录

■Devops流程

■术语

■工具

 1.Jenkins 自动部署

 10.Docker 

 11.Maven  (gradle 也是一种打包工具)

■相关知识 (图片形式)

图片7(Docker 图片说明)

■Docker详细使用

■测试相关

■XLDeploy WebAPI

■GitHub WebAPI 使用


====

■Devops流程

从一张图看Devops全流程_王卫东 博客-CSDN博客_devops典型工作链流程

微服务——构建持续交付与DevOps架构-InfoQ

 ・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包。

         也可也使用其他工具,发布资源。

■工具

 1.Jenkins 自动部署

      在Jenkins中新建项目(Job)_ZZY1078689276的专栏-CSDN博客_jenkins新建项目

         ・pipeline

块(blocks{})
由大括号括起来的语句,如pipeline{},Section{},parameters{},script{}
章节(Sections
通常包含一个或多个指令或步骤。如 agent 、post、stagessteps

     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 内置变量

Jenkins内置环境变量的使用 - 贺满 - 博客园

变量名解释
BUILD_NUMBERThe current build number, such as "153"
BUILD_IDThe 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_NAMEThe display name of the current build, which is something like "#153" by default.
JOB_NAMEName 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_TAGString of "jenkins-${JOB_NAME}-${BUILD_NUMBER}". Convenient to put into a resource file, a jar file, etc for easier identification.
EXECUTOR_NUMBERThe 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_NAMEName of the slave if the build is on a slave, or "master" if run on master
NODE_LABELSWhitespace-separated list of labels that the node is assigned.
WORKSPACEThe absolute path of the directory assigned to the build as a workspace.
JENKINS_HOMEThe absolute path of the directory assigned on the master node for Jenkins to store data.
JENKINS_URLFull URL of Jenkins, like http://server:port/jenkins/ (note: only available if Jenkins URL set in system configuration)
BUILD_URLFull URL of this build, like http://server:port/jenkins/job/foo/15/ (Jenkins URL must be set)
SVN_REVISIONSubversion revision number that's currently checked out to the workspace, such as "12345"
SVN_URLSubversion URL that's currently checked out to the workspace.
JOB_URLFull 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     (数据库,数据自动迁移工具)

 10.Docker 

            各种服务容器化,直接加载映像,即可使用,不在需要安装

       ・Docker技术介绍

      Docker技术( 容器虚拟化技术 )_时间静止-CSDN博客_docker技术

      ・入门已经使用

       Docker的入门及使用_ruozhuliufeng的博客-CSDN博客

      ・各种参数

            Docker命令_各种参数简介(run、v、rm、-w、-u、-e)_sun0322-CSDN博客_docker e

 11.Maven  (gradle 也是一种打包工具

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打包项目_五山口老法师-CSDN博客

         ・相关知识(什么是Maven)

           学Maven,这篇万余字的教程,真的够用了!_江南一点雨的专栏-CSDN博客

      11.2.build节点

       maven中pom文件build节点讲解_赶路人儿-CSDN博客_maven中build的作用

■相关知识 (图片形式)

图片1

---

---

图片2

图片3

图片4

图片5

图片6

图片7(Docker 图片说明)

大海里面的,鲸鱼上面,有集装箱

・大海,宿主系统

・鲸鱼,Docker

・集装箱 ,容器

Docker的基本组成
・镜像
Docker镜像(Image)就是一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以创建很多容器

・容器
Docker利用容器(Container)独立运行有一个或一组应用。容器是用镜像创建的运行实例。

它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

可以把容器看做一个简易版的Linux环境(包括root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序

容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

・仓库
仓库(Repository)是集中存放镜像文件的场所

仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库又包含多个镜像,每个镜像有不同的标签(tag)
 

图片8

---

■Docker详细使用

(十)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,类设计等方面进行代码规范和风格的检查,从而有效约束开发人员更好地遵循代码编写规范。

====

■XLDeploy WebAPI

XL Deploy REST API (xebialabs.com)

====

■GitHub WebAPI 使用

总结【GetHub的WebAPI,ASSET_ID】,【Linux的jq命令】(草稿版+实际操作)-CSDN博客

===

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值