安装 docker

https://www.docker.com/products/docker-toolbox

加速器

https://dashboard.daocloud.io/mirror

  1. 点击立即开始-接入自有主机-我已有一台主机-选择MAC-直接点击
  2. 根据步骤 直至控制台显示有你的主机
  3. 去镜像仓库搜索 gitlab-ce
部署镜像可在命令行部署,或者刚刚下载的 Gui 工具内
  1. 部署好镜像,打开映射的主机端口,会显示重置密码(密码应为 八位+英文字符限制)默认用户名 root
  2. 安装 runner 镜像,可在 Daocloud 中部署到主机
  3. 注册runner
在刚刚安装的 gitlab 中创建项目,在项目内的setting选项选中 Ci/CD

Runners 选项中会看到对应的 链接 token

image

  1. 注册 runner
启动 runner 容器,并进入容器

docker exec -it runner bash
退出命令 exit

进入容器输入

gitlab-runner register -n \
--url http://172.17.0.3/ \
--registration-token PCfVAC_B_zJWDzz_xxkt \
--executor docker \
--description "runner1" \
--docker-image "node:latest" \
--clone-url http://172.17.0.3/

url:gitlab 的域名,docker内为容器的 IP
registration-token: 刚刚复制的 token
executor: 运行环境
description:
clone-url: 很重要,不添加可能会报错如下

fatal: unable to access 'http://gitlab-ci-token:[MASKED]@f96d3c31771a

默认注册输入 gitlab-runner register 是按流程来的有 tag标签
按上面步骤需要在 setting/[CI/CD]/runners 设置 tag
设置完成,可在 setting/[CI/CD]/runners 看到 runner

image

  1. 配置 ssh mac/Linux 环境
# 不建议使用 root 账户创建,可能会有各种问题
# 创建账户 kshao1
useradd kshao1
# 修改密码
passwd kshao1

# 直接生成 公私钥 全程回车 免密登陆
ssh-keygen -t rsa || ssh-keygen

# 一般用户会在 home/用户名/.ssh 看到文件密钥文件
# 如果没有以下文件则生成
touch authorized_keys

# 该文件权限必须是 600 路径随意
chmod 600 /root/.ssh/authorized_keys

# 是>>而不是>,双尖括号>>表示像向文件中追加:
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

细节 https://blog.csdn.net/nahancy/article/details/79059135

使用 shell ssh 密码链接
#!/usr/bin/expect -f
set TARGET 119.3.79.171
set USER xxx
set PASSWD xxx
set PORT xxx
set timeout 10



spawn ssh $USER@$TARGET -p $PORT
expect {
"*yes/no" {send "yes\r"; exp_continue}
"*password:" {send "$PASSWD\r"}
}
interact
  1. 配值 .gitlab-ci.yml 文件
Lftp 连接虚拟主机
image: mwienk/docker-lftp:latest

stages:
- deploy

deploy:
stage: deploy

script:
# 指定目录覆盖上传 (强制更新)
- ls -la
- lftp -c "set ftp:ssl-allow no; open -u $FTP_USERNAME,$FTP_PASSWORD $FTP_HOST -p $port;mirror -RLv ./public /gmlh97ux/wwwroot --ignore-time --transfer-all --parallel=50 --exclude-glob .git* --exclude .git/"
tags:
# runner 容器标签
- docker

only:
# 仅 master 分支
- master

ssh 连接服务器 需要准备好 密钥文件 scp 同理
shell文件 可在 yml 中打开 script ./xxx
#!/bin/sh

# -tt 取消提示
# ./id_rsa1 文件地址
ssh -tt -i ./id_rsa1 kshao1@119.3.79.170 -p 22 << remotessh
echo down
cd /home/kshao1/.ssh
ls

exit
remotessh