debug: add debug #42
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: Dev CI/CD | |
on: | |
push: | |
branches: | |
- develop | |
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 }}) | |
echo ${CHANGED_FILES} | |
# 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 (Internal testing) | |
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: internal | |
inAppUpdatePriority: 3 | |
status: draft | |
# userFraction: 0.5 | |
whatsNewDirectory: android/release-notes/ | |
releaseName: v1.0.4 |