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
相关产品推荐
相关产品推荐

