2024年Linux最新DevOps(一) Jenkins+GitLab部署和流水线基础,2024Linux运维研发必问高级面试题

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  1. 自动化构建和部署:利用持续集成/持续部署(CI/CD)工具自动化构建、测试和部署过程。这样可以确保每次代码提交都可以快速地构建、测试和部署到生产环境。
  2. 版本控制:使用版本控制系统(如Git)来管理代码,并确保团队成员能够轻松地合作、追踪变更并回滚不必要的更改。
  3. 自动化测试:实施自动化测试,包括单元测试、集成测试和端到端测试,以确保代码质量和系统稳定性。自动化测试可以在代码提交后快速运行,提供及时的反馈。
  4. 基础设施即代码:使用基础设施即代码(IaC)工具(如Terraform、Ansible)来自动化基础设施的配置和管理。这样可以确保环境一致性,并使得基础设施的部署过程可重复且可靠。
  5. 持续监控和反馈:建立监控系统来实时监测应用程序和基础设施的运行状况,并采取预防性和响应性措施来处理问题。同时,收集用户反馈和性能指标,以不断改进产品。
  6. 持续改进:定期回顾和评估团队的工作流程和实践,寻找改进的机会并采取行动。通过不断迭代和优化,实现持续改进和提升交付效率。

在Devops实施过程中将Jenkins与GitLab结合使用是一种常见的做法,特别是在实现持续集成和持续交付(CI/CD)方面。

一、Devops基本环境部署

部署环境:centos7.6 服务两台:
       jenkins	192.168.0.108	4核心8G
       gitlab	192.168.0.109	4核心8G
      (建议购买腾讯云2核8G轻量级服务)

1.1: 部署jenkins

     官网地址:https://www.jenkins.io/download/
     选择安装稳定长期支持版本(LTS)
     sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
     sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
     yum install fontconfig java-17-openjdk
     yum install jenkins
     部署完成后启动jenkins,访问端口192.168.0.108:8080,选择安装基础软件。(jenkins启动需要一定时间)
     
     部署问题:部署过程中如出现ca报错重新安装根证书的软件包
              yum install -y ca-certificates

1.2:部署Gitlab

    官网地址:https://about.gitlab.com/install/#centos-7
    sudo yum install -y curl policycoreutils-python openssh-server perl
    sudo systemctl enable sshd
    sudo systemctl start sshd
    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    sudo systemctl reload firewalld
    添加Gitlab源
    curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
    因为安装的是社区版需要修改yum源
    在/etc/yum.reop/gitlab_gitlab-ee.repo文件中的gitlab-ee修改为gitlab-ce
       sed -i 's/\/gitlab-ee/\/gitlab-ce/g'  /etc/yum.repos.d/gitlab_gitlab-ee.repo
    安装gitlab
    sudo EXTERNAL_URL="192.168.0.109" yum install -y gitlab-ce
    随机密码存储在/etc/gitlab/initial_root_password
        注:使用yum list gitlab-ce --showduplicates | sort -r可以查看多个版本的gitlab可自行选择安装。

二、流水线基础介绍

 安装声名式插件Pipline: Declarative
 
@Library('jenkinslib') _
string workspace = "/opt/jenkins/workspace"
pipeline {
agent {node { label "master" //指定运行节点,any在任何节点上执行Pipline,none没指定的时候默认,label在指 定节点上运行。node可以指定额外多个选项
              customWorkspace "${workspace}" //运行工作目录}}

options { 
    timestamps() //日志会有时间
    skipDefaultCheckout() // 流水线定义中跳过默认的代码检出步骤
    disableConcurrentBuilds() //禁止并行
    timeout(time: 1, unit: 'HOURS')  //流水线超时设置1小时 }

 //stages(可添加多个阶段)此处添加GetCode、Build、CodeScan三个阶段
stages {
    //下载代码
    stage("GetCode"){ //阶段名称


为了做好运维面试路上的助攻手,特整理了上百道 **【运维技术栈面试题集锦】** ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,**小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。**

![](https://img-blog.csdnimg.cn/img_convert/668bd2d51ba4d9bdba97bfdd33bd51c4.png)

本份面试集锦涵盖了

*   **174 道运维工程师面试题**
*   **128道k8s面试题**
*   **108道shell脚本面试题**
*   **200道Linux面试题**
*   **51道docker面试题**
*   **35道Jenkis面试题**
*   **78道MongoDB面试题**
*   **17道ansible面试题**
*   **60道dubbo面试题**
*   **53道kafka面试**
*   **18道mysql面试题**
*   **40道nginx面试题**
*   **77道redis面试题**
*   **28道zookeeper**

**总计 1000+ 道面试题, 内容 又全含金量又高**

*   **174道运维工程师面试题**

> 1、什么是运维?

> 2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

> 3、现在给你三百台服务器,你怎么对他们进行管理?

> 4、简述raid0 raid1raid5二种工作模式的工作原理及特点

> 5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

> 6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

> 7、Tomcat和Resin有什么区别,工作中你怎么选择?

> 8、什么是中间件?什么是jdk?

> 9、讲述一下Tomcat8005、8009、8080三个端口的含义?

> 10、什么叫CDN?

> 11、什么叫网站灰度发布?

> 12、简述DNS进行域名解析的过程?

> 13、RabbitMQ是什么东西?

> 14、讲一下Keepalived的工作原理?

> 15、讲述一下LVS三种模式的工作过程?

> 16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

> 17、如何重置mysql root密码?

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

/bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面我将为您详细介绍一个运维工程师常用的 JenkinsGitLab 项目,包括项目的名称、描述、使用场景、配置方法和运行流程等方面的内容。 1. 项目名称:DevOpsPipeline 2. 项目描述:该项目是一个基于 JenkinsGitLabDevOps 自动化流水线,用于管理和协调多个开发团队的代码变更,并确保这些变更能够顺利地部署到生产环境中。 3. 使用场景: - 代码管理:使用 GitLab 托管代码仓库,并使用 Jenkins 进行持续集成和持续交付。 - 构建:使用 Jenkins 构建工具进行应用程序的编译和打包,生成可执行文件和 Docker 镜像。 - 测试:使用 Jenkins 调用测试工具进行自动化测试,包括单元测试、集成测试、性能测试等。 - 部署:使用 Jenkins 部署工具将应用程序部署到测试环境、预发布环境和生产环境中。 4. 项目配置: - GitLab:创建一个 GitLab 代码仓库,并将代码推送到该仓库中。 - Jenkins:创建一个 Jenkins 项目,配置 Jenkinsfile 文件,定义构建、测试和部署的流程,并设置触发器和构建参数等。 - 测试工具:根据项目需要选择合适的测试工具,如 JUnit、Selenium、JMeter 等,并在 Jenkins 中安装和配置相应的插件和工具。 - 部署工具:根据项目需要选择合适的部署工具,如 Ansible、Docker、Kubernetes 等,并在 Jenkins 中安装和配置相应的插件和工具。 5. 项目运行流程: - 提交代码:开发人员将代码推送到 GitLab 代码仓库中。 - 自动化构建:Jenkins 检测到代码变更,自动触发构建流程,编译应用程序并生成可执行文件和 Docker 镜像。 - 自动化测试:Jenkins 调用测试工具进行自动化测试,包括单元测试、集成测试、性能测试等。 - 自动化部署Jenkins 调用部署工具将应用程序部署到测试环境、预发布环境和生产环境中。 具体实现过程如下: 1)在 GitLab 中创建一个空项目,并将项目代码上传到该项目中。 2)在 Jenkins 中创建一个新的 Pipeline 项目,将 GitLab 项目的仓库地址添加到 Jenkinsfile 文件中,定义了一系列的 stages,例如代码拉取、构建、测试、部署等,如下所示: ``` pipeline { agent any stages { stage('Code Checkout') { steps { git branch: 'master', url: 'https://gitlab.example.com/username/project.git' } } stage('Build') { steps { sh 'mvn clean package' } } stage('Test') { steps { sh 'mvn test' } } stage('Deploy') { steps { sh 'ansible-playbook deploy.yml' } } } } ``` 3)在 Jenkins 中安装并配置相应的插件和工具,如 Maven、JUnit、Ansible 等。 4)在 Jenkins 中配置触发器,可以选择定时触发、代码变更触发、手动触发等方式。 5)在 Jenkins 中配置构建参数,如构建环境、构建版本等。 6)运行 Jenkins Pipeline 项目,Jenkins 将自动拉取 GitLab 项目中的代码,执行构建、测试和部署的操作,并生成构建报告和部署日志。 总之,该项目的目的是为了实现 DevOps 自动化流程,减少人工干预,提高应用程序的发布速度和质量,从而使开发团队能够更加专注于应用程序的开发和创新。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值