淘先锋技术网

首页 1 2 3 4 5 6 7

by: 雪月三十

DevOps流程图
在这里插入图片描述

DevOps介绍

命名

DevOps是Dev和Ops的结合
Dev(developer开发)
Ops(operation运维)

矛盾

在企业中dev和ops是有一种天然的矛盾,dev要求的是快速迭代,给公司挖掘出商业的价值,而ops则是强调的稳定,不让你如此快的开发,以稳定为主,不希望动代码(if no problem, don’t touch it),所以他们之间有种天然的矛盾。

所以devops就是用来解决这双方的矛盾的,总的来说就是以合作为前提,相互支持,保证在软件开发的流程中,仍高效稳定。

职责

devops的职责就是通过自动化的形式 保证软件开发过程中的快速迭代和保证软件最后部署的稳定性

很多时候也会把Sec揉入到devolove中,有时候也会称之为DevSecOps

DevOps环境搭建

笔者对于整个自动化的流程以及devops架构比较感兴趣 即兴学习了一下 并配上实操过程中的大致流程

本次搭建所用到的自动化项目/工具
Gitlab、Jenkins 、Docker、Maven
在这里插入图片描述

硬件配置

两台机器都满足>=2c4g即可
我用到的配置
在这里插入图片描述

Gitlab

单独拿出一台服务器当作Gitlab仓库

官网

about.gitlab.com
https://docs.gitlab.com/ee/install/docker.html

安装

采用docker来安装

docker-compose.yml 编写
vim /~/gitlab/docker-compose.ym

version: '3.6'
services:
  web:
    image: 'gitlab/gitlab-ce:latest'
    restart: always
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://35.241.71.137'   #填写本机ip和端口
        gitlab_rails['gitlab_shell_ssh_port'] = 2222   
        # Add any other gitlab.rb configuration here, each on its own line
    ports:
      - '80:80'
      - '443:443'
      - '2222:2222'
    volumes:
      - '$GITLAB_HOME/config:/etc/gitlab'
      - '$GITLAB_HOME/logs:/var/log/gitlab'
      - '$GITLAB_HOME/data:/var/opt/gitlab'
    shm_size: '256m'

添加全局变量

vim /etc/profile

#写以下内容
export GITLAB_HOME=$HOME/gitlab 

启动gitlab容器

初始化设置

访问http://35.241.71.137地址后 进行登录
初始用户名:root
初始密码:cat /etc/gitlab/initial_root_password (需进入容器)

cat /etc/gitlab/initial_root_password

在这里插入图片描述
可以看到root账号密码
再次访问输入密码即可进入gitlab 及时更改密码防止忘记

这样第一步push环境就搭建完成了

在这里插入图片描述

Maven

装在另一台服务器中

官网

https://maven.apache.org/

下载

wget https://dlcdn.apache.org/maven/maven-3/3.9.3/binaries/apache-maven-3.9.3-bin.tar.gz
tar -zxvf apache-maven-3.9.3-bin.tar.gz
mv apache-maven-3.9.3-bin maven
mv maven /usr/local

https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
java也需要提前下载 但无需设置环境变量

配置

vim /usr/local/maven/conf/settings.xml
#添加仓库源和jdk8的配置
#https://blog.csdn.net/lee_yanyi/article/details/124774038

Jenkins

官网

https://www.jenkins.io

下载

https://www.jenkins.io/download/

在这里插入图片描述
下载最新的lts版本即可
在这里插入图片描述

docker pull jenkins/jenkins:2.401.2-lts

启动

编写docker-compose

version: "3.1"
services:
  jenkins:
     image: jenkins/jenkins:2.401.2-lts
     container_name: jenkins
     ports:
       - 80:8080
       - 50000:50000
     volumes:
       - ./data/:/var/jenkins_home/

在这里插入图片描述

初始化设置

查看后台管理密码

docker logs -f jenkins

访问地址
http://35.187.205.250/login?from=%2F
在这里插入图片描述
输入该密码
在这里插入图片描述

安装插件

选择插件来安装->安装
因源仓库在国外 可以选择换源来安装插件 就不详细写了

在这里插入图片描述
等待安装即可 出现安装错误可无视 不重要

安装完成后 下载我们用到的两个插件
Git Parameter
Publish Over SSH

在这里插入图片描述

配置maven和java

#将java和maven文件夹移动到jenkins挂载的data目录下
pwd
/usr/local/docker/jenkins_docker/data

mv /usr/local/jdk ./data
mv /usrlocal/maven ./data

在这里插入图片描述
我这里的映射目录为 /var/jenkins_home 根据个人目录进行填写
在这里插入图片描述
在这里插入图片描述

存储项目路径

这里设置pull下来的代码 存放的服务器及路径 前提是要有publish-over-ssh插件 前面已经安装过了

name随意 hostname填写你想要存放代码的服务器 为了方便 这里我就继续使用本机来进行操作
35.187.205.250(安装Jenkins的机器)
打开use password authentication使用ssh密码进行登录验证
在这里插入图片描述点击测试 若没有创建remote directory的话 会报错

在这里插入图片描述
创建好后 再次进行测试

在这里插入图片描述出现success即可保存设置

在这里插入图片描述

本地构建项目

创建项目

在这里插入图片描述

编写项目

在这里插入图片描述

package com.xueyue.mytest.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
    @GetMapping("/repositories")
    public String test(){
        return "Hello Jenkins!";
    }
}

运行访问

在这里插入图片描述

push代码

写的比较繁琐 其实大家都会
在这里插入图片描述
使用vcs创建本地仓库
在这里插入图片描述
提交
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

拉取项目

在这里插入图片描述

新建任务

在这里插入图片描述

创建任务

在这里插入图片描述

源码管理

在这里插入图片描述

构建项目

在这里插入图片描述

查看控制台输出

在这里插入图片描述

构建项目

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

点击保存 再次构建即可
在这里插入图片描述

使用docker运行项目

在这里插入图片描述
在这里插入图片描述
保存后再次再次进行构建 会发现jar包已经被复制到了我们的物理机的/usr/local/repositories(在存储项目路径中我们已经设置好了)
在这里插入图片描述
这里可以看到已经在目录下看到了我们的项目
[图片]
创建docker文件夹、dockerfile、docker-compose文件
在pom.xml文件中新增finalName命名jar文件
在这里插入图片描述
Dockerfile

FROM java:openjdk-8u111-jre
COPY mytest.jar /usr/local
WORKDIR /usr/local
CMD java -jar mytest.jar

Docker-compose

version: '3.1'
services:
  mytest:
    build:
      context: ./
      dockerfile: Dockerfile
    image: mytest:v1.0.0
    container_name: mytest
    ports:
      - 8081:8080

对项目Send build artifacts over SSH再次进行设置
在这里插入图片描述
之后将项目重新git push一下 然后构建项目
在这里插入图片描述
在这里插入图片描述
很完美 这样一个简单的自动化流程就结束了
在这里插入图片描述
在这里插入图片描述

总结

笔者一直对于DevOps这种自动化流程饶有兴致
实操了一波 学到不少知识
篇幅太长了 就没有把对于代码的安全校验加上
很多插件大家可以自行探索

参考:
https://www.bilibili.com/video/BV1zk4y1N7Qh/?spm_id_from=…top_right_bar_window_history.content.click&vd_source=352711a1c3edf5811730441eadc1720a
https://www.bilibili.com/video/BV1sV4y117kK/?p=1