Release #111
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release | |
on: | |
workflow_dispatch: | |
inputs: | |
version: | |
description: 'Version to release' | |
required: true | |
env: | |
SIGNING_KEY_FILE_PATH: /home/runner/secretKey.gpg | |
jobs: | |
#First we build | |
build_aar: | |
name: Build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Set up Java | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'microsoft' | |
#After decoding the secret key, place the file in ~ /. Gradle/ secring.gpg | |
- name: Decode Signing Key | |
uses: ./.github/actions/decode_signing_key_action | |
with: | |
signing_key_file: ${{ secrets.SIGNING_KEY_FILE }} | |
signing_file_path: ${{ env.SIGNING_KEY_FILE_PATH }} | |
- name: Assemble | |
run: ./gradlew --stacktrace assemble -x :Demo:assemble # we exclude Demo from assemble | |
env: | |
SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }} | |
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }} | |
SIGNING_KEY_FILE: ${{ env.SIGNING_KEY_FILE_PATH }} | |
#Once building is finished, we unit test every module in parallel | |
unit_test_core: | |
name: CorePayments Unit Tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Set up Java | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'microsoft' | |
- name: Run Unit Tests | |
uses: ./.github/actions/unit_test_module | |
with: | |
module: CorePayments | |
unit_test_card: | |
name: CardPayments Unit Tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Set up Java | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'microsoft' | |
- name: Run Unit Tests | |
uses: ./.github/actions/unit_test_module | |
with: | |
module: CardPayments | |
unit_test_paypal_web: | |
name: PayPal Web Payments Unit Tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Set up Java | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'microsoft' | |
- name: Run Unit Tests | |
uses: ./.github/actions/unit_test_module | |
with: | |
module: PayPalWebPayments | |
unit_test_fraud_protection: | |
name: Fraud Protection Unit Tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Set up Java | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'microsoft' | |
- name: Run Unit Tests | |
uses: ./.github/actions/unit_test_module | |
with: | |
module: FraudProtection | |
unit_test_finished: | |
needs: [unit_test_card, unit_test_core, unit_test_paypal_web, unit_test_fraud_protection] | |
name: All Unit Test finished | |
runs-on: ubuntu-latest | |
steps: | |
- run: echo "Unit test finished" | |
# after build and unit tests are finished, publish all modules at once | |
# to help reduce the probability of failure when interacting with sonatype servers | |
publish_all_modules: | |
needs: [ unit_test_finished, build_aar ] | |
name: Publish All Modules To Sonatype | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Set up Java | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'microsoft' | |
- name: Decode Signing Key | |
uses: ./.github/actions/decode_signing_key_action | |
with: | |
signing_key_file: ${{ secrets.SIGNING_KEY_FILE }} | |
signing_file_path: ${{ env.SIGNING_KEY_FILE_PATH }} | |
- name: Update Version | |
run: | | |
./gradlew -PversionParam=${{ github.event.inputs.version }} changeReleaseVersion | |
- name: Publish All Modules | |
uses: ./.github/actions/publish_all_modules | |
with: | |
sonatype_usr: ${{ secrets.SONATYPE_NEXUS_USERNAME }} | |
sonatype_pwd: ${{ secrets.SONATYPE_NEXUS_PASSWORD }} | |
signing_key_id: ${{ secrets.SIGNING_KEY_ID }} | |
signing_key_pwd: ${{ secrets.SIGNING_KEY_PASSWORD }} | |
signing_key_file: ${{ env.SIGNING_KEY_FILE_PATH }} | |
# Once all releases are done, we bump version, tag it and prepare next | |
bump_version: | |
needs: [ publish_all_modules ] | |
name: Bump Version | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Set up Java | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'microsoft' | |
- name: Set github user | |
uses: ./.github/actions/set_github_user | |
- name: Update Version | |
run: | | |
./gradlew -PversionParam=${{ github.event.inputs.version }} updateCHANGELOGVersion | |
./gradlew -PversionParam=${{ github.event.inputs.version }} changeReleaseVersion | |
git add . | |
git commit -m 'Bump version to ${{ github.event.inputs.version }}' | |
git tag ${{ github.event.inputs.version }} -a -m 'Release ${{ github.event.inputs.version }}, by ${{ github.actor }}' | |
./gradlew incrementSnapshotVersion | |
git add . | |
git commit -m 'Next version ready' | |
git push origin HEAD ${{ github.event.inputs.version }} | |
- name: Save changelog entries to a file | |
run: sed -e '1,/##/d' -e '/##/,$d' CHANGELOG.md > changelog_entries.md | |
- name: Create GitHub release | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ github.event.inputs.version }} | |
release_name: ${{ github.event.inputs.version }} | |
body_path: changelog_entries.md | |
draft: false | |
prerelease: false |