Mengotomatiskan publikasi aplikasi ke Google Play menggunakan Jenkins

Untuk ini yang kita butuhkan





  1. Akun Pengembang Google Play yang valid





  2. Server Linux dengan Docker sudah diinstal sebelumnya, dalam kasus saya adalah Ubuntu 16.04





  3. SDK Android yang diinstal





  4. Jenkins - dalam hal ini, kami akan menerapkannya menggunakan Docker





  5. Gitea - Layanan yang nyaman untuk repositori Git kita sendiri (tidak perlu menggunakan GItHub juga), kami juga akan meningkatkannya berdasarkan container Docker





Menyiapkan Akun Google Play

Anggaplah Anda adalah pengembang yang sudah ada dan telah menerbitkan aplikasi Anda dalam mode manual, yang menunjukkan bahwa Anda mengetahui poin utama dari proses dan tidak boleh disuarakan, kami hanya akan menyentuh apa yang kami perlukan untuk penerapan otomatis.





  1. Masuk ke Google Cloud Platform, jika proyek belum dibuat, buatlah





  2. Di bagian IAM dan administrasi - Akun layanan, klik Buat akun layanan





  3. Setelah mengisi kolom yang sesuai, itu akan dibuat dan akan muncul di daftar, klik pada tiga titik di sebelah kanan dan pilih buat kunci, pilih JSON, simpan, kita akan membutuhkannya untuk mengkonfigurasi Jenkins





  4. Masuk ke Konsol Pengembang Gooogle Play





  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. Jika Anda menggunakan sistem Git lain untuk menyimpan kode Anda, maka Anda dapat menempatkan kode yang sama secara manual di .git \ hooks \ post-update





Kesimpulan

Jika ada tanggapan positif dari artikel tersebut, di bagian selanjutnya saya akan memberi tahu Anda cara menulis bot Telegram untuk memberi tahu penguji Anda tentang ketersediaan pembaruan aplikasi di Google Play.





Saya harap informasi ini berguna dan akan membuat hidup Anda lebih mudah untuk menyiapkan penerbitan otomatis.








All Articles