gitlab-runner
gitlab账号密码
第一次登录
部署gitlab,第一登录,要注册,遇到问题
Your account is pending approval from your GitLab administrator and hence blocked. Please contact your GitLab administrator if you think this is an error.
如果是第一次,不知道密码:如下查看,24小时后这个文件就删除了,好像会,记得及时保存
[root@mcw03 bin]# cat /etc/gitlab/initial_root_password # WARNING: This value is valid only in the following conditions # 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run). # 2. Password hasn't been changed manually, either via UI or via command line. # # If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password. Password: hIfbzy1rx41qUAlSj4vrEdGmJDibFlgg501pjTOWqko= # NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours. [root@mcw03 bin]#
用户就是root,密码就是上面文件里的
修改密码
之前我注册账号了
忘记管理员密码,重置gitlab密码
如果gitLab服务器密码忘记了,很多人实在想不起来,干脆就卸载重新安装;当然此方法可行,但是如果GitLab上存放了项目源码及很多配置文件时,那么就需要重置管理员密码
重置管理员密码代码如下:
su git #切换成git用户 gitlab-rails console #打开gitlab的 Rails控制台 user = User.where(username:'admin').first #查找名为admin的用,查询为nil(空),接着查询 user = User.where(username:'id:1').first #查询id为1的用户 user = User.where(username:'root').first #查询用户名为 root的用户 user.password = '新密码' #设置新密码 user.save! #保存密码 ctrl + d 保存密码并退出 #退出控制台
重置密码会出现,密码不能太短,密码中不能包含常用单词等,设置密码时,稍微复杂点的就行了
最后记得重启一下gitLab,(gitlab-ctl restart) 再重新登录。上述密令查询到的管理员用户是root 并非admin
[root@mcw03 ~]# su - git Last login: Sat May 25 00:00:26 CST 2024 on pts/0 -sh-4.2$ ls alertmanager bootstrapped git-data gitlab-exporter gitlab-rails gitlab-workhorse nginx postgres-exporter prometheus redis backups gitaly gitlab-ci gitlab-kas gitlab-shell logrotate node-exporter postgresql public_attributes.json trusted-certs-directory-hash -sh-4.2$ pwd /var/opt/gitlab -sh-4.2$ gitlab-rails console -------------------------------------------------------------------------------- Ruby: ruby 2.7.7p221 (2022-11-24 revision 168ec2b1e5) [x86_64-linux] GitLab: 15.7.9 (2aa80675929) FOSS GitLab Shell: 14.14.0 PostgreSQL: 13.8 ------------------------------------------------------------[ booted in 27.79s ] Loading production environment (Rails 6.1.6.1) irb(main):001:0> user = User.where(username:'admin').first => nil irb(main):002:0> user = User.where(username:'id:1').first => nil irb(main):003:0> user = User.where(username:'root').first => #<User id:1 @root> irb(main):004:0> user.password = '123456' => "123456" irb(main):005:0> user.save! Traceback (most recent call last): 7: from (irb):5 6: from lib/gitlab/database/load_balancing/connection_proxy.rb:71:in `transaction' 5: from lib/gitlab/database/load_balancing/connection_proxy.rb:119:in `write_using_load_balancer' 4: from lib/gitlab/database/load_balancing/load_balancer.rb:118:in `read_write' 3: from lib/gitlab/database/load_balancing/load_balancer.rb:200:in `retry_with_backoff' 2: from lib/gitlab/database/load_balancing/load_balancer.rb:129:in `block in read_write' 1: from lib/gitlab/database/load_balancing/connection_proxy.rb:120:in `block in write_using_load_balancer' ActiveRecord::RecordInvalid (Validation failed: Password is too short (minimum is 8 characters)) irb(main):006:0> user.password = 'admin123456' => "admin123456" irb(main):007:0> user.save! Traceback (most recent call last): 7: from (irb):7 6: from lib/gitlab/database/load_balancing/connection_proxy.rb:71:in `transaction' 5: from lib/gitlab/database/load_balancing/connection_proxy.rb:119:in `write_using_load_balancer' 4: from lib/gitlab/database/load_balancing/load_balancer.rb:118:in `read_write' 3: from lib/gitlab/database/load_balancing/load_balancer.rb:200:in `retry_with_backoff' 2: from lib/gitlab/database/load_balancing/load_balancer.rb:129:in `block in read_write' 1: from lib/gitlab/database/load_balancing/connection_proxy.rb:120:in `block in write_using_load_balancer' ActiveRecord::RecordInvalid (Validation failed: Password must not contain commonly used combinations of words and letters) irb(main):008:0> user.password = 'Root123456' => "Root123456" irb(main):009:0> user.save! Traceback (most recent call last): 7: from (irb):9 6: from lib/gitlab/database/load_balancing/connection_proxy.rb:71:in `transaction' 5: from lib/gitlab/database/load_balancing/connection_proxy.rb:119:in `write_using_load_balancer' 4: from lib/gitlab/database/load_balancing/load_balancer.rb:118:in `read_write' 3: from lib/gitlab/database/load_balancing/load_balancer.rb:200:in `retry_with_backoff' 2: from lib/gitlab/database/load_balancing/load_balancer.rb:129:in `block in read_write' 1: from lib/gitlab/database/load_balancing/connection_proxy.rb:120:in `block in write_using_load_balancer' ActiveRecord::RecordInvalid (Validation failed: Password must not contain commonly used combinations of words and letters) irb(main):010:0> user.password = 'qwe123!@#' => "qwe123!@#" irb(main):011:0> user.save! => true irb(main):012:0> exit -sh-4.2$ exit logout [root@mcw03 ~]# gitlab-ctl restart ok: run: alertmanager: (pid 3099) 1s ok: run: gitaly: (pid 3108) 1s ok: run: gitlab-exporter: (pid 3119) 0s ok: run: gitlab-kas: (pid 3216) 1s ok: run: gitlab-workhorse: (pid 3223) 0s ok: run: logrotate: (pid 3232) 1s ok: run: nginx: (pid 3238) 0s ok: run: node-exporter: (pid 3243) 0s ok: run: postgres-exporter: (pid 3247) 1s ok: run: postgresql: (pid 3254) 0s ok: run: prometheus: (pid 3265) 1s ok: run: puma: (pid 3275) 0s ok: run: redis: (pid 3280) 1s ok: run: redis-exporter: (pid 3286) 0s ok: run: sidekiq: (pid 3293) 0s [root@mcw03 ~]#
重新登录,用新密码
安装gitlab runner
docker安装
docker run -d --name gitlab-runner --restart always \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:v14.1.0
[root@mcw05 ~]# docker run -d --name gitlab-runner --restart always \ > -v /srv/gitlab-runner/config:/etc/gitlab-runner \ > -v /var/run/docker.sock:/var/run/docker.sock \ > gitlab/gitlab-runner:v14.1.0 5c2bce38611a95c64d3109e3bd9554cb73530e7778f24043f721bf4bbf3061e1 [root@mcw05 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5c2bce38611a gitlab/gitlab-runner:v14.1.0 "/usr/bin/dumb-init …" 4 seconds ago Up 3 seconds gitlab-runner [root@mcw05 ~]#
linux系统上rpm安装
# curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/v14.1.0/rpm/gitlab-runner_amd64.rpm"
# rpm -ivh gitlab-runner_amd64.rpm
docker 安装,注册runner
gitlab 在mcw03上,docker起的runner在mcw05上
创建一个项目
注册的时候用这个地址,这个token
docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:v14.1.0 register \ --non-interactive \ --executor "docker" \ --docker-image alpine:latest \ --url "{MY_GITLAB_HOST}" \ --registration-token "{PROJECT_REGISTRATION_TOKEN}" \ --description "docker-runner" \ --tag-list "docker,aws" \ --run-untagged="true" \ --locked="false" \ --access-level="not_protected"
修改为如下:
docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:v14.1.0 register \ --non-interactive \ --executor "docker" \ --docker-image alpine:latest \ --url "http://10.0.0.13/" \ --registration-token "GR1348941k8uMSEGMnWvzy7pZr2JH" \ --description "docker-runner" \ --tag-list "docker,aws" \ --run-untagged="true" \ --locked="false" \ --access-level="not_protected"
runner机器上执行成功,不过并没有docker容器生成
[root@mcw05 ~]# docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:v14.1.0 register \ > --non-interactive \ > --executor "docker" \ > --docker-image alpine:latest \ > --url "http://10.0.0.13/" \ > --registration-token "GR1348941k8uMSEGMnWvzy7pZr2JH" \ > --description "docker-runner" \ > --tag-list "docker,aws" \ > --run-untagged="true" \ > --locked="false" \ > --access-level="not_protected" Runtime platform arch=amd64 os=linux pid=7 revision=8925d9a0 version=14.1.0 Running in system-mode. Registering runner... succeeded runner=GR134894 Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! [root@mcw05 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@mcw05 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@mcw05 ~]#
可以看到,已经注册成功了,点击编辑,看下配置
显示哪里注册来的,注册时的描述,注册时指定的标签
配置runner
流水线内容.gitlab-ci.yml
存放位置
指定流水线文件路径和名称,默认是下面文件,必须要.yml结尾
简单流水线示例
新建文件
编写流水线作业
stages: - install - build - deploy install_job: stage: install script: echo "hello install" build_job: stage: build script: echo "hello build" deploy_job: stage: deploy script: echo "hello deploy"
修改文件,点击提交改变,就运行了
点进去查看
点进去查看
还没开始
新增一行并提交
查看。已经触发cicd作业
不知道为啥,一直是pending
查看报错:
This job is stuck because the project doesn't have any runners online assigned to it.
Go to project CI settings
此作业被卡住,因为项目没有为其分配任何联机运行程序。转到项目CI设置
这里显示可用的
已经勾选好的,只是点下保存改变试试
这里提示不包含它
先把这个勾选去掉
改下再执行一次
[root@mcw05 ~]# docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:v14.1.0 register \ > --non-interactive \ > --executor "docker" \ > --docker-image alpine:latest \ > --url "http://10.0.0.13/" \ > --registration-token "GR1348941k8uMSEGMnWvzy7pZr2JH" \ > --description "docker-runner2" \ > --tag-list "docker2,aws" \ > --run-untagged="true" \ > --locked="false" \ > --access-level="not_protected" Runtime platform arch=amd64 os=linux pid=7 revision=8925d9a0 version=14.1.0 Running in system-mode. Registering runner... succeeded runner=GR134894 Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! [root@mcw05 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@mcw05 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@mcw05 ~]#
又多了一个
把rm换成 -d
[root@mcw05 ~]# docker run -d -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:v14.1.0 register \ > --non-interactive \ > --executor "docker" \ > --docker-image alpine:latest \ > --url "http://10.0.0.13/" \ > --registration-token "GR1348941k8uMSEGMnWvzy7pZr2JH" \ > --description "docker-runner3" \ > --tag-list "docker3,aws" \ > --run-untagged="true" \ > --locked="false" \ > --access-level="not_protected" b7f2b928c7b054e4eee278860a30321afc72f03b42c822bdab115359235793cb [root@mcw05 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b7f2b928c7b0 gitlab/gitlab-runner:v14.1.0 "/usr/bin/dumb-init …" 5 seconds ago Exited (0) 4 seconds ago serene_albattani [root@mcw05 ~]# docker logs b7f Runtime platform arch=amd64 os=linux pid=7 revision=8925d9a0 version=14.1.0 Running in system-mode. Registering runner... succeeded runner=GR134894 Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! [root@mcw05 ~]#
起了个容器但是很快退出了
我们上面是在执行注册,但是忘记了我们还没安装runner,下面安装一下
docker run -d --name gitlab-runner --restart always \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:v14.1.0
[root@mcw05 ~]# docker run -d --name gitlab-runner --restart always \ > -v /srv/gitlab-runner/config:/etc/gitlab-runner \ > -v /var/run/docker.sock:/var/run/docker.sock \ > gitlab/gitlab-runner:v14.1.0 5c2bce38611a95c64d3109e3bd9554cb73530e7778f24043f721bf4bbf3061e1 [root@mcw05 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5c2bce38611a gitlab/gitlab-runner:v14.1.0 "/usr/bin/dumb-init …" 4 seconds ago Up 3 seconds gitlab-runner [root@mcw05 ~]#
这下再查看,这下才是活跃的,
在看cicd情况,不再是pending了,是失败状态
不能解析域名
看下这个仓库地址,是错误的
这里也显示这次失败
我们可以将上面的域名在gitlab上添加本地解析,也可以将域名改为用ip,解决办法参考如下: ,这里我们先用本地解析把
https://www.cnblogs.com/machangwei-8/p/16732933.html#_label4
gitlab机器添加解析:
[root@mcw03 ~]# vim /etc/hosts [root@mcw03 ~]# tail -1 /etc/hosts 10.0.0.13 gitlab.example.com [root@mcw03 ~]#
进入web编辑器
添加之后,点下review
对比出修改内容
点击提交
点击左边的提交,然后点下面提交
提交成功
点击查看
看下失败日志
进入终端
返回项目
查看报错原因,这个是runner在运行,这个解析记录应该加给runner所在的机器
加域名解析
[root@mcw05 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5c2bce38611a gitlab/gitlab-runner:v14.1.0 "/usr/bin/dumb-init …" 31 minutes ago Up 31 minutes gitlab-runner [root@mcw05 ~]# vim /etc/hosts [root@mcw05 ~]# tail -1 /etc/hosts 10.0.0.13 gitlab.example.com [root@mcw05 ~]#
点击运行pipeline
还是失败
还是不能解析
加到笔记本里面
还是不行,直接把项目地址改成ip把,改为ip之后再试试
然后看,可以正常执行了,并且这里是按着顺序一直自动往下执行的
仓库,执行命令,用了哪个注册的runner
新增,查看当前目录,以及是否跟代码同级目录作为工作目录,能对代码做操作,或者是执行脚本等等
提交之后正在运行,是更新这个文件触发的运行
可以看到,下面日志输出了仓库路径,然后这个项目的代码在runner所在地方的这个路径,这个仓库路径就是工作路径,就是当前路径,当前路径下的mcw.sh脚本,可以执行,如下输出。我们也可以执行其它想要执行的命令或脚本。也可以把脚本放在runner机器上,或者是代码仓库里面
找不到这个路径在哪里,可能是清除了
我改下脚本,让脚本sleep很久,卡住,然后进入runner看下
修改,提交,触发cicd,然后让它执行这个脚本
我们可以看到runner起了一个临时容器,然后任务运行在这个容器里面。并且里面有个初始化的仓库,然后代码都在这个仓库里面,从这里也能执行脚本,代码里的脚步输出主机名,可以看到输出的就是临时容器的主机名,因为是在临时容器里面运行这些东西
系统中或者cicd任务重获取所有的环境变量以及调用变量
打印环境变量的命令env和printenv
[root@mcw05 ~]# env>1.txt [root@mcw05 ~]# printenv>2.txt [root@mcw05 ~]# md5sum 1.txt 2.txt fc95c822716ca9cc764c486cf021bba4 1.txt 16bc331729e5f551d7afa60e401b651b 2.txt [root@mcw05 ~]# wc -l *.txt 23 1.txt 23 2.txt 46 total [root@mcw05 ~]#
printenv
[root@mcw05 ~]# printenv XDG_SESSION_ID=154 HOSTNAME=mcw05 TERM=xterm SHELL=/bin/bash HADOOP_HOME=/opt/hadoop HISTSIZE=1000 SSH_CLIENT=10.0.0.1 53609 22 SSH_TTY=/dev/pts/0 USER=root LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36: MAIL=/var/spool/mail/root PATH=/usr/local/jdk/bin:/opt/hadoop/bin:/opt/hadoop/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin PWD=/root JAVA_HOME=/usr/local/jdk LANG=en_US.UTF-8 HISTCONTROL=ignoredups SHLVL=1 HOME=/root LOGNAME=root SSH_CONNECTION=10.0.0.1 53609 10.0.0.15 22 LESSOPEN=||/usr/bin/lesspipe.sh %s XDG_RUNTIME_DIR=/run/user/0 _=/usr/bin/printenv [root@mcw05 ~]#
env
[root@mcw05 ~]# env XDG_SESSION_ID=154 HOSTNAME=mcw05 TERM=xterm SHELL=/bin/bash HADOOP_HOME=/opt/hadoop HISTSIZE=1000 SSH_CLIENT=10.0.0.1 53609 22 SSH_TTY=/dev/pts/0 USER=root LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36: MAIL=/var/spool/mail/root PATH=/usr/local/jdk/bin:/opt/hadoop/bin:/opt/hadoop/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin PWD=/root JAVA_HOME=/usr/local/jdk LANG=en_US.UTF-8 HISTCONTROL=ignoredups SHLVL=1 HOME=/root LOGNAME=root SSH_CONNECTION=10.0.0.1 53609 10.0.0.15 22 LESSOPEN=||/usr/bin/lesspipe.sh %s XDG_RUNTIME_DIR=/run/user/0 _=/usr/bin/env [root@mcw05 ~]#
修改shell脚本
添加py脚本,
cicd上加上执行PY脚本,好像不能写两个
可以看到提示,语法错误
我们修改下代码
我们看下runner有报错,导致一直卡在pending状态
重新运行下这个失败的任务试试
之前是因为网络问题,无法解析域名导致失败的
可以看到也是pending
重启了下runner还是有报错
WARNING: Checking for jobs... failed runner=awBX3TTy status=couldn't execute POST against http://10.0.0.13/api/v4/jobs/request: Post http://10.0.0.13/api/v4/jobs/request: dial tcp 10.0.0.13:80: connect: connection timed out
[root@mcw05 ~]#
重启了下gitlabrunner 容器和gitlab服务都不行,并且gitlabrunner宿主机上能通gitlab 10.0.0.13 80,此时gitlabrunner容器还是不能连接,因为进入容器不好安装telnet测试网络,所以直接重启了docker 服务,这样就好了。也就是docker网络出现异常导致的
我们此时查看脚本打印的系统环境变量,此时跟跟我们终端打印的不同,也就是gitlabrunner往它所在的系统环境变量里面增加了环境变量
点击这里可以放大看,这个日志还能搜索
下面复制出环境变量,和我们在终端上打印完全不同,好像
Running with gitlab-runner 14.1.0 (8925d9a0) on docker-runner2 5yvWUYYn Preparing the "docker" executor 00:05 Using Docker executor with image alpine:latest ... Pulling docker image alpine:latest ... Using docker image sha256:1d34ffeaf190be23d3de5a8de0a436676b758f48f835c3a2d4768b798c15a7f1 for alpine:latest with digest alpine@sha256:77726ef6b57ddf65bb551896826ec38bc3e53f75cdde31354fbffb4f25238ebd ... Preparing environment 00:00 Running on runner-5yvwuyyn-project-2-concurrent-0 via 5c2bce38611a... Getting source from Git repository 00:01 Fetching changes with git depth set to 20... Reinitialized existing Git repository in /builds/gitlab-instance-ae7b05a8/mcwtest/.git/ Checking out 37d9532b as main... Skipping Git submodules setup Executing "step_script" stage of the job script 00:01 Using docker image sha256:1d34ffeaf190be23d3de5a8de0a436676b758f48f835c3a2d4768b798c15a7f1 for alpine:latest with digest alpine@sha256:77726ef6b57ddf65bb551896826ec38bc3e53f75cdde31354fbffb4f25238ebd ... $ echo "hello install" && pwd && /bin/sh mcw.sh hello install /builds/gitlab-instance-ae7b05a8/mcwtest 我是马昌伟 我运行在哪个主机: runner-5yvwuyyn-project-2-concurrent-0 mcw FF_USE_WINDOWS_LEGACY_PROCESS_STRATEGY=true CI_BUILD_ID=53 CI_SERVER_VERSION_PATCH=9 CI_SERVER_REVISION=2aa80675929 CI_COMMIT_SHORT_SHA=37d9532b GITLAB_USER_LOGIN=root FF_GITLAB_REGISTRY_HELPER_IMAGE=true CI_DEPENDENCY_PROXY_PASSWORD=[MASKED] CI_DEPENDENCY_PROXY_SERVER=10.0.0.13:80 CI_BUILD_REF=37d9532b4f1a82674b65f42bf8ccaa191f5b31e6 FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY=false CI=true CI_SERVER_PROTOCOL=http CI_PROJECT_NAME=mcwtest CI_RUNNER_REVISION=8925d9a0 HOSTNAME=runner-5yvwuyyn-project-2-concurrent-0 CI_JOB_STAGE=install CI_PROJECT_DESCRIPTION= CI_COMMIT_DESCRIPTION= CI_DEPENDENCY_PROXY_USER=gitlab-ci-token CI_SERVER_VERSION=15.7.9 SHLVL=3 CI_PROJECT_ROOT_NAMESPACE=gitlab-instance-ae7b05a8 HOME=/root OLDPWD=/ FF_NETWORK_PER_BUILD=false CI_JOB_ID=53 CI_SERVER_HOST=10.0.0.13 CI_COMMIT_REF_NAME=main CI_PIPELINE_SOURCE=web CI_RUNNER_VERSION=14.1.0 FF_SKIP_NOOP_BUILD_STAGES=true FF_USE_FASTZIP=false CI_BUILDS_DIR=/builds CI_SERVER_VERSION_MAJOR=15 CI_DEFAULT_BRANCH=main CI_BUILD_TOKEN=[MASKED] CI_REGISTRY_PASSWORD=[MASKED] CI_SERVER_URL=http://10.0.0.13 CI_TEMPLATE_REGISTRY_HOST=registry.gitlab.com CI_COMMIT_REF_PROTECTED=true GITLAB_FEATURES= CI_PROJECT_ID=2 GITLAB_CI=true CI_COMMIT_SHA=37d9532b4f1a82674b65f42bf8ccaa191f5b31e6 CI_CONCURRENT_ID=0 FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR=false CI_REGISTRY_USER=gitlab-ci-token CI_SERVER_PORT=80 CI_PROJECT_DIR=/builds/gitlab-instance-ae7b05a8/mcwtest CI_PROJECT_PATH=gitlab-instance-ae7b05a8/mcwtest FF_SKIP_DOCKER_MACHINE_PROVISION_ON_CREATION_FAILURE=true CI_PROJECT_NAMESPACE=gitlab-instance-ae7b05a8 CI_COMMIT_TIMESTAMP=2024-05-26T04:05:08+00:00 FF_USE_DIRECT_DOWNLOAD=true CI_JOB_TOKEN=[MASKED] CI_NODE_TOTAL=1 CI_SERVER_NAME=GitLab CI_PROJECT_NAMESPACE_ID=2 CI_PIPELINE_CREATED_AT=2024-05-26T04:22:12Z CI_CONCURRENT_PROJECT_ID=0 CI_JOB_NAME_SLUG=install-job CI_PIPELINE_URL=http://10.0.0.13/gitlab-instance-ae7b05a8/mcwtest/-/pipelines/18 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin CI_JOB_STARTED_AT=2024-05-26T04:29:17Z CI_SERVER_VERSION_MINOR=7 CI_RUNNER_DESCRIPTION=docker-runner2 FF_USE_NEW_BASH_EVAL_STRATEGY=false CI_PROJECT_TITLE=mcwtest CI_PROJECT_VISIBILITY=private CI_COMMIT_TITLE=Update .gitlab-ci.yml file CI_BUILD_REF_SLUG=main GITLAB_USER_EMAIL=admin@example.com CI_SERVER=yes FF_CMD_DISABLE_DELAYED_ERROR_LEVEL_EXPANSION=false CI_PROJECT_REPOSITORY_LANGUAGES=shell,python CI_PAGES_URL=http://gitlab-instance-ae7b05a8.example.com/mcwtest CI_BUILD_BEFORE_SHA=0000000000000000000000000000000000000000 CI_COMMIT_AUTHOR=Administrator <admin@example.com> CI_RUNNER_SHORT_TOKEN=5yvWUYYn CI_PAGES_DOMAIN=example.com CI_REPOSITORY_URL=http://gitlab-ci-token:[MASKED]@10.0.0.13/gitlab-instance-ae7b05a8/mcwtest.git CI_PROJECT_CLASSIFICATION_LABEL= CI_COMMIT_BRANCH=main FF_USE_POWERSHELL_PATH_RESOLVER=false CI_RUNNER_ID=2 CI_JOB_JWT_V1=[MASKED] CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX=10.0.0.13:80/gitlab-instance-ae7b05a8/dependency_proxy/containers CI_API_V4_URL=http://10.0.0.13/api/v4 GITLAB_USER_NAME=Administrator CI_JOB_JWT_V2=[MASKED] CI_PIPELINE_IID=18 CI_JOB_URL=http://10.0.0.13/gitlab-instance-ae7b05a8/mcwtest/-/jobs/53 CI_BUILD_NAME=install_job CI_RUNNER_EXECUTABLE_ARCH=linux/amd64 CI_JOB_JWT=[MASKED] CI_COMMIT_REF_SLUG=main CI_DISPOSABLE_ENVIRONMENT=true PWD=/builds/gitlab-instance-ae7b05a8/mcwtest CI_RUNNER_TAGS=["docker2", "aws"] CI_PIPELINE_ID=18 CI_PROJECT_PATH_SLUG=gitlab-instance-ae7b05a8-mcwtest CI_PROJECT_URL=http://10.0.0.13/gitlab-instance-ae7b05a8/mcwtest CI_CONFIG_PATH=.gitlab-ci.yml CI_COMMIT_BEFORE_SHA=0000000000000000000000000000000000000000 CI_BUILD_REF_NAME=main CI_BUILD_STAGE=install CI_COMMIT_MESSAGE=Update .gitlab-ci.yml file FF_ENABLE_BASH_EXIT_CODE_CHECK=false CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX=10.0.0.13:80/gitlab-instance-ae7b05a8/dependency_proxy/containers GITLAB_USER_ID=1 CI_JOB_STATUS=running CI_JOB_NAME=install_job Job succeeded
比如这里,搜索不到这个变量
修改下,改成python打印环境变量
没有python命令,那么有时间看下,是不是里面装一个,然后测试下吧
我们看环境变量里面有仓库地址和项目地址,我们这里在shell脚本里面,调用下这个变量试试。我们之前在终端上打印的环境变量,是宿主机root的环境变量,而这个shell脚本里打印的环境变量 ,是gitlabrunner临时创建的cicd用的容器里的环境变量,所以不同,并且有很多cicd方面的变量
shell脚本里面调用环境变量
执行脚本
可以看到,加不加花括号的打印,都能调用到环境变量。也就是,其实如果是多个shell或者多种语言程序直接调用公共变量,可以写入到某个文件,可以写入到其它,但是其实也可以写入到系统环境变量,然后共同使用,但是注意调用的时候,必需在定义之后才能找到这个变量。可以当做一个公共的容器,传递变量用,应该很多程序都用到环境变量,这样去做。
下面我们在.gitlab-ci.yaml文件里面调用环境变量试试,先在script下用,可能其它下面也可以用
可以看到在build_job中可以看到在.gitlab-ci.yml文件中打印的环境变量
我此时再试试,新增一个这个变量,这里标红了,看看执行是什么情况
它只运行了一个,也就是下面这个script把上面的覆盖掉了,所以留下最下面的这个执行
参考链接:https://blog.csdn.net/qq_42211536/article/details/133901386
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求