添加镜像检测删除脚本(后续ci构建脚本会用到):
```bash
# check-dev.sh
if [ $(docker ps -a --format {{.Names}} | grep runnertest-dev) ]
then
docker rm -f runnertest-dev
docker rmi runnertest-dev
fi
if [ $(docker ps -a --format {{.Names}} | grep runnertest-master) ]
then
docker rm -f runnertest-master
docker rmi runnertest-master
fi
```
添加Dockerfile文件
dockerfile FROM mcr.microsoft.com/dotnet/core/aspnet WORKDIR /app COPY out/ /app ENTRYPOINT [ "dotnet", "/app/runnertest.dll" ]
stages:pipeline的阶段列表。定义整个pipeline的阶段
stage:定义某个job的所在阶段。参考#1
script:(唯一一个必须写的参数)job执行过程中的命令列表
only/except:触发类型/限制job的创建条件。参考
tags:指定runner的tag,只有拥有指定tag的runner才会接收到这个任务
cache:缓存。可选部分目录或未被 git 追踪的文件进行缓存,
environment:指定部署相关任务的环境,并非真实环境,是对要部署到某环境的任务的归类。方便在gitlab上聚合以便进行回滚和重新部署操作,
artifacts:保留文档。在每次 job 之前runner会清除未被 git 跟踪的文件。为了让编译或其他操作后的产物可以留存到后续使用,添加该参数并设置保留的目录,保留时间等。被保留的文件将被上传到gitlab以备后续使用。
dependencies:任务依赖。指定job的前置job。添加该参数后,可以获取到前置job的artifacts。注意如果前置 job 执行失败,导致没能生成artifacts,则 job 也会直接失败。
yml阶段构建脚本(.gitlab-ci.yml) stages: - build - deploy-dev - deploy-master # 构建 build-job: stage: build only: - develop - master cache: untracked: true script: - dotnet restore - dotnet publish -o ./out -c Release artifacts: # 可以缓存在gitlab的流水线记录中,供直接下载 expire_in: 30 days paths: - out/ tags: - 109-runnertest-builder # 发布测试 deploy-dev-job: stage: deploy-dev only: - develop dependencies: - build-job # 这里一定要依赖build-job,不然dockerfile里面的out目录无法使用 script: - ls out/ - sh ./check-dev.sh - docker build -t runnertest-dev . # 这里可以添加将生成好的image上传到dockerhub或者docker本地仓库 ### 如果生成的镜像需要统一上传到仓库管理,则后面的逻辑可以分离到另外一个runner去执行 # 这里可以添加从dockerhub或本地仓库拉取指定镜像 - docker run -d --name runnertest-dev -p 10001:80 runnertest-dev tags: - 109-runnertest-deploy # 发布正式 deploy-master-job: stage: deploy-master only: - master dependencies: - build-job # 这里一定要依赖build-job,不然dockerfile里面的out目录无法使用 script: - ls out/ - sh ./check-master.sh - docker build -t runnertest-master . # 这里可以添加将生成好的image上传到dockerhub或者docker本地仓库 ### 如果生成的镜像需要统一上传到仓库管理,则后面的逻辑可以分离到另外一个runner去执行 # 这里可以添加从dockerhub或本地仓库拉取指定镜像 - docker run -d --name runnertest-master -p 10000:80 runnertest-master when: manual tags: - 109-runnertest-deploy 其他做完上面的工作之后,将代码提交到gitlab的develop或者master分支就会自动触发构建任务了(第一次运行会比较慢,因为要拉取netcore和docker镜像,所以在没开始学习这个教程之前可以将几个镜像都准备好)。
各个阶段效果图如下:
构建
发布
服务器运行之后docker容器状态:
网页访问api效果图: