Jenkinsを使用したGooglePlayへのアプリ公開の自動化

このために私たちは必要です





  1. 有効なGooglePlayデベロッパーアカウント





  2. DockerがプリインストールされたLinuxサーバー。私の場合はUbuntu16.04です。





  3. インストールされたAndroidSDK





  4. Jenkins-この場合、Dockerを使用してデプロイします





  5. Gitea-独自のGitリポジトリに便利なサービス(GItHubも使用する必要はありません)。Dockerコンテナに基づいてレイズします。





GooglePlayアカウントの設定

あなたが既存の開発者であり、アプリケーションを手動モードで公開していると仮定します。これは、プロセスの要点を理解していて、声を出してはならないことを示唆しています。自動展開に必要なものだけに触れます。





  1. Google Cloud Platformにログインします。プロジェクトがまだ作成されていない場合は、作成します。





  2. [IAMと管理]セクション-[サービスアカウント]で、[サービスアカウントの作成]をクリックします





  3. 適切なフィールドに入力すると、作成されてリストに表示されます。右側の3つのドットをクリックして、[キーの作成]を選択し、[JSON]を選択して保存します。これは、Jenkinsを構成するために必要です。





  4. GoooglePlayデベロッパーコンソールにログインします





  5. email , ( )





  6. , .





Android SDK

# Install latest JDK
sudo apt install default-jdk

sudo apt install android-sdk

      
      



Android SDK PATH,  ~/.bashrc



 





# Export the Android SDK path 
export ANDROID_HOME=$HOME/android-sdk
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools

# Fixes sdkmanager error with java versions higher than java 8
export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
      
      







source ~/.bashrc
      
      







sdkmanager --list
      
      







sdkmanager "platform-tools" "platforms;android-28"
      
      



Android SDK , ,





Gitea

git GitHub , . ( gitea Telegram Bot`a )





https://docs.gitea.io/en-us/install-with-docker/





2





1) Gitea , Docker HUB





version: '2'
services:
  web:
    image: gitea/gitea:1.12.4
    volumes:
      - ./data:/data
    ports:
      - "3000:3000"
      - "22:22"
    depends_on:
      - db
    restart: always
  db:
    image: mariadb:10
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=changeme
      - MYSQL_DATABASE=gitea
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=changeme
    volumes:
      - ./db/:/var/lib/mysql
      
      



2) docker-compose you_filename





3) Gitea URL http://you_IP:3000/





4) , , PUSH , ( , volume jenkins gradle , )





apk , keystore gradle ,





// Load keystore
def keystorePropertiesFile = rootProject.file("keystore.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

// GenerateNameVersion
def getVersionNameTimestamp() {
    return new Date().format('yy.MM.ddHHmm')
}

// GenerateVersionCode
def getVersionCodeTimestamp() {
    def date = new Date()
    def formattedDate = date.format('yyMMddHHmm')
    def code = formattedDate.toInteger()
    println sprintf("VersionCode: %d", code)
    return code
}

......

android {
    signingConfigs {
        config {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
    }
......
    defaultConfig {
        versionCode getVersionCodeTimestamp()
        versionName "${getVersionNameTimestamp()}"
      
      



keystore.properties





storePassword=you_password_keystore
keyPassword=you_password_key
keyAlias=you_key_name
storeFile=path_to_keystore_file
      
      



  • keystore.properties keystore , GitHub, OpenSource , .





  • Google Play , Gradle , , , - deploy (PUSH)





Jenkins

Docker , , ,





docker run -it -d -v jenkins_home:/var/jenkins_home -v /usr/lib/android-sdk:/usr/lib/android-sdk -p 8080:8080 -p 50000:50000 --env JENKINS_OPTS="--prefix=/jenkins" --restart always leganas/ls_repository:jenkins
      
      



volumes Android SDK





http://you_IP:8080/jenkins/





Jenkins ,





1) , System Configuration - , Environment variables ( )









2) - Git Gradle ( )





3) - , , API Token , , .





4) Git, Git client, Google OAuth Credentials plugin, Google Play Android Publisher





5) - Manage Credentials Configure credentials -Store - Jenkins - Global credentials (unrestricted)- 2 |





  • Git





    .. Gitea login/password , GitHub





  • Google Play Market





    JSON





6) Jenkins





  • - Git , Repository URL Credentials ( )





  • - Trigger builds remotely (e.g., from scripts), ( ) GIt huck





  • Invoke Gradle script , -





Release traack , , " "





7) Web Jenkins - Git /master , , Google Play.





Google Play , deploy Git PUSH /master





1) Gitea - - Git , post-receive ,





#!/bin/bash
while read oldrev newrev refname
do
    branch=$(git rev-parse --symbolic --abbrev-ref $refname)
    if [ "master" = "$branch" ]; then
       curl --user you_user_name:you_user_token http://you_url_jenkins/job/you_project/build?token=you_tocken_build
    fi
done
      
      



  • you_user_name - jenkins





  • you_user_token -





  • you_url_jenkins Jenkins :





Jenkins PUSH master .





PS。別のGitシステムを使用してコードを保存している場合は、同じコードを手動で.git \ hooks \ post-updateに配置できます。





結論

記事からの肯定的なフィードバックの場合は、次のパートで、GooglePlayでのアプリケーションアップデートの可用性についてテスターに​​通知するテレグラムボットを作成する方法を説明します。





この情報がお役に立てば幸いです。自動公開を設定するのに、どういうわけかあなたの生活が楽になるでしょう。








All Articles