# 官方提供@yunTaoScripts DEVEOPS 🔥🔥

loading

# 配置docker远程调用

# 方式一

  • 因为本机器上运行的一个容器会作为镜像仓库,所以需要编辑 /usr/lib/systemd/system/docker.service,在 ExecStart 里添加 --insecure-registry=192.168.26.9:5000,又因为后续创建 jenkins 容器的时候,需要使用 vms9 上安装的 docker,所以需要添加-H tcp://0.0.0.0:2376
  • 最终的效果变成了:
ExecStart=/usr/bin/dockerd --insecure-registry=192.168.26.9:5000 -H tcp://0.0.0.0:2376 -H fd:// --containerd=/run/containerd/containerd.sock

  • 如果insecure-registry在daemon.json配了,就不用在ExecStart配了。
  • 注意参数顺序,可能有问题。

# 配置Registry

# 配置Jenkis

# 安装

::: 注意选择镜像

docker pull jenkins/jenkins:latest

:::

docker run -dit --name=jenkins -p 8088:8080 --restart=always -v jenkins_data:/var/jenkins_home jenkins/jenkins:latest
  • 等到出现 update 文件夹后,编辑/var/jenkins_home/hudson.model.UpdateCenter.xml,修改更新路径。
http://mirrors.tuna.tsinghua.edu.cn/jenkins
  • 编辑 /var/jenkins_home/updates/default.json
 {"connectionCheckUrl":"http://www.google.com/" 
 改成 
 {"connectionCheckUrl":"http://www.baidu.com/"
docker restart jenkins

# 修改时区

  • 打开 【系统管理】->【脚本命令行】运行下面的命令
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
  • 因为jenkins是java开发,java环境读取的时间是根据/etc/timezone的。
root@b62434a5f6ff:/# cat /etc/timezone
Etc/UTC+8

# 安装插件

  • 在 jenkins 主页面依次点击左侧的系统管理-插件管理-可选插件
  • 选中 dockerdocker-build-step,然后点击下面的直接安装。
  • 安装注入环境变量插件Environment Injector Plugin
  • Publish Over SSH:实现远程登录,执行docker命令,推荐使用

# 安装NPM

如果要构建nodejs应用,需要先下载nodejs到Jenkins容器中,确保容器可以运行nodenpm

# 构建脚本

if [ ! -d yunpress ];then
git clone git@github.com:yunTaoScripts/yunpress.git
echo "拉取完毕"
else
cd yunpress
git fetch
remote_version=`git log --pretty=oneline origin/main | head -n1 |awk '{print $1}'`
local_version=`git log --pretty=oneline | head -n1 |awk '{print $1}'`
if [ "$remote_version" != "$local_version" ];then
echo "远程版本和本地版本不一致,正在拉取同步。。。"
git pull git@github.com:yunTaoScripts/yunpress.git
else
echo "本地版本为最新版,无需更新。"
fi
fi

# 触发远程构建

注意⚠️

需要输入账号密码,否则可能权限不够。

curl -u yuntao:xxxxx http://jenkins.yuntao.work:8088/job/%E6%8E%A8%E9%80%81%E6%9E%84%E5%BB%BA%E9%95%9C%E5%83%8F/build?token=PUSH_IMAGE