-
-
Save vinicioslc/b9bd073c8013a726033a999db68a45be to your computer and use it in GitHub Desktop.
# This is a basic workflow to help you get started with Actions | |
name: CD Internal-Lane | |
# Controls when the action will run. Triggers the workflow on push or pull request | |
# events but only for the master branch | |
on: | |
push: | |
tags: | |
- "internal-v*.*.*" # on every version tag will build a new android artifact example: v3.1.2+6 | |
jobs: | |
build: | |
name: Build Artifacts and Release | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- name: Setup Java | |
uses: actions/setup-java@v1 | |
with: | |
java-version: "12.x" | |
- name: Setup Flutter | |
uses: subosito/flutter-action@v1 | |
with: | |
flutter-version: "1.17.5" | |
- name: Decode android/neumodore_key.jks | |
run: echo "${{ secrets.KEYSTORE_JKS_PROD }}" | base64 --decode > android/keystore.jks | |
- name: Decode android/key.properties | |
run: echo "${{ secrets.KEY_PROPERTIES_PROD }}" | base64 --decode > android/key.properties | |
- uses: olegtarasov/get-tag@v2 # that generate $GIT_TAG_NAME env | |
id: tagName | |
with: | |
tagRegex: 'internal-v([0-9]+.[0-9]+.[0-9]+\+[0-9]+)' # Optional. Returns specified group text as tag name. Full tag string is returned if regex is not defined. | |
tagRegexGroup: 1 # Optional. Default is 1. | |
- name: Replace YAML version with tag version | |
run: | | |
sed -i 's/99.99.99+99/'$GIT_TAG_NAME'/g' pubspec.yaml| | |
echo "Tag used version:"$GIT_TAG_NAME | |
- name: Pub Get Packages | |
run: flutter pub get | |
- name: Build APPBUNDLE | |
run: flutter build appbundle --release | |
- name: Create Github Release | |
uses: ncipollo/release-action@v1 | |
with: | |
artifacts: "build/app/outputs/bundle/release/*.aab" | |
token: ${{ secrets.PERSONAL_RELEASE_TOKEN }} | |
- name: Save APPBUNDLE to Artifacts | |
uses: actions/upload-artifact@v2 | |
with: | |
name: APPBUNDLE | |
path: build/app/outputs/bundle/release/app-release.aab | |
release_internal: | |
name: Release Artifacts to internal track | |
needs: [build] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- name: Get APPBUNDLE from Artifacts | |
uses: actions/download-artifact@v2 | |
with: | |
name: APPBUNDLE | |
- name: Release APPBUNDLE to internal track | |
uses: r0adkll/upload-google-play@v1 | |
with: | |
serviceAccountJsonPlainText: ${{ secrets.GOOGLE_SERVICE_JSONKEY }} | |
packageName: com.example.app | |
releaseFile: app-release.aab | |
track: internal | |
whatsNewDirectory: distribution/whatsnew |
@vinicioslc Thanks for sharing, this is quite helpful
๐ thanks
How if we want to build to iOS and upload them to firebase distribution?
Thanks for this jewel. For it to work I have to commit my keystore file to github as well??
Hey man grat work, how can I store a jks file into a secret? Should I convert the file into a string through gpg?
Hey man grat work, how can I store a jks file into a secret? Should I convert the file into a string through gpg?
you need encode the entire file as base64 save the content to your repository secrets and it will be written before build process to .jks location in step "Decode android/neumodore_key.jks"
Thanks for this jewel. For it to work I have to commit my keystore file to github as well??
No you will encode to base64 and save it to your repository secrets as mentioned on file step "Decode android/neumodore_key.jks"
Off course I added it
omg i didn't expect this, thanks a lot!
@vinicioslc Let us do it one more time.. This time with PayPal. Drop me your PayPal address. To keep you hanging just know that you will receive it before Christmas..๐ ๐ .
Just showing appreciation for this gist once again..lol. And I will continue doing so from time to time.
@vinicioslc Yes I am serious ๐. Is there a way you can change the currency to United States Dollar for me on that donation link? I want to avoid exchange rate hassles..lol. I will send as USD then you do what you do.
You can consider it a Christmas present..lol
@TafadzwaD Sorry, paypal only accepts BRL on this link because the bank account is in my country however there is an alternative.
https://ko-fi.com/vinicioslc
You can submit through the Ko-Fi platform they accept Paypal in USD, which does not charge taxes or take percentages.
You can also leave a Christmas message ehehe ๐คฉ
- name: Decode android/neumodore_key.jks run: echo "${{ secrets.KEYSTORE_JKS_PROD }}" | base64 --decode > android/keystore.jks - name: Decode android/key.properties run: echo "${{ secrets.KEY_PROPERTIES_PROD }}" | base64 --decode > android/key.properties
Just to make sure this is only required if you don't version control your release keys right?
@joshpetit yes and are recommended that you don't version control your release keys.
@joshpetit yes and are recommended that you don't version control your release keys.
Oh really? Even for a private repository?
@joshpetit Yes it's not recommended even in a private repository.
@joshpetit
Yes, yes because if the attacker gets access to the repository, once time that it reach here, will get access to the entire publishing workflow, allowing it to scale this attack.
But if its only for test purposes i don't see any problems, like an unimportant app.
@joshpetit Yes it's not recommended even in a private repository.
nice
Oh interesting that makes sense. Thanks!
@vinicioslc I haven't forgotten our Christmas tradition.. Anytime your Ko-Fi account will shake๐๐..
Oh @TafadzwaD thanks dude! I haven't forgotten you <3, you are the best!
Hi @vinicioslc I would also greatly appreciate participating in this Christmas tradition ๐ do you think you could make this workflow up to date ?
@vinicioslc Sorry the Christmas gift came late๐๐๐. Check your Kofi account!! Better late than never.
@vinicioslc Sorry the Christmas gift came late๐๐๐. Check your Kofi account!! Better late than never.
I have just replied on ko-fi man ! please see here you are the best!
Thanks man!
@TafadzwaD
Hi man, how are you?
I am a Flutter programmer looking for a job. Can I cooperate with you?
@vinicioslc Thanks for sharing, this is quite helpful