From 4aa2850d200bf61521085eaa54601bd652294074 Mon Sep 17 00:00:00 2001 From: Darren Meehan <411136+darrenmeehan@users.noreply.github.com> Date: Thu, 28 Dec 2023 13:01:04 +0000 Subject: [PATCH 1/8] Add initial pipeline --- .../generate-apk-aab-debug-release.yml | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 .github/workflows/generate-apk-aab-debug-release.yml diff --git a/.github/workflows/generate-apk-aab-debug-release.yml b/.github/workflows/generate-apk-aab-debug-release.yml new file mode 100644 index 0000000..6d999de --- /dev/null +++ b/.github/workflows/generate-apk-aab-debug-release.yml @@ -0,0 +1,86 @@ +name: Generated APK AAB (Upload - Create Artifact To Github Action) + +env: + # The name of the main module repository + main_project_module: app + + # The name of the Play Store + playstore_name: Overland + +on: + + push: + branches: + - 'release/**' + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + # Set Current Date As Env Variable + - name: Set current date as env variable + run: echo "date_today=$(date +'%Y-%m-%d')" >> $GITHUB_ENV + + # Set Repository Name As Env Variable + - name: Set repository name as env variable + run: echo "repository_name=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV + + - name: Set Up JDK + uses: actions/setup-java@v3 + with: + distribution: 'zulu' # See 'Supported distributions' for available options + java-version: '17' + cache: 'gradle' + + - name: Change wrapper permissions + run: chmod +x ./gradlew + + # Run Tests Build + - name: Run gradle tests + run: ./gradlew test + + # Run Build Project + - name: Build gradle project + run: ./gradlew build + + # Create APK Debug + - name: Build apk debug project (APK) - ${{ env.main_project_module }} module + run: ./gradlew assembleDebug + + # Create APK Release + - name: Build apk release project (APK) - ${{ env.main_project_module }} module + run: ./gradlew assemble + + # Create Bundle AAB Release + # Noted for main module build [main_project_module]:bundleRelease + - name: Build app bundle release (AAB) - ${{ env.main_project_module }} module + run: ./gradlew ${{ env.main_project_module }}:bundleRelease + + # Upload Artifact Build + # Noted For Output [main_project_module]/build/outputs/apk/debug/ + - name: Upload APK Debug - ${{ env.repository_name }} + uses: actions/upload-artifact@v3 + with: + name: ${{ env.date_today }} - ${{ env.playstore_name }} - ${{ env.repository_name }} - APK(s) debug generated + path: ${{ env.main_project_module }}/build/outputs/apk/debug/ + + # Noted For Output [main_project_module]/build/outputs/apk/release/ + - name: Upload APK Release - ${{ env.repository_name }} + uses: actions/upload-artifact@v3 + with: + name: ${{ env.date_today }} - ${{ env.playstore_name }} - ${{ env.repository_name }} - APK(s) release generated + path: ${{ env.main_project_module }}/build/outputs/apk/release/ + + # Noted For Output [main_project_module]/build/outputs/bundle/release/ + - name: Upload AAB (App Bundle) Release - ${{ env.repository_name }} + uses: actions/upload-artifact@v3 + with: + name: ${{ env.date_today }} - ${{ env.playstore_name }} - ${{ env.repository_name }} - App bundle(s) AAB release generated + path: ${{ env.main_project_module }}/build/outputs/bundle/release/ From 4d26ba8d878359233707fd3651c1aa67493d13e7 Mon Sep 17 00:00:00 2001 From: Darren Meehan <411136+darrenmeehan@users.noreply.github.com> Date: Thu, 28 Dec 2023 13:10:06 +0000 Subject: [PATCH 2/8] change to android dir --- .github/workflows/generate-apk-aab-debug-release.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/generate-apk-aab-debug-release.yml b/.github/workflows/generate-apk-aab-debug-release.yml index 6d999de..fcc22f6 100644 --- a/.github/workflows/generate-apk-aab-debug-release.yml +++ b/.github/workflows/generate-apk-aab-debug-release.yml @@ -39,6 +39,9 @@ jobs: java-version: '17' cache: 'gradle' + - name: Change to android directory + run: cd android + - name: Change wrapper permissions run: chmod +x ./gradlew From 842b964fcae66f708aa2eb60d4b20a03b9abd939 Mon Sep 17 00:00:00 2001 From: Darren Meehan <411136+darrenmeehan@users.noreply.github.com> Date: Thu, 28 Dec 2023 13:16:34 +0000 Subject: [PATCH 3/8] Use working dir --- .github/workflows/generate-apk-aab-debug-release.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/generate-apk-aab-debug-release.yml b/.github/workflows/generate-apk-aab-debug-release.yml index fcc22f6..b81941f 100644 --- a/.github/workflows/generate-apk-aab-debug-release.yml +++ b/.github/workflows/generate-apk-aab-debug-release.yml @@ -39,31 +39,34 @@ jobs: java-version: '17' cache: 'gradle' - - name: Change to android directory - run: cd android - - name: Change wrapper permissions + working-directory: ./android run: chmod +x ./gradlew # Run Tests Build - name: Run gradle tests + working-directory: ./android run: ./gradlew test # Run Build Project - name: Build gradle project + working-directory: ./android run: ./gradlew build # Create APK Debug - name: Build apk debug project (APK) - ${{ env.main_project_module }} module + working-directory: ./android run: ./gradlew assembleDebug # Create APK Release - name: Build apk release project (APK) - ${{ env.main_project_module }} module + working-directory: ./android run: ./gradlew assemble # Create Bundle AAB Release # Noted for main module build [main_project_module]:bundleRelease - name: Build app bundle release (AAB) - ${{ env.main_project_module }} module + working-directory: ./android run: ./gradlew ${{ env.main_project_module }}:bundleRelease # Upload Artifact Build From b5d5c7cd53ce754e9e268051c216d7711f08aea6 Mon Sep 17 00:00:00 2001 From: Darren Meehan <411136+darrenmeehan@users.noreply.github.com> Date: Thu, 28 Dec 2023 13:24:44 +0000 Subject: [PATCH 4/8] Change Java version to 1.8 --- .github/workflows/generate-apk-aab-debug-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/generate-apk-aab-debug-release.yml b/.github/workflows/generate-apk-aab-debug-release.yml index b81941f..820ef0f 100644 --- a/.github/workflows/generate-apk-aab-debug-release.yml +++ b/.github/workflows/generate-apk-aab-debug-release.yml @@ -36,7 +36,7 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'zulu' # See 'Supported distributions' for available options - java-version: '17' + java-version: '8' cache: 'gradle' - name: Change wrapper permissions From 1fff0f7597c362f77e2639d901422d1fd135812e Mon Sep 17 00:00:00 2001 From: Darren Meehan <411136+darrenmeehan@users.noreply.github.com> Date: Thu, 28 Dec 2023 13:36:14 +0000 Subject: [PATCH 5/8] Node setup --- .github/workflows/generate-apk-aab-debug-release.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/generate-apk-aab-debug-release.yml b/.github/workflows/generate-apk-aab-debug-release.yml index 820ef0f..9e43abb 100644 --- a/.github/workflows/generate-apk-aab-debug-release.yml +++ b/.github/workflows/generate-apk-aab-debug-release.yml @@ -39,6 +39,17 @@ jobs: java-version: '8' cache: 'gradle' + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: 18 + + - name: Install dependencies + run: npm ci + + - name: Run tests + run: npm test + - name: Change wrapper permissions working-directory: ./android run: chmod +x ./gradlew From e1877229a2948ce7ae1bf4309133544be80bb68f Mon Sep 17 00:00:00 2001 From: Darren Meehan <411136+darrenmeehan@users.noreply.github.com> Date: Thu, 28 Dec 2023 13:39:12 +0000 Subject: [PATCH 6/8] Allow no Node tests --- .github/workflows/generate-apk-aab-debug-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/generate-apk-aab-debug-release.yml b/.github/workflows/generate-apk-aab-debug-release.yml index 9e43abb..af2f169 100644 --- a/.github/workflows/generate-apk-aab-debug-release.yml +++ b/.github/workflows/generate-apk-aab-debug-release.yml @@ -48,7 +48,7 @@ jobs: run: npm ci - name: Run tests - run: npm test + run: npm test --passWithNoTests - name: Change wrapper permissions working-directory: ./android From 6aef76ec6b87b1b692be152bada2b9c8be430c34 Mon Sep 17 00:00:00 2001 From: Darren Meehan <411136+darrenmeehan@users.noreply.github.com> Date: Thu, 28 Dec 2023 13:42:12 +0000 Subject: [PATCH 7/8] Actually allow no Node tests --- .github/workflows/generate-apk-aab-debug-release.yml | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/generate-apk-aab-debug-release.yml b/.github/workflows/generate-apk-aab-debug-release.yml index af2f169..9e43abb 100644 --- a/.github/workflows/generate-apk-aab-debug-release.yml +++ b/.github/workflows/generate-apk-aab-debug-release.yml @@ -48,7 +48,7 @@ jobs: run: npm ci - name: Run tests - run: npm test --passWithNoTests + run: npm test - name: Change wrapper permissions working-directory: ./android diff --git a/package.json b/package.json index 4295755..6145297 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "android": "react-native run-android", "ios": "react-native run-ios", "start": "react-native start", - "test": "jest", + "test": "jest --passWithNoTests", "lint": "eslint .", "clean": "react-native-clean-project" }, From 7ed9b4bb1f09b0d7e77396bcc5fab7c8d52243b2 Mon Sep 17 00:00:00 2001 From: Darren Meehan <411136+darrenmeehan@users.noreply.github.com> Date: Sat, 30 Dec 2023 04:43:36 +0000 Subject: [PATCH 8/8] Add initial dev container --- .devcontainer/Dockerfile | 54 +++++++++++++++++++++++++++++++++ .devcontainer/devcontainer.json | 37 ++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..c359a5e --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,54 @@ + +FROM mcr.microsoft.com/devcontainers/java:0-17 + +RUN <<-EOF + set -x + apt update + apt-get install -y ca-certificates curl gnupg expect git make wget unzip vim + mkdir -p /etc/apt/keyrings + curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg + NODE_MAJOR=20 + echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list + apt update + apt install nodejs -y + npm install -g npm@10.2.5 +EOF + +RUN mkdir -p /usr/local/android-sdk-linux/cmdline-tools/latest +ENV ANDROID_HOME /usr/local/android-sdk-linux/cmdline-tools/latest +ENV PATH ${ANDROID_HOME}/tools:${ANDROID_HOME}/bin:$ANDROID_HOME/platform-tools:$PATH +ENV ANDROID_SDK_ROOT $ANDROID_SDK_HOME +ENV ANDROID_HOME $ANDROID_SDK_HOME +ENV ANDROID_SDK $ANDROID_SDK_HOME + +# Set Debian to not prompt for user input during package installation +ENV DEBIAN_FRONTEND noninteractive + +# Update package lists and install necessary packages +RUN apt update -yqq && \ + apt install -y \ + openssh-client \ + locales \ + libc6 libstdc++6 zlib1g libncurses5 build-essential libssl-dev ruby ruby-dev \ + libarchive-tools && \ + apt clean && \ + rm -rf /var/lib/apt/lists/* + +# Set the locale to en_US.UTF-8 +RUN localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + +# Set the system language to US English +ENV LANG en_US.UTF-8 + +# Download and untar Android SDK tools +RUN <<-EOF + wget https://dl.google.com/android/repository/commandlinetools-linux-10406996_latest.zip -O tools.zip + bsdtar xvf tools.zip --strip-components=1 -C /usr/local/android-sdk-linux/cmdline-tools/latest + chown vscode:vscode -r /usr/local/android-sdk-linux/ + rm tools.zip +EOF + +RUN <<-EOF + sdkmanager --version + sdkmanager --sdk_root=/usr/local/android-sdk-linux/latest "platform-tools" "platforms;android-33" +EOF diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..3a4f932 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,37 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +// README at: https://github.com/devcontainers/templates/tree/main/src/java +{ + "name": "Java", + // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile + "dockerFile": "Dockerfile", + "features": { + "ghcr.io/devcontainers/features/java:1": { + "version": "none", + "installMaven": "true", + "mavenVersion": "3.8.6", + "installGradle": "true", + "gradleVersion": "6.9.3" + } + }, + + // Configure tool-specific properties. + "customizations": { + // Configure properties specific to VS Code. + "vscode": { + "settings": {}, + "extensions": [ + "streetsidesoftware.code-spell-checker", + "vscjava.vscode-gradle" + ] + } + }, + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + "postCreateCommand": "npm ci" + + // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. + // "remoteUser": "root" +} \ No newline at end of file