【问题标题】:How to generate signed app bundle using jenkins?如何使用詹金斯生成签名的应用程序包?
【发布时间】:2020-07-20 10:35:55
【问题描述】:

使用 jenkins,我可以为我的应用程序生成一个发布应用程序包,但是,我陷入了下一步,这涉及为我的应用程序生成一个签名的应用程序包,以便我可以在 Playstore 上更新我的构建。那么有没有插件或任何其他方式可以让我在 jenkins 上为我的应用程序生成签名的应用程序包?

【问题讨论】:

    标签: android jenkins continuous-integration google-play-services jenkins-plugins


    【解决方案1】:

    这可以通过以下方式完成:

    1. 配置 Android 应用的 build.gradle 文件以从环境变量中获取签名信息(如果它们可用)。
    2. 通过 Jenkins UI 将签名密钥、别名和密码配置为 Jenkins 作业(秘密文件、秘密文本...)中的凭据。
    3. 使用凭据绑定插件从 Jenkinsfile 中的凭据中设置环境变量,从而将它们传递给 build.gradle。

    build.gradle中提取:

    apply plugin: 'com.android.application'
    
    def myStoreFile = System.getenv('MY_STORE_FILE')
    def myStorePassword = System.getenv('MY_STORE_PASSWORD')
    def myKeyAlias = System.getenv('MY_KEY_ALIAS')
    def myKeyPassword = System.getenv('MY_KEY_PASSWORD')
    
    android {
         ...
         
         signingConfigs {
             release {
                if (myStoreFile) {
                    storeFile rootProject.file(myStoreFile)
                    storePassword myStorePassword
                    keyAlias myKeyAlias
                    keyPassword myKeyPassword
                }
             }
         }
         buildTypes {
             release {
                ...
         
                if (myStoreFile && myStorePassword && myKeyAlias && myKeyPassword) {
                     signingConfig signingConfigs.release
                }
             }
         
         }
         ...
    }
    

    从 Jenkinsfile 中提取:

    stage ('Build and Sign Android Bundle') {
      ...
     
      steps {
        // Signing parameters are configured in Jenkins (here we use secret file, secret text and username with password respectively)
        // and are passed to the build.gradle file using the environment variables (MY_STORE_FILE, MY_KEY_ALIAS etc)
        withCredentials([file(credentialsId: 'android-store-file', variable: 'MY_STORE_FILE'),
                         string(credentialsId: 'android-store-password', variable: 'MY_STORE_PASSWORD'),
                         usernamePassword(credentialsId: 'android-key', usernameVariable: 'MY_KEY_ALIAS', passwordVariable: 'MY_KEY_PASSWORD')]) {
        
          dir ('android-app-root-directory') {        
            sh 'gradle clean bundleRelease'
          }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 1970-01-01
      • 2015-11-21
      相关资源
      最近更新 更多