返回列表 发布新帖

极狐gitlab ci job拉取代码之前执行命令

110 1
发表于 2024-4-29 15:28:35 | 显示全部楼层 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×

两种方法:

  1. 一、在 ci job 中定义 hooks.pre_get_sources_script,此功能 15.6 版本引入,15.10 版本后功能默认开启 hookspre_get_sources_script

    job1:
      hooks:
        pre_get_sources_script:
          - echo 'hello job1 pre_get_sources_script'
          - echo test44
      script: echo 'hello job1 script'

    执行结果:

    Running with gitlab-runner 15.9.0 (c20f0bec)
      on docker runner x2QYBePa, system ID: r_HQ63Cf2vE2i9
    Resolving secrets
    00:00
    Preparing the "docker" executor
    00:01
    Using Docker executor with image busybox:1.28.4 ...
    Using locally found image version due to "if-not-present" pull policy
    Using docker image sha256:8c811b4aec35f259572d0f79207bc0678df4c736eeec50bc9fec37ed936a472a for busybox:1.28.4 with digest busybox@sha256:141c253bc4c3fd0a201d32dc1f493bcf3fff003b6df416dea4f41046e0f37d47 ...
    Preparing environment
    00:00
    Running on runner-x2qybepa-project-20-concurrent-0 via c8e757a2ee8f...
    Getting source from Git repository
    00:00
    $ echo 'hello job1 pre_get_sources_script'
    hello job1 pre_get_sources_script
    Fetching changes with git depth set to 20...
    Reinitialized existing Git repository in /builds/cicd/test/.git/
    Checking out a1b5b2ea as detached HEAD (ref is main)...
    Skipping Git submodules setup
    Executing "step_script" stage of the job script
    00:01
    Using docker image sha256:8c811b4aec35f259572d0f79207bc0678df4c736eeec50bc9fec37ed936a472a for busybox:1.28.4 with digest busybox@sha256:141c253bc4c3fd0a201d32dc1f493bcf3fff003b6df416dea4f41046e0f37d47 ...
    $ echo 'hello job1 script'
    hello job1 script
    Cleaning up project directory and file based variables
    00:00
    Job succeeded
  2. 二、在 runner 中配置参数 pre_get_sources_script(在老版本的 runner 中,是设置 pre_clone_script,功能一样),参考:Runner Advanced configuration。这里以 docker runner executer 为例:

    concurrent = 10
    check_interval = 0
    user = "gitlab-runner"
    shutdown_timeout = 0
    
    [session_server]
      session_timeout = 1800
    
    [[runners]]
      name = "docker runner"
      url = "https://gitlab.leffss.cn"
      id = 0
      token = "xxxxxxxxxxxxxxxxxxxxxxxxxxx"
      token_obtained_at = 0001-01-01T00:00:00Z
      token_expires_at = 0001-01-01T00:00:00Z
      executor = "docker"
      environment = ["GO111MODULE=on", "GOPROXY=https://goproxy.cn,direct"]
      pre_get_sources_script = "eval \"$CI_PRE_CLONE_SCRIPT\""
      [runners.cache]
        Type = "s3"
        Shared = true
        MaxUploadedArchiveSize = 0
        [runners.cache.s3]
          ServerAddress = "10.10.10.60:9000"
          AccessKey = "minio"
          SecretKey = "minio123456"
          BucketName = "gitlab-cache"
          Insecure = true
      [runners.docker]
        tls_verify = false
        image = "busybox:1.28.4"
        privileged = true
        disable_entrypoint_overwrite = false
        oom_kill_disable = false
        disable_cache = false
        volumes = ["/certs/client", "/cache"]
        extra_hosts = ["gitlab.leffss.cn:10.10.10.60"]
        pull_policy = ["if-not-present"]
        shm_size = 0

    然后在 ci job 中的 CI_PRE_CLONE_SCRIPT 变量中指定需要运行的命令:

    job1:
      variables:
        CI_PRE_CLONE_SCRIPT: "echo CI_PRE_CLONE_SCRIPT\necho test2"
      script: echo 'hello job1 script'

    执行结果:

    Running with gitlab-runner 15.9.0 (c20f0bec)
      on docker runner x2QYBePa, system ID: r_HQ63Cf2vE2i9
    Resolving secrets
    00:00
    Preparing the "docker" executor
    00:01
    Using Docker executor with image busybox:1.28.4 ...
    Using locally found image version due to "if-not-present" pull policy
    Using docker image sha256:8c811b4aec35f259572d0f79207bc0678df4c736eeec50bc9fec37ed936a472a for busybox:1.28.4 with digest busybox@sha256:141c253bc4c3fd0a201d32dc1f493bcf3fff003b6df416dea4f41046e0f37d47 ...
    Preparing environment
    00:00
    Running on runner-x2qybepa-project-20-concurrent-0 via c8e757a2ee8f...
    Getting source from Git repository
    00:00
    $ eval "$CI_PRE_CLONE_SCRIPT"
    CI_PRE_CLONE_SCRIPT
    test2
    Fetching changes with git depth set to 20...
    Reinitialized existing Git repository in /builds/cicd/test/.git/
    Checking out f9d4a47e as detached HEAD (ref is main)...
    Skipping Git submodules setup
    Executing "step_script" stage of the job script
    00:01
    Using docker image sha256:8c811b4aec35f259572d0f79207bc0678df4c736eeec50bc9fec37ed936a472a for busybox:1.28.4 with digest busybox@sha256:141c253bc4c3fd0a201d32dc1f493bcf3fff003b6df416dea4f41046e0f37d47 ...
    $ echo 'hello job1 script'
    hello job1 script
    Cleaning up project directory and file based variables
    00:00
    Job succeeded
回复

使用道具 举报

评论1

樱空翼Lv.1 发表于 2024-4-29 16:41:55 | 显示全部楼层
学习了,谢谢大神
回复

使用道具 举报

意见建议

Email:forum@gitlab.cn
  • 关注公众号
  • 添加专业顾问
Copyright © 2001-2024 极狐GitLab论坛 版权所有 All Rights Reserved. 鄂ICP备2021008419号-1|鄂公网安备42018502006137号
关灯 快速发帖
扫一扫添加专业顾问
返回顶部
快速回复 返回顶部 返回列表