您的位置 首页 > 雕刻资讯

生孩子全记录deliveryvlog DevOps之Gitlab

这篇文章给大家聊聊关于生孩子全记录deliveryvlog,以及DevOps之Gitlab对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

随着公司项目使用gitlab越来越多,业务发布的次数越来越频繁,对于发布效率提出了更高的要求。从2012开始,Gitlab官方开始集成了ContinuousIntegration(CI);ContinuousDelivery(CD)功能。本文主要针对该功能的实践做一个分享。

GitLabCI/CD可以做很多事情,下图展现了GitLabCI/CD工作流程中整个的服务能力,而无需使用外部工具来交付软件。

在介绍实践方案之前,我们先简单的了解一下和ContinuousIntegration(CI);ContinuousDelivery(CD)功能有关的相关知识。

就是一次git的提交,默认提交时会触发pipeline。

不同stage下的不同job组成的集合,即一次流水线。

单独执行每个Job的agent或者服务器,一个ob最终会分配到某个Runner执行。

一个阶段stage,里面可能包含很多个job,同一个阶段里面的job会并行执行。

一次pipeline其实相当于一次任务构建,里面可以包含多个流程,如安装依赖、运行测试、编译代码、部署测试服务器、部署生产服务器等。任何提交或者MergeRequest的合并都可以触发pipeline,触发pipeline创建的方式主要有如下。如需详细了解,请查阅官网https://about.gitlab.com/blog/2019/07/12/guide-to-ci-cd-pipelines/

下表对gitlab11.11.4版本中.gitlab-ci.yml文件里常用的关键字参数进行简单说明。如需深入了解可查阅官方文档https://docs.gitlab.com/ee/ci/yaml/

为管道中的所有作业定义CI/CD变量。

#ForDebian/Ubuntu/Mint\ncurl-Lhttps://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh|sudobash\n\n#ForRHEL/CentOS/Fedora\ncurl-Lhttps://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh|sudobash安装指定的gitlab-runner版本,比如这里安装11.11.4版本。

#forDEBbasedsystems\nsudoapt-getinstallgitlab-runner=11.11.4\n\n#forRPMbasedsystems\nsudoyuminstallgitlab-runner-11.11.4点击左侧栏Settings;CI/CD;Runners;Collapse获取runner的token,如下图。

获取runner的token

FROMdebian:stretch\n\n#准备软件包文件\nADDsoft//data/soft/\n\n#安装基本软件\nRUNDEBIAN_FRONTEND=noninteractiveapt-getupdate\\\n&&DEBIAN_FRONTEND=noninteractiveapt-getinstall-yvimhtopwgetdnsutilsdmidecodeipmitoolpciutilsperl\\\nrsyncscreenlesssysstatatstresstcpdumplsofcurltelnetntprsyslogsudolocaleslogrotatecronsupervisor\\\nnumactlopenssh-server-x509openssh-clientiptablesgawkfilebeatmongodb3.4.16graphviz\\\n&&apt-getclean\n\n#安装开发环境\nRUNDEBIAN_FRONTEND=noninteractiveapt-getupdate\\\n&&apt-getinstall-ypythonpython-pipgccg++build-essentialpython-devpython-setuptoolspython-smbus\\\nbuild-essentiallibncursesw5-devlibgdbm-devlibc6-devzlib1g-devlibsqlite3-devtk-devlibssl-devopenssl\\\nlibffi-devcmakeautomakepython-setuptoolslibtcmalloc-minimal4sockstatstracegdbgraphviz\\\n&&apt-getclean\n\n#安装python3.7\nRUNcd/data/soft/&&tarxf/data/soft/Python-3.7.0.tgz&&cdPython-3.7.0&&./configure--enable-optimizations--with-ssl-default-suites=openssl--enable-shared\\\n&&make&&makeinstall&&cplibpython3.7m.so.1.0/lib64/&&ldconfig&&rm-rf/data/soft\n\n#业务启动脚本\nCOPYentrypoint.sh/sbin/entrypoint.sh\nENTRYPOINT["/bin/bash","-x","/sbin/entrypoint.sh"]\n那么怎么把docker镜像推送到docker仓库呢?可在.gitlab-ci.yml文件中进行描述,把build好的镜像推送到gitlab内置的registry中。关于gitlab内置的registry部署可参考官网说明(https://docs.gitlab.com/ce/user/packages/container_registry/index.html)。下面为打包并上传容器镜像stage的主要内容。

build_push:\nonly:\nrefs:\n-tags\nvariables:\n-$CI_COMMIT_REF_NAME=~/^rel_[0-9].*$/#规定必须通过打tag且名字为rel_xxx的格式才触发pipeline。\ntags:\n-docker\nstage:ex_build\nscript:\n#builddockerimage\n-dockerlogin$DOCKER_REGISTRY\n-echo"$dockerpull$BUILD_IMAGE"\n-dockerpull$BUILD_IMAGE#防止$BUILD_IMAGE更新后,runner会缓存,故在build之前先pull一次。\n-echo"$dockerbuild-t$image"\n-dockerbuild--no-cache-t$image.\n-echo"$dockertag$image$latest"\n-dockertag$image$latest\n\n#pushdockerimage\n-echo"$dockerpush$image"\n-dockerpush$image\n-echo"$dockerpush$latest"\n-dockerpush$latest\n-dockerlogout$DOCKER_REGISTRY\nwhen:manual#手工确认\nallow_failure:false\nenvironment:\nname:buildgitlab-runner中对应job的部分日志截图如下:

job截图

deployment_production:\nonly:\nrefs:\n-tags\nvariables:\n-$CI_COMMIT_REF_NAME=~/^exrel_[0-9].*$/\ntags:\n-docker\nstage:ex_deployment_production\nscript:\n#更新当前环境下指定渠道\n-deploy_service${CI_ENVIRONMENT_NAME}"$image"#image为持续集成build后push到registry的docker镜像。deploy_service是封装容器发布过程的函数。该函数主要是根据传入的image,请求k8s的kube接口进行微服务发布。\nwhen:manual\nenvironment:\nname:productiongitlab-runner中发布game微服务的job日志截图如下。

job截图

生孩子全记录deliveryvlog和DevOps之Gitlab的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023