This repository has been archived by the owner on Nov 5, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 745
153 lines (130 loc) · 5.39 KB
/
internal_release.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
name: Internal Release
# Controls when the workflow will run
on:
# Triggers the workflow on push of version tag
push:
tags:
- 'v*'
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
internal_release:
# The type of runner that the job will run on
# Runs on macos-latest because Android Emulator won't HAXM hardware acceleration on Ubuntu
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Checkout GIT
uses: actions/checkout@v4
with:
fetch-depth: 0 #Fetch all history for all branches and tags
- name: Setup Java SDK
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '18'
- name: Setup Ruby (for Fastlane)
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.2'
- name: Install Fastlane
run: bundle install
#----------------------------------------------------
#Security
- name: Validate Gradle Wrapper checksum
uses: gradle/wrapper-validation-action@v2
- name: Make Gradle Wrapper (gradlew) executable
run: chmod +x gradlew
#----------------------------------------------------
#Optimization
- name: Enable Gradle Wrapper caching (optmization)
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
#---------------------------------------------------
#Run Unit Tests (Unit tests can be run by Fastlane)
#- name: Run Unit tests
# working-directory: ./app
# run: ./gradlew testDebugUnitTest
#-------------------------------------------------------------------
#Decode Secrets for production build
- name: Create JKS for prod signing
run: |
echo "$SIGNING_KEYSTORE_JKS" > sign.jks.b64
base64 -d -i sign.jks.b64 > sign.jks
env:
SIGNING_KEYSTORE_JKS: ${{ secrets.SIGNING_KEYSTORE }}
- name: Create Google Play Config file
run: |
echo "$PLAY_CONFIG_JSON" > play_config.json.b64
base64 -d -i play_config.json.b64 > google-play-console-user.json
env:
PLAY_CONFIG_JSON: ${{ secrets.GOOGLE_PLAY_CONSOLE_JSON }}
- name: List created files for DEBUG purposes
run: ls -ll
#--------------------------------------------------------------------------------
#Run UI tests & Lint analysis
- name: Verify that the code is release-able ("lintRelease")
run: bundle exec fastlane lint_release
- name: Upload Lint Release report to GitHub
uses: actions/upload-artifact@v4
with:
name: lint-release-report.html
path: app/build/reports/lint-results-release.html
#- name: Run UI Tests
# uses: reactivecircus/android-emulator-runner@v2
# with:
# api-level: 29
# script: bundle exec fastlane ui_tests
#- name: Upload Android Tests report to GitHub
# uses: actions/upload-artifact@v4
# with:
# name: android-tests-report
# path: app/build/reports/androidTests/connected
#--------------------------------------------------------------------------
#Fastlane: Build production .aab and release it to Internal Testing
- name: Build production App Bundle
run: bundle exec fastlane production_build
env:
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
- name: Upload App Bundle to GitHub
uses: actions/upload-artifact@v4
with:
name: app-release.aab
path: app/build/outputs/bundle/release/app-release.aab
- name: Release App Bundle to Internal Testing
run: bundle exec fastlane internal_release
env:
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
#--------------------------------------------------------------------------
#Create GitHub release
# Bullrich/generate-release-changelog@master doesn't run on macos-latest
- name: Prepare changelog for GitHub Release
uses: Bullrich/generate-release-changelog@master
id: Changelog
env:
REPO: ${{ github.repository }}
- name: Create GitHub Release
if: always() #Execute even the generation of changelog has failed
id: create_release
uses: actions/create-release@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
body: |
${{ steps.Changelog.outputs.changelog }}
draft: false
prerelease: false