Travis CI:如何在.travis.yml中按分支配置环境变量
可以!现在Travis CI支持通过.travis.yml配置分支专属环境变量啦
之前的答案确实已经过时了——现在你完全可以在配置文件里针对特定分支设置专属环境变量,不用再只依赖页面配置。下面给你两种常用的实现方式:
方式1:直接在env字段里加分支条件判断
这种方式适合分支数量不多、只需要简单设置变量的场景,逻辑直观:
env: # 全局变量:所有分支都会生效 global: - COMMON_API_KEY="abc123" # 分支专属变量:通过if语句指定生效分支 matrix: - if: branch = main env: DEPLOY_TARGET="production" - if: branch = develop env: DEPLOY_TARGET="staging"
你还可以用更灵活的条件,比如匹配多个分支:if: branch IN (main, release/*),或者排除分支:if: branch != feature/*。
方式2:通过jobs.include做分支专属配置
如果需要给特定分支搭配更多个性化设置(比如不同的构建脚本、依赖),这种方式扩展性更强:
jobs: include: - stage: deploy # 仅main分支执行这个任务 if: branch = main env: - DEPLOY_ENV="prod" - PROD_DB_URL="mysql://user:pass@prod-db:3306" script: npm run deploy:prod - stage: deploy # 仅develop分支执行这个任务 if: branch = develop env: - DEPLOY_ENV="dev" - DEV_DB_URL="mysql://user:pass@dev-db:3306" script: npm run deploy:dev
这种方式下,每个分支的任务可以完全独立,变量、脚本、甚至阶段都能自定义。
小提醒
- 页面配置的环境变量优先级比.yml里的高,如果两者同名,页面的会覆盖配置文件的;
- 全局变量会和分支专属变量合并,不会冲突(除非同名);
- 条件判断还能结合标签、PR状态等,比如
if: tag IS present可以给打标签的版本设置专属变量。
内容的提问来源于stack exchange,提问作者kharandziuk
相关产品推荐
相关产品推荐

