このために私たちは必要です
有効なGooglePlayデベロッパーアカウント
DockerがプリインストールされたLinuxサーバー。私の場合はUbuntu16.04です。
インストールされたAndroidSDK
Jenkins-この場合、Dockerを使用してデプロイします
Gitea-独自のGitリポジトリに便利なサービス(GItHubも使用する必要はありません)。Dockerコンテナに基づいてレイズします。
GooglePlayアカウントの設定
あなたが既存の開発者であり、アプリケーションを手動モードで公開していると仮定します。これは、プロセスの要点を理解していて、声を出してはならないことを示唆しています。自動展開に必要なものだけに触れます。
Google Cloud Platformにログインします。プロジェクトがまだ作成されていない場合は、作成します。
[IAMと管理]セクション-[サービスアカウント]で、[サービスアカウントの作成]をクリックします
適切なフィールドに入力すると、作成されてリストに表示されます。右側の3つのドットをクリックして、[キーの作成]を選択し、[JSON]を選択して保存します。これは、Jenkinsを構成するために必要です。
GoooglePlayデベロッパーコンソールにログインします
email , ( )
, .
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でのアプリケーションアップデートの可用性についてテスターに通知するテレグラムボットを作成する方法を説明します。
この情報がお役に立てば幸いです。自動公開を設定するのに、どういうわけかあなたの生活が楽になるでしょう。