We have several things to note before making a build, first thing would be reviewing the ticket carefully to know what you need to do for that build, the most important things to note would be the Branding if any, EMV config if any, DexGuard Licence if any, SHA Hash Key if any, package name, reader type, build type, and Environment Confluence.
Some build types we have are:
- externalDev
- internalQA
- secure
- pilot (Production) BuildTypes defines what type of builds we're making.
Some readers type (readers_supported) are: The readers types are:
- InDevice
- InDevicePin
- Datecs
- Dspread Readers defines the type of readers the app supports.
We will make use of some tickets that we've already worked on as our example tickets for this process.
When a ticket is given, e.g https://mypinpad.atlassian.net/browse/VUBSVK-33 The requirement is to:
- Update EMV config file,
- Hide App icon from phone menu
To achieve this, we have to go to the project on our local machine On the projeect, first checkout to develop branch, git pull to get latest changes, then git checkout -b [branach-name] (in this case we use the ticket number plus description for the branch name, e.g VUBSVK-33/update_emv_config) to create a new branch for the task,
Now checking on the ticket, the title say New VUB Production build with correct EMV Configuration
meaning that we are to make a Production build.
So let's navigate to where we can update our EMV config file, on the project (android-goodfellow), then open app\src\client
, in here you'll see packages for different clients, for the seek of this example, we need circleblueintesa
, open circleblueintesa\indevice\vub
, inside of it we have two packages, dev
and live
, dev is for development builds, while live is for production builds, so we'll open live => res => raw
, inside raw we have emv_config.json
this is the file we need to update,
We can now go to the ticket and download the attached emv file, then replace with the one currently on the app.
Once done with updating the emv, next would be to HIDE THE APP ICON ON DEVEICE. To do that we need to go to the Manifest file for the client (Manifiest file inside circleblueintessa) and add this two line of code inside the activity
tools:ignore="AllowBackup,MissingApplicationIcon"
tools:node="mergeOnlyAttributes"
After that, next thing that should be done, would be to update build version on app build.gradle
, increase the patch number, example from 27 to 28.
Now we're ready to make a PR. Once PR is review/approve and Complete, go back to terminal and checkout to develop branch, pull to get update branch, checkout to qa branch, pull to update qa branch, rebase develop into qa, now we're ready to make our build tags
#Making Build tags
We create a build tag using this format: RELEASE-1.58.28-INDEVICEPIN-SODIUM_VUB_LIVE-PILOT
, 1.58.28
we know is the versioning number, INDEVICEPIN
is gotten from the ticket, Reader will be specified, SODIUM_VUB_LIVE
endpoint name (sodium-live-vub), it can be gotten by navigating to where we have all the endpoints, open prod.yaml
, search for VUB, then PILOT
is for live.
on the terminal type git tag 1.58.28
enter, then git tag RELEASE-1.58.28-INDEVICEPIN-SODIUM_VUB_LIVE-PILOT
enter, then git push --tags
, the git push
to push all changes on qa branch.
Now head over to the browser, open android-ternimal-app
repo, click on Pipelines, select Pipeline on the dialog that appears,
Then locate the Goodfellow-CI-Android-Prod
Then select Run pipeline
Click on develop, click on tags, enter the tag number, enter the endpoint name and the Reader type, then run the build.
See short samle clip below
https://drive.google.com/file/d/1nkLRVtg4nkULJOHL24Wt0dCpuNY8e0Bc/view?usp=sharing
Once the build is done, click to open, clip on artifact to get the build, or click on published to get the build,
Download build with protected and mapping file
You can then use clientside-wiki project to make a folder for your build
Sample templete
#externalDev , internalQA , secure , pilot
buildTypes=(“pilot”)
#InDevice , InDevicePin, Datecs , Dspread
readers=(“InDevicePin”)
envs=(“tungsten-live” “sodium-live”)
version=“1.56.13”
you can now upload your build to Release Candidate - Android
https://licentiagroup.sharepoint.com/sites/GoodfellowOpenMPOS/Shared%20Documents/Forms/AllItems.aspx?csf=1&web=1&e=yXP5An&cid=f9db9a1f%2D4022%2D45f9%2D8a5e%2Dcc2edbfdffb5&FolderCTID=0x012000CF477C05AEE46B4897359A94FBA55777&OR=Teams%2DHL&CT=1645618624771&sourceId=¶ms=%7B%22AppName%22%3A%22Teams%2DDesktop%22%2C%22AppVersion%22%3A%221415%2F22010300411%22%7D&id=%2Fsites%2FGoodfellowOpenMPOS%2FShared%20Documents%2FRelease%20Candidates%20%2D%20Android%2FApks%2FRelease%20Candidates&viewid=48e9af4d%2Dbcef%2D4db2%2Dba07%2Dce3a5b184f21
Share the link on the ticket
, share the link on the Mobile Deployments
channel and tag the reporter on the ticket, then share link on Release Candidates - Android
channel
You are done with that build, same thing applies if you're to make any other build.
Here we'll be using QA3 endpoint as an example, Sample ticket: https://mypinpad.atlassian.net/browse/OMP-2714 Sample PR: https://mypinpad.visualstudio.com/Goodfellow/_git/android-terminal-app/pullrequest/10755?_a=files
To add a new Endpoint, first confirm the ticket requirements, then proceed to Environment Confluence page
Here is the confluence page for QA3 (https://mypinpad.atlassian.net/wiki/spaces/OPS/pages/996704324/qa-3)
Using the information on the conflience page we can generate this code just following the previous pattern
The only thing that'll not be provided will be trusted-app: => dependency:
you have to generate it from android-ta-registry repo (https://dev.azure.com/mypinpad/SoftPOS/_git/android-ta-registry)
When you're on the repo, click on Pipelines and select Pipelines from the dialog,
On the list of Pipelines, select sbs - TA v3
On the list of Pipelines, select sbs - TA v3
, then click on Run pipeline
- buildServiceUrl: build-eu.global.vger.mypinpad.services
stackName: qa-3
category: nonlive
stackHost: terminal.qa-3.eu.dev.vger.mypinpad.services
taId: b7389f36-2376-47e8-02b8-08d9f31e5a64
Once the build is successful, go back to the android-ta-registry repo, then open nonelive,
Then locate qa3 folder, you should now see the generated files, the dependency is what we want, copy the dependency to the project
After that, you have to increase versioning number in app build.gradle.
Then add the new qa endpoint in mainline-pipeline.yml
Finally, it's to add the endpoint in android-pos-app
and create a PR