什么是DevOps

https://roadmap.sh/devops

DevOps岗位职责

  • 整合公司现有工具,推动工具链的使用,借助新技术完善公司的工具链。
  • 连接开发运维测试, 以用户为中心,不断重构自己

DevOps的要求

  • 代码能力: 脚本语言+ 高级语言能力
  • 自动化能力:熟练使用并理解CI/CD 各个关键节点上的典型工具
  • IT基础能力: K8S,优化 业务流程

如何增强DevOps能力

  • 强化代码能力 + 跨职能领域核心能力+ 潜移默化的软实力建设

准备

项目:https://gitee.com/shuaiqiangliu/studentmanager

所用软件

服务器端安装jenkins

  1. 时间同步---> 确保工具集成时间一致

    1. 安装 ntpdate yum install ntp ntpdate
    2. 设置时间为阿里服务器的时间 **ntpdate ntp1.aliyun.com**
    3. 将系统时间写入硬件 **hwclock --systohc**
    4. 查看时间 date
  2. 安装Jenkins
    1. 安装JDK yum install java-1.8.0-openjdk *-y

      1. 安装目录: /usr/lib/jvm
    2. 获取Jenkins安装包
      1. 下载页面:https://www.jenkins.io/download/
      2. 安装:rpm -ivh jenkins-2.190.3-1.1.noarch.rpm
    3. 修改配置文件(这里声明的时Linux 用户 root使用的jenkins)
      1. vi /etc/sysconfig/jenkins

修改内容如下:

JENKINS_USER="root"
JENKINS_PORT="8888"
systemctl start jenkins
systemctl enable jenkins

d. 打开浏览器访问: http://安装Jenkins的IP:8888

获取并输入admin管理员账户密码( jenkins自动生成密码)

cat /var/lib/jenkins/secrets/initialAdminPassword

  1. 安装插件
  2. 创建管理员用户
  3. Jenkins用户权限配置

Jenkins下不同用户可以看到不同的工程拥有不同的权限

Jenkins的用户权限配置需要

Jenkins

jenkins + maven 构建

在Jenkins集成服务器上, 安装maven来编译和打包项目

  1. 上传Maven软件到Linux上(linux上安装maven)
apache-maven-3.3.9-bin.zip # 解压
mkdir -p /opt/maven # 创建目录
mv apache-maven-3.3.9/* /opt/maven #移动文件
  1. 在Linux下配置环境变量

    vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export MAVEN_HOME=/opt/maven
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
source /etc/profile # 配置生效
mvn -v # 查找Maven版本
  1. jenkins 关联JDK和Maven





  2. 配置Jenkins全局变量

    Manage Jenkins->Confifigure System->Global Properties(全局属性) ,添加三个全局变量

  3. 修改Linux上maven配置

    5.1 创建本地仓库 mkdir /root/repo

    5.2 修改配置文件vi /opt/maven/conf/settings.xml

    5.2.1



    5.2.2 声明maven下载jar包地址<mirrors>下增加mirror标签
 <mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>



6. 验证

自己把项目重新打包下

jenkins下master和slave

Jenkins 进行的大量工作(拉取代码 构建代码 发布运行),但是发现自己(master 主人)一个忙不过来,分发给一堆别的机器(slave --奴隶)干

master机器

1.启动GitLab

sudo gitlab-ctl restart 验证http://192.168.58.178:82

用户名 root 12345678

2. 启动jenkins

验证 http://192.168.178:8888/

sqxy 123456

slave机器

选择另一台Linux机器



slave机器也要配置了jdk和maven 并且路径要和在master里面配置的路径一致(因为master机器将来slave奴隶干活,slave工具 需要jdk和maven!)

# 在slave机器上配置jdk和maven
yum install java-1.8.0-openjdk* -y # 安装JDK
# 安装maven
yum install -y lrzsz
# 上传Maven软件到Linux上(Linux上安装maven)
# unzip apache-maven-3.3.9-bin.zip
mkdir -p /opt/maven # 创建目录
mv apache-maven-3.3.9/* /opt/maven # 移动文件
# linux下配置环境变量 (让系统可以知道maven安装位置)
vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export MAVEN_HOME=/opt/maven
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
source/etc/profile # 配置生效
mvn -v #查找版本
# 修改linux上maven配置(阿里云 下载maven路径)
mkdir /root/repo # 创建本地仓库目录
vi /opt/maven/conf/settings.xml
本地仓库改为 :/root/repo/



声明maven下载jar包地址下增加mirror标签

<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

在master机器联通slave机器

Github Action

GitHub把 克隆代码、编译代码,运行,单元测试,构建,和发布镜像这些称为Action。

awesome-actions: https://github.com/sdras/awesome-actions

Github Action 术语

  • workflow:一个.yml文件对应一个workflow,也就是一次持续集成,一个Github仓库可以对应多个workflow
  • job : 一个workflow由一个或多个job构成,每个job代表一个持续集成任务
  • step:每个 job 由多个 step 构成,一步步完成。
  • action:每个 step 可以依次执行一个或多个命令(action)
  • on : 一个 workflow 的触发条件,决定了当前的 workflow 在什么时候被执行。

    workflow

参考资料

思考

  1. DevOps应该是测试同学推动的

    测试同学如果要更高的工资需要向测试开发发展,测试开发要让开发“信服”需要编写自动化测试工具甚至是测试平台来参与到软件开发中去。

什么是Github Actions

Github Actions是Github为托管在github.com站点的项目提供的持续集成服务,于2018年推出。

Dockerfile

一个简单的配置文件,描述如何构建一个新的image镜像(必须是Dockerfile这个文件名),必须放在项目的根目录。

Dockerfile 语法

FROM  node:14
WORKDIR
COPY
## 构建镜像时,一般用于一些系统配置,安装必备的软件,可有多个RUN.
RUN
RUN
RUN
# 启动容器时,只能有一个CMD
CMD XXXX # 环境变量
ENV k1=v1
ENV k2 =v2

构建

docker build -t <name> . # 最后的 `.` 指Dockerfile在当前目录下
docker images

自动发布到测试机

github actions 监听git 提交, 并执行自定义命令

docker 一键部署开发环境

两者结合,即可·=自动发布到测试机

主要产出

  • dev 分支push时,自动部署到测试机

    主要内容
  • 配置测试机
  • 自动发布到测试机
  • 远程接口测试

去买一个便宜的服务器,操作系统选择centos 7.X

配置测试机

阿里云较贵,可以考虑 腾讯云,华为云等

学习用,只要是一个服务器而已,不用太考虑稳定性和其他扩展能力

创建work账号

处于安全考虑,日常使用不会用root账号登录,权限太高了

用root登录,创建work账号

adduser work
passwd work

添加work 的sudo 权限

whereis sudoer # 找到文件位置 /etc/studers
sudo u+w /etc/sudoers # 修改权限, U表示所有者, w 表示写权限, + 表示加
vim /etc/sudoers # 编辑文件
# 找到 `root ALL=(ALL) ALL`
再加一行 `work ALL=(ALL) ALL`
chmod u-w /etc/sudoers
然后使用worker 登录机器

ssk登录

登录信任

git

sudo yum -y install git
git --version

docker

安装docker:

docker 镜像加速

安装docker-compose

docker version
docker-compose --version

开放端口

开放需要的端口,否则外网无法访问该端口

B端 FE:80

B端 server:8081

C端:8082

统计服务,收集日志: 8083

admin FE: 8085

admin server: 8084

线上环境不会开放这么多的端口,而是使用nginx 反向代理

测试人员假装自己会“devops”的更多相关文章

  1. 51Testing专访史亮:测试人员在国外

    不久前,我接受了51Testing的访问,讨论了软件测试的一些问题.以下是全文. 1.史亮老师,作为我们51Testing的老朋友,能和我们说说您最近在忙些什么吗? 自2011年起,我加入Micros ...

  2. 测试管理_测试人员招聘[持续更新ing]

    招聘之难,难于上青天. 如何招聘到一位称心如意的员工想必是每个公司和管理者都要面临而且头疼的问题.尤其在初建团队或团队缺人的情况下问题会显得更加严重. 作为一个测试管理者,如何招聘到合适的测试人员是必 ...

  3. 如何避免测试人员提交重复的Bug

    我们在软件测试过程中,由于不同人员测试同一个项目,所以往往会出现Bug重复提交情况,导致对整个项目和人员产生影响: 浪费测试人员时间和精力,从而影响测试进度 浪费开发人员重复看Bug时间 若开发人员由 ...

  4. 软件测试 -- 测试人员和QA的区别

    软件测试人员的职责是尽可能早的找出软件缺陷,确保得以修复. 而质量保证人员(QA)主要职责是创建或者制定标准和方法,提高促进软件开发能力和减少软件缺陷. 测试人员的主要工作是测试,质量保证人员日常工作 ...

  5. APP测试中的头疼脑热:测试人员如何驱动开发做好自测

    如今,随着移动互联网的浪潮越翻越涌,移动APP测试工作的现状已经成了那本"家家难念"的经.不管公司大小,不管测试哪种类型的APP,让广泛测试者苦不堪言的就属重复性最多,测试工作量最 ...

  6. TCP/IP体系结构-测试人员必须理解的

    如果还想在测试这条路上继续走下去的话,那么下面这些东西就是我们必须去掌握的,至少你还不想止步于简单的黑盒测试--其实,一直想去接触Linux下的应用测试,这样能学到东西会很多,而且会非常的受用.之前听 ...

  7. iOS打包app发给测试人员测试

    说明:在项目开发过程中经常需要开发人员将项目打包成ipa包后,发给测试人员进行测试.本文贴图对打包的过程简单介绍. 一.Product ->archive (注意,不能是模拟器状态,如果当前调试 ...

  8. 作为测试人员,我是这么报BUG的

    在测试人员提需求的时候,大家经常会看到,测试员和开发一言不合就上BUG.然后开发一下就炸了,屡试不爽,招招致命. 曾经看到有个段子这么写道: 不要对程序员说,你的代码有BUG. 他的第一反应是:1.你 ...

  9. 测试面试话题8:测试人员如何让开发少写bug?

    在测试过程中和不同开发合作,往往会发现一些bug都是大多数开发人员常出现的错误,为了帮助开发人员,也减少测试的重复工作量,非常有必要将以往出现的bug做整理,分析原因,让开发知道这些bug, 避免再次 ...

随机推荐

  1. IDEA通过Jedis操作Linux上的Redis;Failed to connect to any host resolved for DNS name问题

    testPing.java public class testPing { public static void main(String[] args) { Jedis jedis = new Jed ...

  2. 接口测试实战| GET/POST 请求区别详解

    1.请求行的 method 不同:2.POST 可以附加 body,可以支持 form.json.xml.binary等各种数据格式:3.从行业通用规范的角度来说,无状态变化的建议使用 GET 请求, ...

  3. 标准输入输出() & 打印流 &配置文件

    public static void main(String[] args) { //System 类 的 public final static InputStream in = null; // ...

  4. for & while &迭代器

    for (int i = 0; i < 10; i++) { System.out.println("hello"); } int a=100; for (;a<110 ...

  5. R 数据可视化: PCA 主成分分析图

    简介 主成分分析(Principal Component Analysis,PCA)是一种无监督的数据降维方法,通过主成分分析可以尽可能保留下具备区分性的低维数据特征.主成分分析图能帮助我们直观地感受 ...

  6. 实战 | Linux根分区扩容

    一个执着于技术的公众号 一个执着于技术的公众号 前言 Linux系统作为服务器操作系统,经常遇到一个问题就是服务器分区磁盘空间不足需要扩容的情况.本文以linux系统最常见的发行版centos7系统为 ...

  7. 用 Docker 快速搭建 Kafka 集群

    开源Linux 一个执着于技术的公众号 版本 •JDK 14•Zookeeper•Kafka 安装 Zookeeper 和 Kafka Kafka 依赖 Zookeeper,所以我们需要在安装 Kaf ...

  8. 【机器学习基础】无监督学习(3)——AutoEncoder

    前面主要回顾了无监督学习中的三种降维方法,本节主要学习另一种无监督学习AutoEncoder,这个方法在无监督学习领域应用比较广泛,尤其是其思想比较通用. AutoEncoder 0.AutoEnco ...

  9. windbg的时间旅行实现对 C# 程序的终极调试

    一:什么是时间旅行 简而言之就是把程序的执行流拍成vlog,这样就可以对 vlog 快进或者倒退,还可以分享给别人做进一步的分析,是不是想都不敢想. 很开心的是 windbg preview 版本中已 ...

  10. [保姆级教程] 如何在 Linux Kernel (V5.17.7) 中添加一个系统调用(System call)

    最近在学习 <linux Kernel Development>,本书用的linux kernel 是v2.6 版本的.看完"系统调用"一节后,想尝试添加一个系统调用, ...