运维笔记 -- CI/CD 之 docker,jenkins,gitlab,nginx

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/duxiangwushirenfei/article/details/81809084

#前言
近期归整的知识有点杂,每天工作也是近两年最为紧凑的阶段。还是先说需求,一个工程的持续发布,对应的测试环境时基础的python + supervisor形式,新切一个环境出来用docker做。话说之前知道大概的流程是什么样,实际动手操作还是遇到各种问题,机器环境CentOS 7.5。

nginx

这个不必多说,多处都有安装使用文档。所遇到问题是笔者拿到机器是新申请的没有多想就安装了一个nginx,但后来发现机器申请下来会有同事先做init操作,其中就安装了我司应给定配置的nginx。所以自己安装的不能使用,直接yum 卸载,但同时会卸掉默认安装nginx时带有的一些系统设置。恢复过程:
1,CentOS启动命令systemctl 对应的启动文件路径是 /usr/lib/systemd/system 之前自己安装时覆盖了下面的 nginx.service,卸载后又删除了,那么初始化的nginx的就没启动,手动添加相关信息。
2,在nginx没法启动过程中,以为是安装nginx覆盖了初始化的nginx信息,手动删除相关遗留文件时误操作覆盖了初始化的nginx命令,导致nginx的可执行命令文件被替换成了一个空的同名文件。后续折腾半天才发现不对,解决方法是去其他机器上拷贝一个nginx命令文件。nginx命令路径:
/nginx_install_dir/sbin/ 下的nginx可执行文件。

nginx命令:

# 查看nginx信息
nginx -V
# 手动启动nginx
nginx
# 手动停止nginx
kill -QUIT `cat /var/run/nginx.pid`
# 检查nginx conf是否合法
nginx -t # 或者 nginx -t -c your_config.conf

Jenkins + Gitlab

在Jenkins中可以安装Gitlab插件用以从gitlab中触发Jenkins构建工程。
Jenkins在Job 配置中设置“构建触发器”,指定git能够触发的分支,以及gitlab触发操作时附带的Secret token。同时可以设置Jinkins的构建响应哪些分支的推送,默认构建的分支名称等等。

Gitlab在工程的settings中Integration创建webhook,将Jenkins中的gitlab触发器设置处提供的钩子地址设置在此,并且配置与其相同的Secret token。同时可以设置哪些操作将触发这个网络钩子。以此完成代码自动更新。

docker 启动工程

关于docker之前有过两篇比较详细介绍,参见docker 笔记一docker 笔记二

docker权限

提供的Jenkins中执行的ci脚本用户为指定的一个 w_user,但是机器上安装的默认是root用户才能够执行docker相关命令,此处新建分组来修改docker的执行权限,然后让w_user能够执行。修改docker.sock权限,操作如下:

# docker.sock这个套接字文件默认是root用户,root组可读写
$ ls -la /var/run/docker.sock
srw-rw----. 1 root root 0 81 14:44 /var/run/docker.sock
# 新建一个分组docker
$ groupadd docker
# 修改docker.sock所属分组为docker
$ chown root:docker /var/run/docker.sock
# 将w_user用户添加到docker分组
$ usermod -aG docker w_user
$ ll -la /var/run/docker.sock
srw-rw----. 1 root docker 0 81 14:44 /var/run/docker.sock

如果你的docker分组已经存在,那可以直接将w_user用户添加至docker分组

docker cache

docker 笔记二 中有过对docker file编写是利用cashe的描述,再详细些。
1,docker cashe的自动复用是一个层层递进的关系。假设step 4 发生变化不在使用cashe则往后的步骤 step 5,step6…都将不在使用cashe
2,ADD 命令与 COPY 命令中所添加或者拷贝的文件内容发生变化将不再复用本层的cashe,转而重新构建中间层。
3,RUN 命令存在外部依赖是不在复用中间层,如 RUN apt update
4,执行docker build 命令时可以手动指定不使用cashe,
docker build -f your_docker_file --no-cache
具体使用依据各种使用场景变化,能够利用cashe的自然大大提高了build效率,而且还节省了镜像的存储空间。

git command

常见的git command自不必赘述,在此建议平日使用git能够用命令行的尽量不要用工具。遇到很多,做了很久开发的人不懂git基本使用。
1,如何比对某一文件是否在git当前版本中做过修改?
git rev-parse HEAD 能够获得当前工程完整的版本号,
也可以 git rev-parse --short HEAD
获取文件的没有找打一个类似命令,不过 git rev-parse 提供了Options for Files没有找到具体调用方法。变相可以:
git log your_file | awk '{print 2}' 获取某个文件最近一次提交的版本号。
2,git merge 单个commit

git checkout target_branch
git cherry-pick commit_version_id

这样就把 commit_version_id 提交的修改合并到了 target_branch上。

Linux command

基础命令

1,lsof -> ss
太久没用lsof了,发现已经出了替代的命令 ss,
ss -lnp | grep 8080

2,man
查看command的详细说明,MacOS也能使用

3,adduser 和 useradd
adduser your_user 会建立为 your_user建立/home/your_user 目录,要求输入登录密码是可登录用户,useradd则不会,是三无用户。

4,chown
修改文件所属用户,或者文件所属用户组
chown your_owner [: your_group] your_file

5,usermod
修改用户相关信息,包括用户所属组 用man查看详细用法

6,top
top自不必说,这是在top状态下可以按 1 查看cup个数,还可以按2,z,m等自行尝试,man查看详细用法。

7,w
查看机器负载,具体数值依据机器不同配置而异。

postgresql

pg是应该详细梳理下,暂且先记录类似mysql 的dump数据用法吧。

# dump 数据
pg_dump -hhost_ip -Udb_user -dyour_db > your_target.sql
# 导入数据到指定的库
psql -hhost_ip -Udb_user -dyour_db -f your_target.sql

猜你喜欢

转载自blog.csdn.net/duxiangwushirenfei/article/details/81809084