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

GitLab CI中build_develop成功后deploy_develop_telegram未触发问题

问题原因及解决办法

核心问题

你的deploy_develop_telegram任务未配置触发规则(rules/only/except),GitLab CI会启用默认规则:仅在直接推送分支(而非合并请求)时运行该任务。但你的build_develop任务规则是:

  • 仅当合并请求目标分支为develop时才运行
  • 直接推送develop分支时不运行

这就导致:当build_develop被合并请求触发运行时,deploy_develop_telegram的默认触发条件不满足(不是直接推送分支),因此不会被纳入流水线执行。

解决办法

给deploy_develop_telegram添加与build_develop完全一致的触发规则,确保两者的触发条件匹配:

修改后的完整配置如下:

image: hmmmk/androidbuildenv-jdk17-api33:latest

stages:
  - build
  - deploy

# TODO: replace with assembleRelease
build_main:
  stage: build
  script:
    - ./gradlew assembleDebug
  artifacts:
    paths:
      - app/build/outputs/
  rules:
    - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"'
      when: always
    - if: '$CI_COMMIT_REF_NAME == "main"'
      when: never

build_develop:
  stage: build
  script:
    - ./gradlew assembleDebug
  artifacts:
    paths:
      - app/build/outputs/
  rules:
    - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"'
      when: always
    - if: '$CI_COMMIT_REF_NAME == "develop"'
      when: never

deploy_develop_telegram:
  stage: deploy
  script:
    - apk_file=$(find app/build/outputs/ -name "*.apk" | head -n 1)
    - echo "Sending $apk_file to Telegram..."
    - curl -F chat_id="-1" -F document=@"$apk_file" -F caption="New APK build from CI" https://api.telegram.org/botid/sendDocument
  needs: ["build_develop"]
  rules:
    - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"'
      when: always
    - if: '$CI_COMMIT_REF_NAME == "develop"'
      when: never

额外说明

  • needs仅定义任务间的依赖关系,不会改变任务自身的触发条件,必须保证触发规则一致才能让依赖任务同时进入流水线。
  • 如果后续需要直接推送develop分支时也触发构建和部署,可调整build_develop和deploy_develop_telegram中对应规则的when值为always,或直接删除该规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:56:03