Linux下普通用户gitlab-runner

前言

在有gitlab代码管理程序下,想要给简单的C语言建立提交后,在编译服务器自动拉取代码编译打包。除了相关的脚本文件撰写,可以在编译服务器安装执行的gitlab-runner客户端实现。本着不用root的权限下使用。

工具

git
gitlab-runner
make

问题探讨

由于测试服务器有老旧版本。第一次才用新的服务器,新的服务器的git满足条件,安装gitlab-runner 后直接可用。而旧服务器 git版本过旧,与我使用的gitlab-runner不兼容。因此要重新安装git。而我选择在普通用一下安装git和加载路径前置方式。没有卸载旧的git。

git 版本不匹配无法使用
 git -c
Unknown option: -c
usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path]
           [-p|--paginate|--no-pager] [--no-replace-objects]
           [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
           [--help] COMMAND [ARGS]
git版本有相应的参数
git -c
-c expects a configuration string
usage: git [--version] [--help] [-c name=value]
          [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
          [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
          [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
          <command> [<args>]

源码安装git

wget https://github.com/git/git/archive/v2.33.1.tar.gz
tar -zxf git-2.33.1.tar.gz
cd git-2.33.1
#重新开始编译检查
./configure --prefix=${HOME}/local/
make all
make install
#设置路径到普通用户配置下
vi .bash_profile
export PATH=${HOME}/local/bin:${PATH}


直接下载可执行文件gitlab-runner

mkdir -p  ${HOME}/local/bin
cd    ${HOME}/local/bin
#重命名
cp gitlab-runner-linux-amd64  gitlab-runner
chmod +x   gitlab-runner
#设置路径到普通用户配置下
cd ~
vi .bash_profile
export PATH=${HOME}/local/bin:${PATH}
#刷新配置
source .bash_profile

#用户模式后台运行,如果可以增加crontab自动启动等限制,未运行会stuck
nohup gitlab-runner run & >/dev/null


仓库具体项目注册-注销等具体操作

#查看注册列表
gitlab-runner  list

#设置->CI/CD->Runner->手动设置specificRunner
#test注册runner
gitlab-runner register -n --name test_runner  -u  http://188.88.88.88:8888/ -r 7pybz1233s333Crfss  --executor shell --builds-dir=${HOME}/allrunner/buid   --cache-dir=${HOME}/allrunner/cache

#test注销runner
 gitlab-runner  unregister --name "test_runner"

自动重启脚本

机器重启等,脚本结合crontab实现程序自动重启减少人工操作
crontab -e增加定时项。假如如可执行脚本位置为/home/abc/autogitlabrunner.sh

0 * * * *  /home/abc/autogitlabrunner.sh  2>/dev/null

排除root权限的。可实现普通用户下重启

#!/bin/sh
export LC_ALL="zh_CN.UTF-8"
PRE_DIR=$(pwd)
echo ${PRE_DIR}
SCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && pwd)
echo ${SCRIPTDIR}
cd   ${SCRIPTDIR}
export PATH=$PATH:/usr/sbin:/sbin
startft=`date '+%Y-%m-%d %A %T '`
proname="gitlab-runner"
echo ${startft} start
extrakey()
{
      pid=`pidof ${proname} `
      echo "pid:" "${pid}" 
      if [  -z "${pid}"   ]
      then
                     cn=0;
      else 
          arrpid=(${pid} )
          arrlen=${#arrpid}
          cn=0
          for (( j=0; j<$arrlen;j++  )) 
          do
               apid=${arrpid[j]}
               if [ -z "${apid}" ]
               then 
                     cn=0;
               else
               cn=`ps -p ${apid} -o ruser|grep -v root|grep -v USER|wc -l`
               if [ $cn -ge 1 ]
               then
                       break;
               fi  
               fi             
          done    
      fi     
      echo   "cn: "${cn}  " pid:" "${apid}"
}
banner()
{
    echo "USAGE:./start.sh [run|show]"
}

dostart()
{ 
      extrakey 
      if [  $cn -ge 1 ]
      then
          echo "already run" "${apid}"
          echo "${proname} process is running,please shut this process,and running start.sh."
          banner
      else
          echo "start"
           nohup  ${proname} run >/dev/null 2>&1 &
      fi
}



doshow()
{ 
       exec 4<&1  
       exec 1>/dev/null    
       extrakey
       exec 1<&4   
       exec 4>&-   
      if [  $cn -gt 0 ]
      then
          echo "SHOW ${proname}  ${pid}" 
      else
          echo "FOUND NOT ${proname}" 
      fi
}

if [  0 -eq  $#  ] 
then
   dostart
elif [ 1 -eq $#  ]
then
  case $1 in
    run)
       dostart
       ;; 
    show)
       doshow
    ;; 
    *)
       banner
   esac 
fi



cd   ${PRE_DIR}
echo ${startft} end
echo "_______________

.gitlab-ci.yml样例

stages:
  - build
  - test
  - pack
  - deploy

before_script:
  - export LC_ALL="zh_CN.UTF-8" 

build-compile:
  stage: build
  script:
    - cd makedir
    - make clean && make && make install 
  artifacts:
    paths:
      - ./bin/
      - ./conf/

job-testmk:
  stage: test
  script: 
    - cd makedir
    - make show

job-pack:
  stage: pack 
  script: 
    - echo "pack"
    - mkdir -p $HOME/allrunner/test
    - zip -r test.zip  ./bin/*  ./conf/*
    - cp  test.zip   $HOME/allrunner/test
  dependencies:
    - build-compile

job-deploy:
  stage: deploy 
  script: 
    - echo "deploy"  
  dependencies:
    - job-pack
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值