如何从 GitHub Actions 中的 Android Gradle 文件获取版本名称?

Say*_*ame 5 android github github-actions

我必须使用 GitHub 操作提供的创建发布操作来创建发布。build.gradle 文件中的默认配置参数如下;

defaultConfig {
    applicationId "com.example.myapp"
    minSdk 21
    targetSdk 31
    versionCode 1
    versionName "1.0"

    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
Run Code Online (Sandbox Code Playgroud)

以及 GitHub Actions yml 文件中的操作,如下所示;

- name: Create Release
    id: create_release
    uses: actions/create-release@v1
    env:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    with:
      tag_name: <I need gradle version name here! It is 1.0>
      release_name: Release <I need gradle version name here! It is 1.0>
      body: |
        Release body
      draft: false
      prerelease: false
Run Code Online (Sandbox Code Playgroud)

如何获取 GitHub Actions yml 文件中的 gradle versionName 以创建 GitHub 版本?

Dan*_*ofr 16

我采取的路径使用了 gradle 任务。

在模块 build.gradle 中,其中版本名称是 gradle 的一个简单的 ext 属性,您可以将其设置为可在整个 gradle 文件中使用的变量。

task printVersionName {
  println project.ext.version_name
}
Run Code Online (Sandbox Code Playgroud)

在您的 github actions .yaml 文件中添加这些步骤。

- name : Retrieve Version
  run: |
   echo "::set-output name=VERSION_NAME::$(${{github.workspace}}/gradlew -q printVersionName)"
  id: android_version
Run Code Online (Sandbox Code Playgroud)

以下步骤用于将其保存到可在整个工作流程文件中使用的环境变量。

- name: Get version
  run: |
    echo "version_name=${{steps.android_version.outputs.VERSION_NAME}}" >> $GITHUB_ENV
Run Code Online (Sandbox Code Playgroud)

然后,您可以在整个工作流程文件中引用该值

${{env.version_name}}
Run Code Online (Sandbox Code Playgroud)