All Projects → sergejsha → autoplay

sergejsha / autoplay

Licence: Apache-2.0 license
Gradle plugin for publishing Android artifacts to Google Play.

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to autoplay

Autoplay
Gradle plugin for publishing Android artifacts to Google Play.
Stars: ✭ 201 (-1.47%)
Mutual labels:  play, publish
apkup
🚀 Publish APKs to Google Play directly from the terminal
Stars: ✭ 33 (-83.82%)
Mutual labels:  google-play, play
dead-simple
💀💡 Dead simple PubSub and EventEmitter in JavaScript
Stars: ✭ 21 (-89.71%)
Mutual labels:  publish
publish
Publish your module with one command in Deno.
Stars: ✭ 16 (-92.16%)
Mutual labels:  publish
boombeastic
A Raspberry Pi based smart connected speaker with support for airplay, spotify, mpd and local playback
Stars: ✭ 206 (+0.98%)
Mutual labels:  play
foster
An easy way to publish your python packages.
Stars: ✭ 31 (-84.8%)
Mutual labels:  publish
szkolny-android
Nieoficjalna aplikacja do obsługi najpopularniejszych dzienników elektronicznych w Polsce.
Stars: ✭ 118 (-42.16%)
Mutual labels:  google-play
play-ebean
Play Ebean module
Stars: ✭ 29 (-85.78%)
Mutual labels:  play
google-play-billing-validator
Npm module for Node.js to validate In-app purchases and Subscriptions on your backend
Stars: ✭ 72 (-64.71%)
Mutual labels:  google-play
mc-publish
GitHub Action that helps you publish your Minecraft mods
Stars: ✭ 76 (-62.75%)
Mutual labels:  publish
gplayweb
GPlayWeb: A Web interface for GPlayCli
Stars: ✭ 23 (-88.73%)
Mutual labels:  play
micropython-adafruit-mqtt-esp8266
Using MQTT to Publish/Subscribe to adafruit io. MicroPython/CircuitPython implementation on ESP8266/ESP32
Stars: ✭ 53 (-74.02%)
Mutual labels:  publish
fastapi websocket pubsub
A fast and durable Pub/Sub channel over Websockets. FastAPI + WebSockets + PubSub == ⚡ 💪 ❤️
Stars: ✭ 255 (+25%)
Mutual labels:  publish
prepublish
Simplifies the prepare step (bundling, transpiling, rebasing) during publishing NPM packages.
Stars: ✭ 21 (-89.71%)
Mutual labels:  publish
webplayer-hotkeys
A Chrome extension that assigns hotkeys to play/pause, and switch musics (next and previous). Works with Spotify, Deezer, SoundCloud and Youtube
Stars: ✭ 16 (-92.16%)
Mutual labels:  play
angular-PubSub
Angular 1.x implementation of the Publish–Subscribe pattern.
Stars: ✭ 32 (-84.31%)
Mutual labels:  publish
gba-remote-play
Stream Raspberry Pi games to a GBA via Link Cable
Stars: ✭ 356 (+74.51%)
Mutual labels:  play
becquerel
Gateway server that provides an OData interface to BigQuery and Elasticsearch
Stars: ✭ 17 (-91.67%)
Mutual labels:  play
Open-Mam
Open Source Mobile Application Management (WORK IN PROGRESS)
Stars: ✭ 28 (-86.27%)
Mutual labels:  play
gplaydl
Command Line Google Play APK downloader. Download APK files to your PC directly from Google Play Store.
Stars: ✭ 212 (+3.92%)
Mutual labels:  google-play

Build Status Maven Central Gradle License

autoplay

Autoplay

Gradle plugin for publishing Android artifacts to Google Play.

Features

  • Autoplay is optimized for CI/CD usage:

    • it does not trigger assembly task automatically - you can reuse build artifacts from previous build steps;
    • it accepts JSON key as base64-encoded string from external secure variables.
  • Autoplay is developer friendly:

    • it does not require storing any dummy keys in source control;
    • it has a single publish task for uploading artifacts (apk or app bundle) and release notes.
  • Autoplay is reliable and future-proof:

    • it has clean and concise implementation, which is easy to understand, extend and fix;
    • it's covered by unit tests;
    • it's built using latest tools and API's.

Usage

In the main build.gradle

buildscript {
  repositories {
    google()
    mavenCentral()
  }
  dependencies {
    classpath "de.halfbit:autoplay:<version>"
  }
}

Latest published version can be found at Maven central

Gradle compatibility

Autoplay Version Gradle Version AGP Version
1.3.x 4.8.x
2.3.x 4.10.x
3.0.x 5.x, 6.x, 7.x 3.x
4.0.x 6.x 4.0.x, 4.1.x

Publishing apk

In the application module's build.gradle

apply plugin: 'com.android.application'
apply plugin: 'android-autoplay'

autoplay {
    track "internal"
    secretJsonBase64 project.hasProperty('SECRET_JSON') ? project.property('SECRET_JSON') : ''
}

Execute ./gradlew tasks and you will see a new publishing task publishApk<BuildVariant> in the list. Autoplay adds this task for each build variant of release type. For a project without custom build flavors the task is named publishApkRelease.

Publishing app bundle

In the application module's build.gradle

apply plugin: 'com.android.application'
apply plugin: 'android-autoplay'

autoplay {
    track "internal"
    artifactType "bundle"
    secretJsonBase64 project.hasProperty('SECRET_JSON') ? project.property('SECRET_JSON') : ''
}

Execute ./gradlew tasks and you will see a new publishing task publishBundle<BuildVariant> in the list. Autoplay adds this task for each build variant of release type. For a project without custom build flavors the task is named publishBundleRelease.

Central build

Now you can call this task from a central build script. Here is an example of how to use it with Gitlab CI.

stages:
  - assemble
  - release

assemble:
  stage: assemble
  only:
    - master
  script:
    - ./gradlew clean bundleRelease -PSTORE_PASS=${STORE_PASS} -PKEY_PASS=${KEY_PASS}
  artifacts:
    paths:
      - app/build/outputs/

release:
  stage: release
  dependencies:
    - assemble
  only:
    - master
  script:
    - ./gradlew publishBundleRelease -PSECRET_JSON=${SECRET_JSON}

You can encode JSON key file into base64 string using following shell command (linux, mac)

base64 -i secret.json -o -

and provide the value to the build script using a protected variable.

Publishing Release Notes

Autoplay takes apk and obfuscation mapping files (or app bundle file, if artifactType "bundle" is set) for uploading from the default build output directories. Release notes are to be stored under src/main/autoplay/release-notes directory in accordance to the structure shown down below.

src
  +- main
       +- java
       +- autoplay
            +- release-notes
                 +- <track>           e.g. internal
                     +- <locale>.txt  e.g. en-US.txt

Properties

Autoplay supports following gradle.properties

Name Default Description
autoplay.connectTimeout 120000ms Connection establishment timeout in milliseconds.
autoplay.readTimeout 120000ms Connection reading timeout in milliseconds.

Happy continuous integration!

License

Copyright 2018-2021 Sergej Shafarenka, www.halfbit.de

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].