gitlab CI 自动发布代码

1,前置条件

有两个不同的服务器,一个是放gitlab(由于太穷买不起服务器,我用的官方的gitlab,https://gitlab.com/),一个用来放runner(还是因为太穷,我用本地电脑当runner的服务器)

1》gitlab创建远程仓库:php-test
2》安装runner(由于我用的本地电脑,所以安装的是windows版本的runner,安装链接:https://docs.gitlab.com/runner/install/找到适合自己的)

3》注册runner

   1)在gitlab的仓库下找到setting->CI/CD,拿到URL和token,后面注册时候要用

执行注册(参考文档 https://docs.gitlab.com/runner/register/

E:\gitlab-runner> .\gitlab-runner.exe register

根据提示,填响应的参数,我这边选择的执行者是shell

注册成功后会在runner所在的服务器有一个文件,你刚刚所填写的配置都在里面

2)查看gitlab,仓库中的runner,

你会发现有一个runner,然后点击编辑,将下面项勾选,这是为了防止出现提交job的时候提示找不到runner

4》书写.gitlab-ci.yml文件并提交到仓库(YAML文件的参数查阅https://blog.csdn.net/qiuqiuLovecode/article/details/105557407),此步骤是最重要的步骤一定要仔细阅读理解


script下面的命令必须保证你的runner所在的服务器能有这些命令
因为我用的shell为执行者,代码部署用的是git拉取的方式所以需要,设置一下git的无密码登录
在runner所在的服务器执行

 ssh-keygen -t rsa -C "[email protected]"

由于我的runner在Windows上生成的sshkey在,当前用户下面

将id_rsa.pub里面的值,粘贴到gitlab下的SshKey里面,

按道理来说此时就能免密码拉取代码了,但是我忘记我一开始在runner上拉取代码是用的https格式的链接不是ssh格式的所以会拉取失败,所以第一次拉取代码的时候要用ssh格式

但是还是报错

fatal: unable to access 'https://gitlab-ci-token:[MASKED]@gitlab.com/IceQueenFly/php-test.git/': OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054

百百度之后执行,就不报此错误了

git config http.postBuffer 524288000

但是出现了一下错误

Host key verification failed.
 fatal: Could not read from remote repository.
 Please make sure you have the correct access rights
 and the repository exists.

百度之后发现,是因为用户的原因,设置的是ssh key 是当前用户,但是Windows执行脚本的是系统所以授权不匹配(参考https://blog.csdn.net/shangzhihaohao/article/details/7088486),yaml文件中的‘whoami’就是为了查看执行脚本的用户

查看Windows下的C:\Windows\System32\config\systemprofile\.ssh,发现的确没有id_rsa.pub等文件。所以我把当前用户下的文件(C:\Users\用户名\.ssh)粘贴复制过来,提交之后再走一次的确成功了

之前每次发现gitlab-runner start只能启动一个runner,后来发现gitlab-runner run 能启动多个runner,可以查看gitlab-runner run -help

猜你喜欢

转载自blog.csdn.net/qiuqiuLovecode/article/details/105580429