从今天以及之後的几篇文章,将介绍如何打造 GitLab CI 流水线,以及如何透过 ArgoCD 来部署应用。
CI/CD 的目的是希望透过撰写脚本的方式,将软件开发到部属的流程自动化,使服务能够快速上线,并减少人为失误,下面就来介绍 CI/CD 工具到底可以帮助我们完成哪些工作。
在做测试或部属也好,需要有环境执行,但放在 Repository 上的只有程序码,没办法直接跑起来,所以 CI/CD 的第一步会是 Build ,在这个步骤,会使用专案的 Dockerfile 来 Build 出 Image,提供後续工作执行环境。
这个步骤会对建置好的 App 进行检查,像是能否成功执行、Coding Style 是否符合,最重要是会做 Unit Test,针对程序进行正确性的检验,通过测试环节,确保应用程序可以正常运作後,才能进入後续的部属任务。
测试完成後,需要将 Image 保存起来,提供部属环境做使用,所以这个步骤就是将 Image 上传到远端的 Container Registry 。
虽然已经对 Image 进行了多种测试,但因为环境配置不同,投入到正式环境可能又会遇到一系列的麻烦,所以在进入生产环境前,会先将程序放入到与生产环境相仿的测试环境,我们称之为 Staging , 在这里对服务做一次实际测试,确定没问题後,才能够正式上线。
所有的测试都没问题後,就可以将服务部属到生产环境,因为这个动作需要等待前一步完成後才能执行,所以会设定为手动触发。
这里的 Deploy 看似麻烦,其实只需要更新 Manifest 的 Image Tag 就行了,在之後的文章会详细说明怎麽做。
在 GitLab 要如何使用 CI/CD 工具,只需在专案里建置名为 .gitlab-ci.yml
的档案,GitLab 就会根据 yml 档建置出 CI/CD 流水线。下面就简单介绍 .gitlab-ci.yml
的基本格式。
Stage
代表着 CI/CD 里的其中一个步骤,一开始需要先定义好 Pipeline 中有哪些 Stages
,并设定好前後顺序。
stages:
- build
- test
- publish
- stg-deploy
- prod-deploy
Pipeline 会依序执行 build -> test -> publish -> stg-deploy -> prod-deploy 步骤
接着会在 Stage
里设置一到多个 Job
来完成此步骤的工作,而为了区分在开发、部属分支所需的 Job
不同,里面会设定要在哪个 Branch 才会触发。
job-name:
stage: build
only:
- branch
script:
- echo "My first job"
stage
only
script
设定好 Stage
和 Job
後,就可以建置出一个基本的 CI/CD 流水线,就来实际动手操作吧!
进入 Cloud Shell 网站,点击终端机输入指令
建立 .gitlab-ci.yml
档案
cd project && touch .gitlab-ci.yml
左上 Explorer -> Open Folder -> 选择 project 资料夹 -> Open
.gitlab-ci.yml
档案并贴上以下内容stages:
- build
- test
- publish
- stg-deploy
- prod-deploy
build:
stage: build
only:
- dev
- master
script:
- echo "build job"
test:
stage: test
only:
- dev
- master
script:
- echo "test job"
publish:
stage: publish
only:
- master
script:
- echo "publish job"
stg-deploy:
stage: stg-deploy
only:
- master
script:
- echo "Staging deploy job"
prod-deploy:
stage: prod-deploy
only:
- master
script:
- echo "Production deploy job"
when: manual
在这里定义了所需的 Stages 以及 Jobs ,且在 prod-deploy 会设定 when: manual 设定此 Job 为手动触发。
git add .
git commit -m "init .gitlab-ci.yml"
git push origin master
Enter
Username for 'https://gitlab.com':
Password for 'https://[email protected]':
到 GitLab 网站,点击之前建立的 web app 的 Repository
进入到 Repository 後,点击 CI/CD -> Pipelines
这里可以看到每一次 CI/CD 的运行结果。
点击运行结果就可以看到执行状态以及 Log 。
今天完成了 CI/CD Pipeline ,但对 Stage 我们还没有做任何实际意义上的工作,所以之後几天中会讲解要如何建立各个 Stage 已完成 CI/CD 所需步骤。
>>: 1.1 Design system - 为什麽要做?
地毯式搜索 Contains() | 字串之子 SubString() | 有没有这个人? IsN...
第三十天 各位点进来的朋友,你们好阿 小的不才只能做这个系列的文章,但还是希望分享给点进来的朋友,知...
今天开始我们来介绍一些已经有公开发布成果或是已经有成熟软件提供用户使用的公司产品。 索尼 (Sony...
Gradle 可以做的事情实在太多了,导致初学者很容易被其强大又神秘的架构吓到。因此笔者觉得有必要把...
忙碌的一天又过去了,下班回家头昏眼花的... 要完成铁人赛真的需要超凡意志,还好今天星期五... 好...