Skip to content

Commit

Permalink
Merge branch 'staging' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
dg1223 committed Jul 26, 2023
2 parents d6472dd + 534124a commit 77d35c2
Show file tree
Hide file tree
Showing 2 changed files with 223 additions and 3 deletions.
222 changes: 222 additions & 0 deletions .github/workflows/staging-cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,222 @@
name: Staging CI/CD

on:
pull_request:
branches:
- staging

jobs:
# Don't run CI/CD if only README.md and/or any .yml file is updated
check_readme_yml_txt_changes:
runs-on: ubuntu-latest
outputs:
run_rest_jobs: ${{ steps.set_output.outputs.run_jobs }}

steps:
- name: Checkout branch
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Check for README, yml or txt changes
id: set_output
run: |
# Get the list of changed files between the base and head branches
CHANGED_FILES=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }})
# Check if 'README.md' or '.yml' files are the only files changed
if [[ ${CHANGED_FILES} =~ ^(README\.md|.*\.yml|.*\.txt)$ && ! ${CHANGED_FILES} =~ ^(?!.*(README\.md|.*\.yml|.*\.txt)).*$ ]]; then
echo "Only README.md or .yml or .txt files have been updated. Skipping the CI/CD workflow."
# GITHUB_OUTPUT is a default GitHub env. variable
echo "run_jobs=false" >> ${GITHUB_OUTPUT}
else
echo "Changes to files other than README.md or *.yml or .txt detected. Proceeding with the CI/CD workflow."
echo "run_jobs=true" >> ${GITHUB_OUTPUT}
fi
test:
needs: check_readme_yml_txt_changes
if: needs.check_readme_yml_txt_changes.outputs.run_rest_jobs == 'true'
runs-on: ubuntu-latest

steps:
- name: Checkout branch
uses: actions/checkout@v3

# Cache npm dependencies (from GitHub docs)
- name: Cache node modules
id: cache-npm
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
# If there's a cache miss
- if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
name: List the state of node modules
continue-on-error: true
run: npm list
# Caching process complete

- name: Install dependencies
run: npm install

- name: Lint check
run: npm run lint

- name: Run tests
run: npm run test

deploy:
needs: test
# default action is success(): if(success)
runs-on: ubuntu-latest
env:
MYAPP_UPLOAD_KEY_ALIAS: ${{ secrets.ANDROID_SIGNING_ALIAS }}
MYAPP_UPLOAD_STORE_PASSWORD: ${{ secrets.ANDROID_SIGNING_STORE_PASSWORD }}
MYAPP_UPLOAD_KEY_PASSWORD: ${{ secrets.ANDROID_SIGNING_KEY_PASSWORD }}

steps:
# We need to checkout the current branch and install node
# dependencies again because every GH Actions job runs on
# a seperate runner (VM)
- name: Checkout branch
uses: actions/checkout@v3

# Cache npm dependencies (from GitHub docs)
- name: Cache node modules
id: cache-npm
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
# If there's a cache miss
- if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
name: List the state of node modules
continue-on-error: true
run: npm list
# Caching process complete

- name: Install dependencies
run: npm install

# - name: Read Version
# id: read-version
# run: |
# echo "::set-output name=versionCode::$(jq -r '.versionCode' version.json)"
# echo "::set-output name=versionName::$(jq -r '.versionName' version.json)"

# # echo "::set-output name=versionCode::$(jq -r '.versionCode' version.json)"
# # echo "::set-output name=versionName::$(node -p -e "require('./version.json').versionName")"

# - name: Increment Version
# id: increment-version
# run: |
# echo "::set-output name=versionCode::$(node -p \"parseInt('${{ steps.read-version.outputs.versionCode }}') + 1\")"
# echo "::set-output name=versionName::$(node -p \"'${{ steps.read-version.outputs.versionName }}'.replace(/(\\d+\\.\\d+\\.)(\\d+)/, (_, p1, p2) => p1 + (parseInt(p2) + 1))\")"

# # echo "::set-output name=versionCode::$(node -p -e 'parseInt(${ steps.read-version.outputs.versionCode }) + 1')"
# # echo "::set-output name=versionName::$(node -p -e "'${{ steps.read-version.outputs.versionName }}'.replace(/(\\d+\\.\\d+\\.)(\\d+)/, (_, p1, p2) => p1 + (parseInt(p2) + 1))")"

# - name: Update build.gradle
# run: |
# sed -i "s/versionCode .*/versionCode ${{ steps.increment-version.outputs.versionCode }}/" android/app/build.gradle
# sed -i "s/versionName .*/versionName '${{ steps.increment-version.outputs.versionName }}'/" android/app/build.gradle

# - name: Commit and Push Changes
# uses: stefanzweifel/git-auto-commit-action@v4
# with:
# commit_message: devops - update versionCode and versionName [skip ci]

- name: Cache Gradle Wrapper
uses: actions/cache@v3
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}

- name: Cache Gradle Dependencies
uses: actions/cache@v3
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
restore-keys: ${{ runner.os }}-gradle-caches-

# Start the build process
- name: Make Gradlew Executable
run: cd android && chmod +x ./gradlew

# - name: Generate App APK
# run: |
# cd android && ./gradlew assembleRelease --no-daemon

# - name: Sign generated APK
# id: sign_app
# uses: r0adkll/sign-android-release@v1
# with:
# releaseDirectory: android/app/build/outputs/apk/release
# signingKeyBase64: ${{ secrets.ANDROID_SIGNING_KEY }}
# alias: ${{ secrets.ANDROID_SIGNING_ALIAS }}
# keyStorePassword: ${{ secrets.ANDROID_SIGNING_STORE_PASSWORD }}
# keyPassword: ${{ secrets.ANDROID_SIGNING_KEY_PASSWORD }}

# - name: Check app directory after signing (debug)
# run: |
# ls -a android/app/build/outputs/apk/release

- name: Build Android App Bundle
run: cd android && ./gradlew bundleRelease --no-daemon

- name: Sign App Bundle
id: sign_app
uses: r0adkll/sign-android-release@v1
with:
releaseDirectory: android/app/build/outputs/bundle/release
signingKeyBase64: ${{ secrets.ANDROID_SIGNING_KEY }}
alias: ${{ secrets.ANDROID_SIGNING_ALIAS }}
keyStorePassword: ${{ secrets.ANDROID_SIGNING_STORE_PASSWORD }}
keyPassword: ${{ secrets.ANDROID_SIGNING_KEY_PASSWORD }}

# ## Distribute app to Firebase App Distribution for testing
# ## Use google play internal track if you have a google play account
# ## (uncomment the sections below if you want to use Play Store)
# - name: Upload artifact to Firebase App Distribution
# uses: wzieba/Firebase-Distribution-Github-Action@v1
# with:
# appId: ${{secrets.ANDROID_FIREBASE_APP_ID}}
# token: ${{secrets.ANDROID_FIREBASE_TOKEN}}
# groups: testers
# file: ${{steps.sign_app.outputs.signedReleaseFile}}

- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: Signed App Bundle
path: ${{steps.sign_app.outputs.signedReleaseFile}}

- name: Deploy to Play Store (Alpha)
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJsonPlainText: ${{ secrets.ANDROID_SERVICE_ACCOUNT }}
# The packageName must already exist in the play console account, so make sure you upload a manual apk or aab first through the console
# https://github.com/r0adkll/upload-google-play/tree/v1/
packageName: com.thebest.gamchha
releaseFiles: ${{steps.sign_app.outputs.signedReleaseFile}}
track: alpha
inAppUpdatePriority: 3
userFraction: 0.5
whatsNewDirectory: android/release-notes/
releaseName: v1.0.0.a
4 changes: 1 addition & 3 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,7 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 5
versionName "1.0.4"
// versionCode getVersionCode()
// versionName getVersionName()
versionName "1.0.0.a"
}
signingConfigs {
debug {
Expand Down

0 comments on commit 77d35c2

Please sign in to comment.