You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将GitLab CI的job artifacts发送到GitHub并解压到指定目录

实现步骤

1. 前置配置

  • 登录GitHub生成具有仓库读写权限的Personal Access Token(PAT)
  • 进入GitLab对应项目的「设置」-「CI/CD」-「变量」页,添加3个掩蔽变量:
    • GITHUB_PAT:刚才生成的GitHub PAT
    • GITHUB_REPO:目标GitHub仓库的地址后缀,格式为用户名/仓库名
    • GITHUB_TARGET_DIR:GitHub上要存放制品的目标目录,比如dist/release
  • 确保GitLab Runner有git、unzip、curl等基础命令的执行环境

2. 编写.gitlab-ci.yml配置

下面是完整的配置示例,分为构建生成制品、推送制品到GitHub两个阶段:

stages:
  - build
  - deploy_github

# 构建阶段,生成你的制品
build_job:
  stage: build
  script:
    # 这里替换为你自己的构建命令,比如npm run build、mvn package等
    - echo "模拟构建生成制品"
    - mkdir build_output
    - echo "构建产物内容" > build_output/result.txt
  # 定义要归档的制品
  artifacts:
    paths:
      - build_output/
    expire_in: 1 day

# 推送阶段,把制品解压后传到GitHub指定目录
deploy_github_job:
  stage: deploy_github
  dependencies:
    - build_job # 自动拉取build_job生成的制品
  only:
    - main # 可自定义触发分支,比如只有main分支构建才推送
  script:
    # 配置git身份
    - git config --global user.name "GitLab CI Bot"
    - git config --global user.email "ci@gitlab.com"
    # 可选:如果制品是zip包,先解压,这里build_output已经是解压后的目录,可按需调整解压逻辑
    # - unzip build_output.zip -d ./temp_artifacts
    # 浅克隆目标GitHub仓库,减少拉取体积
    - git clone --depth 1 https://$GITHUB_PAT@github.com/$GITHUB_REPO.git github_repo
    - cd github_repo
    - git checkout main # 替换为你要推送的目标分支
    # 清空目标目录旧内容(可选,按需开启)
    - rm -rf $GITHUB_TARGET_DIR/*
    # 把制品复制到目标目录
    - cp -rf ../build_output/* $GITHUB_TARGET_DIR/
    # 提交并推送
    - git add $GITHUB_TARGET_DIR
    - git commit -m "chore: 更新构建制品 来自GitLab pipeline $CI_PIPELINE_ID" || echo "无内容变更,跳过提交"
    - git push origin main

注意事项

  • 如果GitHub仓库开启了分支保护规则,需要将PAT对应的账号加入排除列表,或者给对应账号推送权限
  • 制品如果包含二进制文件,注意检查GitHub的文件大小限制,超过限制的大文件建议用Git LFS存储
  • 如果不需要保留目标目录的历史文件,提交前可以先执行删除旧文件的操作,避免冗余文件残留

内容的提问来源于stack exchange,提问作者spongy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 22:06:03