Skip to content

Releasing PinAuthentication

  • Create a local release branch from master

    git checkout master
    git pull
    git checkout -b release_1.0.0-beta02
    

  • Update VERSION_NAME (remove -SNAPSHOT) in gradle.properties

    VERSION_NAME=1.0.0-beta02
    

  • Update the current version and next version in mkdocs.yml

    extra:
      pin_authentication:
        release: '1.0.0-beta02'
        next_release: 'REPLACE_WITH_NEXT_VERSION_NUMBER'
    

  • Generate the Dokka docs

    rm -rf docs/pin-authentication
    ./gradlew pin-authentication:dokka
    

  • Update the Demo App if changes were made to documentation in the PinAuthentication class:

    scripts/comments_to_string_resource.sh && gedit scripts/output.txt scripts/output.bak.txt demo/src/main/res/values/strings.xml
    

    • Tweak the strings to 45-50 characters per line & add headers
      • ex: \n//////////// Listeners ////////////\n
    • Copy/Paste new strings into demo/src/main/res/values/strings.xml resource file fields
      • text_view_settings_features
      • text_view_controller_features
    • Save files
    • Delete output.bak.txt
      rm -rf scripts/output.bak.txt
      
  • Update docs/changelog.md after checking out all changes:

  • Take one last look

    git diff
    

  • Commit all local changes and PGP sign

    git commit -S -am "Prepare 1.0.0-beta02 release"
    

  • Perform a clean build

    ./gradlew clean
    ./gradlew build
    

  • Sign the Demo App release apk

    scripts/sign_demo_release_build.sh
    

  • Install the Demo App’s release.apk and ensure it works properly.

  • Create a PGP signed tag, and push it

    git tag -s 1.0.0-beta02 -m "Release v1.0.0-beta02"
    git push origin 1.0.0-beta02
    

  • Make sure you have valid credentials in ~/.gradle/gradle.properties to sign and upload the artifacts

    SONATYPE_NEXUS_USERNAME=<Your Username>
    SONATYPE_NEXUS_PASSWORD=<Your Password>
    
    signing.gnupg.homeDir=/home/matthew/.gnupg/
    signing.gnupg.optionsFile=/home/matthew/.gnupg/gpg.conf
    signing.gnupg.keyName=0x61471B8AB3890961
    

  • Upload the artifacts to Sonatype OSS Nexus

    ./gradlew uploadArchives --no-daemon --no-parallel
    

  • Release to Maven Central

    • Login to Sonatype OSS Nexus: oss.sonatype.org
    • Click on Staging Repositories
    • Scroll to the bottom, you should see an entry named iomatthewnelson-XXXX
    • Check the box next to the iomatthewnelson-XXXX entry, click Close then Confirm
    • Wait a bit, hit Refresh, until the Status for that column changes to Closed.
    • Check the box next to the iomatthewnelson-XXXX entry, click Release then Confirm
  • Merge the release branch to master

    git checkout master
    git pull
    git merge --no-ff -S release_1.0.0-beta02
    

  • Update VERSION_NAME (increase version and add -SNAPSHOT) and VERSION_CODE in gradle.properties

    VERSION_NAME=REPLACE_WITH_NEXT_VERSION_NUMBER-SNAPSHOT
    VERSION_CODE=INCREMENT
    

  • Commit your changes and sign with PGP keys

    git commit -S -am "Prepare for next development iteration"
    

  • Push your changes

    git push
    

  • Wait for the release to become available on Maven Central, then:

    • Redeploy the docs:
      • pipenv shell
      • mkdocs serve to check locally
      • mkdocs gh-deploy to deploy
      • exit
    • Go to the Draft a new release page, enter the release name (1.0.0-beta02) as tag and title, and have the description point to the changelog. You can find the direct anchor URL from the Change Log page on the doc site.
    • Upload the demo-release-signed.apk to assets
  • Release the Demo App to the Play Store