用 DTM Tools 实现基于 Gitlab,Argo CD 和 Gitlab CI 的 CICD 流程¶
DevStream 抽象了2个概念:Tools 和 Apps。
在前一个用户场景 里介绍了 "Apps",你可以用 "Tools" 实现一样的效果。具体方法如下:
配置环境变量¶
你需要配置以下两个环境变量:
配置文件¶
YAML
config:
state:
backend: local
options:
stateFile: devstream.state
vars:
gitlabUser: YOUR_GITLAB_USERNAME
dockerUser: YOUR_DOCKERHUB_USERNAME
app: testapp
tools:
- name: helm-installer
instanceID: argocd
- name: repo-scaffolding
instanceID: myapp
options:
destinationRepo:
owner: [[ gitlabUser ]]
name: [[ app ]]
branch: master
scmType: gitlab
# set env GITLAB_TOKEN
token: [[ env GITLAB_TOKEN ]]
sourceRepo:
org: devstream-io
name: dtm-repo-scaffolding-python-flask
scmType: github
- name: gitlab-ci
instanceID: flask
dependsOn: [ "repo-scaffolding.myapp" ]
options:
scm:
owner: [[ gitlabUser ]]
name: [[ app ]]
branch: master
scmType: gitlab
token: [[ env GITLAB_TOKEN ]]
pipeline:
language:
framework: flask
name: python
imageRepo:
user: [[ dockerUser ]]
# set env IMAGE_REPO_PASSWORD
password: [[ env IMAGE_REPO_PASSWORD ]]
- name: argocdapp
instanceID: default
dependsOn: [ "helm-installer.argocd", "gitlab-ci.flask" ]
options:
app:
name: [[ app ]]
namespace: argocd
destination:
server: https://kubernetes.default.svc
namespace: default
source:
valuefile: values.yaml
path: helm/[[ app ]]
repoURL: ${{repo-scaffolding.myapp.outputs.repoURL}}
token: [[ env GITLAB_TOKEN ]]
imageRepo:
user: [[ dockerUser ]]
password: [[ env IMAGE_REPO_PASSWORD ]]
需要相应更新上述配置文件里的 "YOUR_GITLAB_USERNAME" 和 "YOUR_DOCKERHUB_USERNAME"。
注意:
上述配置运行的前提是你的 GitLab
已经配置好了共享 runner 来执行 ci
操作,如果你想要自动创建一个 runner, 你可以参考 gitlab插件文档 来配置由 DevStream
来创建一个项目 runner。
执行¶
首先需要基于配置文件来初始化插件:
Bash
# this downloads the required plugins, according to the config file, automatically.
dtm init -f config.yaml
然后运行如下命令让配置生效:
现在我们就可以看到 GitLab
中已经创建了对应的仓库并且 CI
把生成的项目镜像推送到了 Dockerhub
仓库。
在你的 Kubernetes
集群中已经创建了对应的应用。