如何构建一个简易的DevOps自动化解决方案?

2026-05-19 17:391阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计860个文字,预计阅读时间需要4分钟。

如何构建一个简易的DevOps自动化解决方案?

前言:公司设计的RDMS系统非常好用,我照猫画虎地设计了一个简单的DevOps系统,与大家分享,不足之处欢迎拍砖。

创建集群组+创建集群组的优点是,对项目创建

前言

公司设计的RDMS挺好用的,我也照猫画虎简单的设计一个DevOps系统,与大家分享,不足之处欢迎拍砖,以免误人子弟

前置条件

gitlab
gitlab-runner
k8s

1. gitlab创建群组

创建群组的好处是,对项目进行分组,群组内的资源可以共享,这里创建了一个tibos的群组

如何构建一个简易的DevOps自动化解决方案?

2. 在群组创建一个项目

这里创建一个空白项目,项目名为Gourd.Test,将项目克隆到本地,然后在该目录下创建一个.net core3.1的webapi项目,并推送到gitlab

3.编写dockerfile

FROM registry.cn-hangzhou.aliyuncs.com/wmowm/dotnet.core.aspnet:3.1 AS base WORKDIR /app EXPOSE 80 LABEL applabel=tibos FROM registry.cn-hangzhou.aliyuncs.com/wmowm/dotnet.core.sdk:3.1 AS build WORKDIR ../Gourd.Test COPY . . WORKDIR "/Gourd.Test" RUN dotnet publish "Gourd.Test.csproj" -c Release -o /app FROM base AS final WORKDIR /app COPY --from=build /app . RUN rm -rf appsettings.Development.json RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo 'Asia/Shanghai' >/etc/timezone ENTRYPOINT ["dotnet", "Gourd.Test.dll","-b","0.0.0.0"]

这里给镜像加了一个标签(LABEL applabel=tibos),方便清理

4.编写 gitlab-ci.yml

variables: PROJECT_NAME: gourd.test WEBAPI_DOCKERFILE_PATH: ./Gourd.Test/dockerfile stages: - build - deploy build: stage: build script: - echo "登录私有仓库" - docker login --username=${DOCKER_REPOSTORY_USERNAME} -p ${DOCKER_REPOSTORY_PASSPORD} ${DOCKER_REPOSTORY_ADDRESSURL} - imageversion=$CI_PIPELINE_ID - echo "开始构建镜像:${PROJECT_NAME}.${imageversion}" - docker build -t ${PROJECT_NAME}.${imageversion} . - echo "打标签:${DOCKER_REPOSTORY_ADDRESSURL}/${DOCKER_REPOSTORY_NAME}/${PROJECT_NAME}:${imageversion}" - docker tag ${PROJECT_NAME}.${imageversion} ${DOCKER_REPOSTORY_ADDRESSURL}/${DOCKER_REPOSTORY_NAME}/${PROJECT_NAME}:${imageversion} - echo "推送到中央仓库" - docker push ${DOCKER_REPOSTORY_ADDRESSURL}/${DOCKER_REPOSTORY_NAME}/${PROJECT_NAME}:${imageversion} - echo "清理未使用的镜像" - docker image prune -a -f --filter="label=applabel=tibos" - docker rmi $(docker images | grep "none" | awk '{print $3}') only: - main

白话文翻译ci配置
定义了两个变量,项目名称与dockerfile相对地址,然后执行构建步骤,构建脚本如下

  1. 登录docker私有仓库,这里是bp的阿里云的docker仓库,后文会讲如何bp
  2. 定义镜像版本号,这里直接取gitlab-ci内置的流水线编号作为版本号,gitlab-ci内置了很多环境变量,可以查阅文档
  3. 构建镜像
  4. 镜像打标签
  5. 推送到阿里云docker仓库
  6. 清理未使用且包含tibos标签的镜像
5.敏感信息,使用ci的变量进行保护

6.bp阿里云镜像仓库

先创建一个名称空间,然后根据自己的项目名称创建对应的仓库即可,也可以把外网的一些镜像打个标签,推送到自己的镜像仓库,这样从自己的镜像仓库拉取,速度会快很多

在镜像版本里查看自己推送的镜像,这些都是gitlab-ci 构建成功,推送过来的

7.注册runner

我这里是创建的团队runner,这样团队项目可以共享该runner,注册好后编辑runner,勾选运行未标记的作业,怎么注册gitlab-runner网上有很详细的教程,这里就不多赘述了

gitlab-runner job如下,可以看到.net core 构建还是挺快的

  • 做到这里ci部分就完成了,当我们提交代码的时候,会自动触发gitlab-ci,然后docker构建,并推送到镜像仓库,接下来是cd 部分
8.开启gitlab webhooks功能,将事件消息推送给指定的服务

这里写一个服务,用来接收gitlb webhooks 通过post发送的www.558idc.com/mggfzq.htm提供,感谢支持】

本文共计860个文字,预计阅读时间需要4分钟。

如何构建一个简易的DevOps自动化解决方案?

前言:公司设计的RDMS系统非常好用,我照猫画虎地设计了一个简单的DevOps系统,与大家分享,不足之处欢迎拍砖。

创建集群组+创建集群组的优点是,对项目创建

前言

公司设计的RDMS挺好用的,我也照猫画虎简单的设计一个DevOps系统,与大家分享,不足之处欢迎拍砖,以免误人子弟

前置条件

gitlab
gitlab-runner
k8s

1. gitlab创建群组

创建群组的好处是,对项目进行分组,群组内的资源可以共享,这里创建了一个tibos的群组

如何构建一个简易的DevOps自动化解决方案?

2. 在群组创建一个项目

这里创建一个空白项目,项目名为Gourd.Test,将项目克隆到本地,然后在该目录下创建一个.net core3.1的webapi项目,并推送到gitlab

3.编写dockerfile

FROM registry.cn-hangzhou.aliyuncs.com/wmowm/dotnet.core.aspnet:3.1 AS base WORKDIR /app EXPOSE 80 LABEL applabel=tibos FROM registry.cn-hangzhou.aliyuncs.com/wmowm/dotnet.core.sdk:3.1 AS build WORKDIR ../Gourd.Test COPY . . WORKDIR "/Gourd.Test" RUN dotnet publish "Gourd.Test.csproj" -c Release -o /app FROM base AS final WORKDIR /app COPY --from=build /app . RUN rm -rf appsettings.Development.json RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo 'Asia/Shanghai' >/etc/timezone ENTRYPOINT ["dotnet", "Gourd.Test.dll","-b","0.0.0.0"]

这里给镜像加了一个标签(LABEL applabel=tibos),方便清理

4.编写 gitlab-ci.yml

variables: PROJECT_NAME: gourd.test WEBAPI_DOCKERFILE_PATH: ./Gourd.Test/dockerfile stages: - build - deploy build: stage: build script: - echo "登录私有仓库" - docker login --username=${DOCKER_REPOSTORY_USERNAME} -p ${DOCKER_REPOSTORY_PASSPORD} ${DOCKER_REPOSTORY_ADDRESSURL} - imageversion=$CI_PIPELINE_ID - echo "开始构建镜像:${PROJECT_NAME}.${imageversion}" - docker build -t ${PROJECT_NAME}.${imageversion} . - echo "打标签:${DOCKER_REPOSTORY_ADDRESSURL}/${DOCKER_REPOSTORY_NAME}/${PROJECT_NAME}:${imageversion}" - docker tag ${PROJECT_NAME}.${imageversion} ${DOCKER_REPOSTORY_ADDRESSURL}/${DOCKER_REPOSTORY_NAME}/${PROJECT_NAME}:${imageversion} - echo "推送到中央仓库" - docker push ${DOCKER_REPOSTORY_ADDRESSURL}/${DOCKER_REPOSTORY_NAME}/${PROJECT_NAME}:${imageversion} - echo "清理未使用的镜像" - docker image prune -a -f --filter="label=applabel=tibos" - docker rmi $(docker images | grep "none" | awk '{print $3}') only: - main

白话文翻译ci配置
定义了两个变量,项目名称与dockerfile相对地址,然后执行构建步骤,构建脚本如下

  1. 登录docker私有仓库,这里是bp的阿里云的docker仓库,后文会讲如何bp
  2. 定义镜像版本号,这里直接取gitlab-ci内置的流水线编号作为版本号,gitlab-ci内置了很多环境变量,可以查阅文档
  3. 构建镜像
  4. 镜像打标签
  5. 推送到阿里云docker仓库
  6. 清理未使用且包含tibos标签的镜像
5.敏感信息,使用ci的变量进行保护

6.bp阿里云镜像仓库

先创建一个名称空间,然后根据自己的项目名称创建对应的仓库即可,也可以把外网的一些镜像打个标签,推送到自己的镜像仓库,这样从自己的镜像仓库拉取,速度会快很多

在镜像版本里查看自己推送的镜像,这些都是gitlab-ci 构建成功,推送过来的

7.注册runner

我这里是创建的团队runner,这样团队项目可以共享该runner,注册好后编辑runner,勾选运行未标记的作业,怎么注册gitlab-runner网上有很详细的教程,这里就不多赘述了

gitlab-runner job如下,可以看到.net core 构建还是挺快的

  • 做到这里ci部分就完成了,当我们提交代码的时候,会自动触发gitlab-ci,然后docker构建,并推送到镜像仓库,接下来是cd 部分
8.开启gitlab webhooks功能,将事件消息推送给指定的服务

这里写一个服务,用来接收gitlb webhooks 通过post发送的www.558idc.com/mggfzq.htm提供,感谢支持】