最后更新2022/03/13
先到menu source repository里建立repository,还是不很好找,source repository在CI/CD分类里面。
点右上角的add repository按钮,输名字devops-repo,选择好对应的project就创建完了,然后开个cloud shell,clone一下repository:
gcloud source repos clone devops-repo
然后用cloud console提供的edit,在devops-repo目录下搞个main.py的文件,实验中用的是python flask的web server example
再搞一个templates子目录,把index.html和layout.html放进去,这个是网页;
把requirements.txt放到devops-repo,这个是运行python需要的依赖,里面有flask和itsdangerous版本要求信息
然后回shell,在devops-repo执行add,把所有文件添加到git跟踪里面:
git add --all
配置一下git全局信息,只需要一次:
git config --global user.name “Harry”
git config --global user.email “xxxx.xxxx”
commit(这是local commit):
git commit -a -m “init commit”
再push到repository:
git push origin master
这时在repository web就能看到新添加的各个文件和目录结构了。
下一个,再搞个Dockerfile,用于docker build:
FROM python:3.7
WORKDIR /app
COPY . .
RUN pip install gunicorn
RUN pip install -r requirements.txt
ENV port=80
CMD exec gunicorn --bind :PORT --workers 1 --threads 8 main:app
据说gunicorn是web server,那和flask有啥区别呢?可能,flask是web frame,但本身并非server,需要一个web server提供基础支持,以后再研究,其它的都一看便知,必须的。
build一下docker:
gcloud builds submit --tag gcr.io/$DEVSHELL_PROJECT_ID/devops-image:v0.1 .
gcr.io/$DEVSHELL_PROJECT_ID就是在repository创建的时候自动生成的目录,用于存放build的devops-image文件。然后在cloud console container registory page应该能看到生成的文件。container registory还是很难找,在CIDI分类里。
下面要创建个承载docker的vm,和创建普通vm一样,但是有一个container一项,要增减内容,点进去之后image要选刚才生成的devops-image
再到cloud build(还在CI/DI子菜单里),看看build history,应该有一个新的entry,下面做个trigger,这样以后就自动build,不用每次手动了:
点trigger,此时应该是空的;
右侧上面有manage repositories,会显式可用的repositories
在对应的repository右边有三个竖点,点一下能看到add trigger选项,加一个。
填完trigger名字之后,在下面有Source->Branch,选.* any branch,这样就不会单独只build master(缺省)
再往下,Configuration里面有type,选Dockerfile
其它都是缺省,然后create,再run一下验证,然后回到history看执行行情况,注意,这个run test可能不成功,因为刚才已经有了一个build,也就是文件存在了,看详细的trigger执行可以看到问题所在。
再执行一下commit和push,然后看trigger history,这时候挥发先trigger成功被触发,并执行成功。
查看具体execute detail,能看到生成的image地址,把这个加到新创建vm的container image里面(不是boot disk那个,有单独container一大项),理论上就可以deploy了,但我做室验没成功,时间太紧,以后再找机会,再搞一次。