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

如何从GitHub PR标题提取版本号更新Android应用versionName?

从PR标题提取版本号并自动更新Android versionName的GitHub Actions方案

核心需求实现步骤

  1. 调整流水线触发条件
    由于版本号来源于合并到master的PR标题,建议将触发条件改为PR合并事件,确保只有正式发布的PR才会触发部署:

    on:
      pull_request:
        branches: [ master ]
        types: [ closed ]
      push:
        branches: [ master ] # 保留原push触发,兼容直接推送场景
    
  2. 从PR标题提取versionName
    添加shell步骤,通过正则匹配提取标题中的版本号,并将其存入环境变量供后续步骤使用:

    - name: Extract versionName from PR title
      run: |
        # 匹配"Android App Release Vx.x.x"格式的标题,提取x.x.x部分
        VERSION_NAME=$(echo "${{ github.event.pull_request.title }}" | sed -n 's/^Android App Release V\([0-9]\+\.[0-9]\+\.[0-9]\+\)$/\1/p')
        echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_ENV
      if: github.event.pull_request.merged == true # 仅当PR合并时执行
    
  3. 同时更新versionCode和versionName
    修改现有的android-version-actions步骤,加入versionName参数,使用提取到的环境变量更新Gradle配置:

    - name: Bump version code and name
      uses: chkfung/android-version-actions@v1.2
      with:
        gradlePath: app/build.gradle.kts
        versionCode: ${{ github.run_number }}
        versionName: ${{ env.VERSION_NAME }}
      if: github.event.pull_request.merged == true || github.event_name == 'push'
    

完整修改后的流水线配置

name: Android CD Pipeline

on:
  pull_request:
    branches: [ master ]
    types: [ closed ]
  push:
    branches: [ master ]

jobs:
  build:
    name: Deploy Android App
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Set Up JDK 18
        uses: actions/setup-java@v3
        with:
          java-version: '18'
          distribution: 'temurin'

      - name: Extract versionName from PR title
        run: |
          VERSION_NAME=$(echo "${{ github.event.pull_request.title }}" | sed -n 's/^Android App Release V\([0-9]\+\.[0-9]\+\.[0-9]\+\)$/\1/p')
          echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_ENV
        if: github.event.pull_request.merged == true

      - name: Bump version code and name
        uses: chkfung/android-version-actions@v1.2
        with:
          gradlePath: app/build.gradle.kts
          versionCode: ${{ github.run_number }}
          versionName: ${{ env.VERSION_NAME }}
        if: github.event.pull_request.merged == true || github.event_name == 'push'

关键说明

  • 正则表达式^Android App Release V\([0-9]\+\.[0-9]\+\.[0-9]\+\)$严格匹配指定的PR标题格式,确保只提取合法的版本号。
  • 通过$GITHUB_ENV存储版本号,实现步骤间的变量传递。
  • 条件判断确保仅在PR合并或直接推送master时执行版本更新,避免无效触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:56:02