返回总目录页

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

 

posted @ 2024-05-25 01:57  马昌伟  阅读(205)  评论(0编辑  收藏  举报
博主链接地址:https://www.cnblogs.com/machangwei-8/