什么是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. 【大话云原生】kubernetes灰度发布篇-从步行到坐缆车的自动化服务升级

    此文系[大话云原生]系列第四篇,该系列文章期望用最通俗.简单的语言说明白云原生生态系统内的组成.架构以及应用关系.从这篇开始我们要开始针对Kubernetes进行介绍了,本文内容如下: 一.Kuber ...

  2. Antd Modal 可拖拽移动

    一 目标: 实现antd Modal 弹窗或者其他弹窗的点击标题进行拖拽的效果 二 准备及思录: 1.使用antd  Modal 组件,要想改变位置需要改变Modal style 的left 和top ...

  3. 100ms的SQL把服务器搞崩溃了

    前言 一个项目上线了两个月,除了一些反馈的优化和小Bug之外,项目一切顺利:前期是属于推广阶段,可能使用人员没那么多,当然对于项目部署肯定提前想到并发量了,所以早就把集群安排上,而且还在测试环境搞了一 ...

  4. 详解 Java 17 中新推出的密封类

    Java 17推出的新特性Sealed Classes经历了2个Preview版本(JDK 15中的JEP 360.JDK 16中的JEP 397),最终定稿于JDK 17中的JEP 409.Seal ...

  5. 【总结】2022GDOI普及组 没得游记

    因为是线上,所以没得游记 Day -3 学校安排去7班上课,好耶! 上午全是主科,有一节生物 被你七班捧上天了 被你七班造谣说我暴踩Everyone,还传到九班,给我玩阴的是吧 下午模拟赛,初一第一 ...

  6. Web3.0应用程序架构

    Web 3.0 应用程序(或"DApps")的架构与 Web 2.0 应用程序完全不同. 以博客园为例,这是一个简洁的博客网站,用户可以发布自己的内容并可以评论他人的内容进行互动. ...

  7. unity---射线

    射线 Ray ray= Camera.main.ScreenPointToRay(Input.mousePosition);//获得鼠标射向的射线 RaycastHit hit;//射线碰撞物体 if ...

  8. SpringBoot实现基于token的登录验证

    一.SpringBoot实现基于token的登录验证 基于token的登录验证实现原理:客户端通过用户名和密码调用登录接口,当验证数据库中存在该用户后,将用户的信息按照token的生成规则,生成一个字 ...

  9. RabbitMQ 环境安装

    每日一句 Wisdom is knowing what to do next, skill is knowing how to do it, and virtue is doing it. 智慧是知道 ...

  10. Docker权限 “Got permission denied while trying to connect to the Docker daemon socket at unix:///var/”

    问题及解决办法 在普通用户下执行docker命令需要用sudo,没加sudo出现了下图所示的提示: 从上图看出,权限不足连接/var/run/docker.sock,我们看下这个文件: 可以看出,这个 ...