gitlab ci gitLab CI/CD自动化部署

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_35979073/article/details/83505232

修改gitlab.yml

1.创建一个GitLab CI用户: 

sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
切换到gitlab-runner用户下生成sshkey,并把gitlab-runner的sshKey添加到gitlab上

不然会出现权限问题



su gitlab-runner

cd ~/.ssh或cd .ssh

ls -al ~/.ssh

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

把id_rsa.pub里的内容复制 放入gitlab的ssh key里面 

一.gitlab创建项目

二.创建 .gitlab-ci.yml文件

   可以在gitlab直接在根目录创建.gitlab-ci.yml

    也可以在本地克隆项目 然后在项目根目录创建名为  .gitlab-ci.yml文件 推送到远程仓库

 文件内容根据需要编写 示范如下:

stages:
  - deploy

xjd_publish_test:
  stage: deploy
  tags:
    - xianjindai_admin_test
  only:
    - develop
  script:
    - whoami
    - /web***ice/deploy/xi***dai/admin_deploy.sh

xjd_publish_product:
  stage: deploy
  tags:
    - xia***dai_adm***product
  only:
    - master
  script:
    - whoami
    - bash /web***vice/d***loy/xia***indai/admin_deploy.sh

写一个简单shell脚本

DEPLOY_PATH=项目根目录路径
GIT_URL=git克隆地址
NOW_BRANCH=要拉取的分支名
cd $DEPLOY_PATH
if [ -d "$DEPLOY_PATH/.git" ];then
        echo --- Clean Workspace ---
        git clean -f
        git reset --hard
        git remote update origin -p
        git checkout $NOW_BRANCH
        echo --- 拉取 $NOW_BRANCH 分支 ---
        git pull origin $NOW_BRANCH
        echo --- OK ---
else
        git init
        git remote add origin $GIT_URL
        git pull origin $NOW_BRANCH
        git remote update origin -p
        git checkout $NOW_BRANCH
        echo --- OK ---
fi

三、在服务器上注册 runner

安装 Gitlab Runner

1.添加repository

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash

2.安装包

sudo yum -y install gitlab-runner

 安装失败就用下面这个

yum install gitlab-ci-multi-runner

注册runner:

用其中一个就行

gitlab-runner register

gitlab-ci-multi-runner register
在 Gitlab 项目中打开 Settings > Runners,找到URL和token。

#引导会让你输入gitlab的url,输入自己的url,例如http://gitlab.example.com/
#引导会让你输入token,去相应的项目下找到token,例如ase12c235qazd32

#引导会让你输入tag,一个项目可能有多个runner,是根据tag来区别runner的,输入若干个就好了,比如web,hook,deploy

注意:tags要和.gitlab-ci.yml中的tags保持一致

#引导会让你输入executor,这个是要用什么方式来执行脚本,图方便输入shell就好了

我用的是shell

注册成功后

注册服务 gitlab-runner install

sudo gitlab-ci-multi-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-ci-multi-runner start

.开放执行权限给gitlab runner用户

chown -hR gitlab-runner:gitlab-runner 项目路径

要重启runner  下面是命令

sudo gitlab-ci-multi-runner restart(后台服务启动)

gitlab-runner run 前台手动启动

gitlab-runner start/stop/restart

四、回到gitlab 可以看到注册的runner已经有了

点击上图编辑进去给runner配置项目

然后再下图就可以看到项目已经和runner关联上了

常见错误:

测试一下

本地提交代码到远程仓库然后再ci/cd里面查看详情

下面这个错误的原因是gitlab内部设置的端口没有添加到安全组

1.如果在提交代码的时候出现如下错误:

切换至 .git所在目录 运行命令  git remote add origin +仓库地址

git remote add origin git@11***.207:php/xjd.git

2.如果如下图错误:

如果没有别的错误 检查一下 是不是脚本文件写的错误 执行的当前文件夹下没有.git 文件夹

3.如果一直在堵塞中 pending

如果一直处于 pending中 如下图:

1.检查一下 gitlab-runner服务有没有重启

2.gitlab-runner list 查看当前运行的runner和你项目中配置的是否一致

3.查看配置文件有没有多余重复 吧以前的删除掉,注意 要删除gitlab上和服务器上的都删除掉

4. 

如果是在ci-jobs中一直报权限问题 如下:

排查事项:

1.有没有gitlab发布用户,如果有,要把这个用户添加到gitlab项目中

2.项目目录下的.git文件的归属权限有没有转交给 gitlab-runner

因为拉取代码是gitlab-runner这个服务器用户操作的 所以要有这个权限

 如果是下面这种错误切换至.git所在目录 git fetch一下

如果你提交的代码没有进入到CI里面

请检查是否提交到受保护的分支如测试分支 正式分支

或者.gitlab-ci.yml  文件名等等是否正确

猜你喜欢

转载自blog.csdn.net/qq_35979073/article/details/83505232