Akeebalize Your Extensions

35
Akeebalize Your Extensions how to quickly deploy releases

Transcript of Akeebalize Your Extensions

Page 1: Akeebalize Your Extensions

Akeebalize Your Extensionshow to quickly deploy releases

Page 2: Akeebalize Your Extensions

Why this Topic?one developer’s approach to streamline a tedious process

Page 3: Akeebalize Your Extensions

Tools

• Akeeba Subscriptions (Optional) - http://akeebabackup.com

• Akeeba Release System

• Akeeba Release Maker

https://github.com/akeeba/releasemaker

• Git - http://github.com

• Custom shell script

https://github.com/devkardia/jdayhou13

Page 4: Akeebalize Your Extensions

Not a Plug…okay so maybe it is a plug

Page 5: Akeebalize Your Extensions

Prerequisites

• Developer background

• Basic understanding of Git

• PHP 5.3+ Joomla! site (Akeeba minimum requirement)

• Basic understanding of Akeeba Subscriptions, Akeeba Release System, and Akeeba Release Maker

• *nix based OS

• Any batch experts are welcome to convert the shell script! May be able to use Cygwin for Windows (http://cygwin.com); but likely to be a bit of work to get all setup.

Page 6: Akeebalize Your Extensions

Nuts and Boltslet’s get started

Page 7: Akeebalize Your Extensions

Directory Structurepreparing the directory structure for the bash script

Page 8: Akeebalize Your Extensions
Page 9: Akeebalize Your Extensions

where does XYZ come from

Releases

Page 10: Akeebalize Your Extensions

Category config.json -> common.category

where does XYZ come from

Releases

Page 11: Akeebalize Your Extensions

Category config.json -> common.category

Description DESCRIPTION.html

where does XYZ come from

Releases

Page 12: Akeebalize Your Extensions

Category config.json -> common.category

Description DESCRIPTION.html

Notes RELEASENOTES.html + CHANGELOG (parsed)

where does XYZ come from

Releases

Page 13: Akeebalize Your Extensions

Category config.json -> common.category

Description DESCRIPTION.html

Notes RELEASENOTES.html + CHANGELOG (parsed)

Alias config.json -> common.version

where does XYZ come from

Releases

Page 14: Akeebalize Your Extensions

Category config.json -> common.category

Description DESCRIPTION.html

Notes RELEASENOTES.html + CHANGELOG (parsed)

Alias config.json -> common.version

MaturityLast part of configured version: a = alpha, b = beta, rc = release candidate, otherwise stable. 1.0.0a

where does XYZ come from

Releases

Page 15: Akeebalize Your Extensions

where does XYZ come from

Items

Page 16: Akeebalize Your Extensions

where does XYZ come from

Items

Category, Name, Description, Environments

Automatic item descriptions

Page 17: Akeebalize Your Extensions

where does XYZ come from

Items

Category, Name, Description, Environments

Automatic item descriptions

Akeeba Subscription Groups

config.json -> $prefix.groups (separated by commas)

Page 18: Akeebalize Your Extensions

where does XYZ come from

Items

Category, Name, Description, Environments

Automatic item descriptions

Akeeba Subscription Groups

config.json -> $prefix.groups (separated by commas)

Access config.json -> $prefix.access (separated by commas)

Page 19: Akeebalize Your Extensions

Setting up Akeeba Subscriptionslive demonstration

Page 20: Akeebalize Your Extensions

Key Point Summary

• Take note of the subscription’s ID as this is used in ARM’s config.json file.

Page 21: Akeebalize Your Extensions

Setting up Akeeba Release Systemlive demonstration

Page 22: Akeebalize Your Extensions

Key Point Summary

• Automatic item descriptions

• Package name pattern must match the format of the filename in order for the elements to be applied.

• Use a wildcard ( * ) to accomodate filename differences.

Page 23: Akeebalize Your Extensions

Akeeba Release Makerhttps://github.com/akeeba/releasemaker

Page 24: Akeebalize Your Extensions

ARM Configuration

• Copy the config.json file from within your ARM directory into the root of the extension’s tools directory.

Page 25: Akeebalize Your Extensions

Config.json Common Variables

common.version Release version (set by shell script)common.arsapiurl URL to Joomla sitecommon.username User with admin privileges to ARScommon.password User with admin privileges to ARScommon.category ARS Category IDcommon.releasedir Full file path to packagescommon.repodir Full file path to extension’s rootcommon.update.method ftp or s3common.update.ftp* FTP settingscommon.update.s3.* S3 settings

Page 26: Akeebalize Your Extensions

Config.json Pro/Core Variables

*.pattern Package file pattern (use asterisks wildcard)

*.groups Akeeba Subscription levels separated by a comma

*.access Joomla access level (ID of Guest, Public, Registered, Special, etc.)

*.update.* Update stream to be captured and created in another location.

*.method Means to create offsite update stream file

*.ftp.* FTP settings for creating offsite update stream file

*.s3.* S3 settings for creating offsite update stream file

Page 27: Akeebalize Your Extensions

Config.json PDF Variables

pdf.where core or pro; sets which prefix should PDF documents be associated with

pdf.files

Full file path to the extension’s PDFs. ARM will zip them and upload them as a new item under the new release.

Page 28: Akeebalize Your Extensions

releasemaker.shthe script that glues it all together

Page 29: Akeebalize Your Extensions

Script Usage./releasemaker.sh command

Command Options: packit package type Package Type Options:

developer - Creates a package with a version based on repository revision; if the package already exists, a WORKING package will be created so as to not overwrite your dev packages. Multiple files stored in tools/packages/developer

release version - Creates a package ready for release. Single file stored in /tools/packages/release. Only one zip is created since ARM will upload all zip files it finds.

Version Options 1.0.0.a/b/rc - a = alpha; b = beta; rc = release candidate and anything else = stable

releaseit - Invokes ARM to create new release on your site

Page 30: Akeebalize Your Extensions

https://github.com/devkardia/jdayhou13

Page 31: Akeebalize Your Extensions

https://github.com/devkardia/jdayhou13

Page 32: Akeebalize Your Extensions

https://github.com/devkardia/jdayhou13

Page 33: Akeebalize Your Extensions

https://github.com/devkardia/jdayhou13

Page 34: Akeebalize Your Extensions

https://github.com/devkardia/jdayhou13

Page 35: Akeebalize Your Extensions

Script Demonstration