devops--搭建环境--全流程
1.git安装
在项目的Code(编码)阶段,我们需要将不同版本的代码存储到一个仓库中,常见的版本控制工具就是SVN或者Git,这里我们采用Git作为版本控制工具,GitLab作为远程仓库。
git的安装:参考官网,无脑下一步即可 官网地址:https://git-scm.com/
2.docker
2.1 docker安装
#下载Docker依赖组件 yum -y install yum-utils device-mapper-persistent-data lvm2 #设置下载Docker的镜像源为阿里云 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #安装docker yum -y install docker-ce #开机自启 systemctl enable docker --now systemctl status docker
2.2 Docker-compose安装
wget https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64
mv docker-compose-linux-x86_64 docker-compose
mv docker-compose /usr/bin
docker-compose version #查看版本
3.GitLab安装
3.1拉取镜像
# 查看镜像
docker search gitlab
# 拉取镜像
docker pull gitlab/gitlab-ce
3.2 准备docker-compose.yml文件
version: '3.1' services: gitlab: image: 'gitlab/gitlab-ce:latest' container_name: gitlab restart: always environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://192.168.11.11:8929' gitlab_rails['gitlab_shell_ssh_port'] = 2224 ports: - '8929:8929' - '2224:2224' volumes: - './config:/etc/gitlab' - './logs:/var/log/gitlab' - './data:/var/opt/gitlab'
#privileged: true
3.3 启动容器并访问
# 启动容器(初次启动,时间偏久)
docker-compose up -d
访问:http://192.168.11.11:8929即可。
效果:
3.4 查看初始用户名和密码
docker exec -it gitlab cat /etc/gitlab/initial_root_password
3.5 登录并修改密码
以root身份登录gitlab,首次登录需要修改密码
4. maven安装配置
Jenkins中对代码进行构建需要Maven的环境,而Maven需要Java的环境,接下来需要在Jenkins机器上安装JDK和Maven。
后续挂载到jenkins的容器数据卷中。
maven下载地址:https://maven.apache.org/download.cgi jdk下载地址:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
#解压压缩包,并配置Maven的settings.xml(追加)
<!-- 阿里云镜像地址 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!-- JDK1.8编译插件 -->
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
5. jenkins安装配置
5.1 拉取jenkins镜像
docker pull jenkins/jenkins
5.2 准备docker-compose.yml
version: "3.1" services: jenkins: image: jenkins/jenkins container_name: jenkins ports: - 8080:8080 - 50000:50000 volumes: - ./data/:/var/jenkins_home/ mem_limit: 8g security_opt: - seccomp:unconfined
5.3 设置数据卷data目录的权限
chmod -R a+w data/
5.4 启动容器
docker-compose up -d
5.5 设置Jenkins的下载地址
由于Jenkins需要下载大量内容,但是由于默认下载地址下载速度较慢,需要重新设置下载地址为国内镜像站后再重启
# 修改数据卷data中的hudson.model.UpdateCenter.xml文件 <?xml version='1.1' encoding='UTF-8'?> <sites> <site> <id>default</id> <url>https://updates.jenkins.io/update-center.json</url> </site> </sites> # 将下载地址替换为http://mirror.esuni.jp/jenkins/updates/update-center.json <?xml version='1.1' encoding='UTF-8'?> <sites> <site> <id>default</id> <url>http://mirror.esuni.jp/jenkins/updates/update-center.json</url> </site> </sites> # 清华大学的插件源也可以https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
5.6 重启jenkins
5.7 查看JenKins登录密码,并登录JenKins然后安装对应插件
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
输入管理员密码 - 选择插件来安装 - 推荐插件安装
然后等待插件安装成功进入首页。(可能会出现下载失败的插件,重新下载即可)
5.8 创建管理员用户,设置jenkinsURL
5.9 Jenkins配置JDK&Maven并保存
将maven和jdk移动至jenkins数据卷data下
6. Jenkins实现拉取-构建-发布
准备好GitLab仓库中的项目,并且通过Jenkins配置实现当前项目的DevOps流程。
构建Maven工程发布到GitlLab、Gitee、GitHub均可(gitlab借鉴https://www.cnblogs.com/liweifeng888/p/17754804.html)
6.1 拉取代码
-
点击Jenkins左侧新建任务(选择自由风格的项)
2.配置源码拉取地址
私有云需要账户认证(gitlab登录账户密码),配置后点击Credentials选择使用
3. 点击立即构建,查看构建日志
6.2 构建代码
配置Jenkins任务构建代码
立即构建测试,查看target下的jar包
6.3 配置Publish发布&远程操作
jar包构建好后,就可以根据情况发布到测试或者生产环境,此处需要用到之前下载好的插件Publish Over SSH
配置Publish Over SSH连接测试环境、生产环境
配置任务构建后的操作,发布jar包到目标服务
注意:Jenkins构建过程中,它以独立的进程运行,并且可能具有不同的环境配置。这意味着Jenkins可能无法直接访问系统环境变量中的Java路径,所以要写绝对路径。若指令执行失败,可以从绝对路径方向排查。
立即构建任务,并去目标服务查看
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类