Skip to content

Commit

Permalink
Merge branch 'refs/heads/dev' into SUITEDEV-35599-MultiID-for-predict
Browse files Browse the repository at this point in the history
# Conflicts:
#	emarsys-sdk/src/androidTest/java/com/emarsys/EmarsysTest.kt
#	emarsys-sdk/src/androidTest/java/com/emarsys/di/FakeDependencyContainer.kt
  • Loading branch information
megamegax committed Sep 4, 2024
2 parents dde1a4d + ea27f6b commit 87a8260
Show file tree
Hide file tree
Showing 69 changed files with 1,784 additions and 1,289 deletions.
115 changes: 115 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"

on:
push:
branches: [ "dev", "master" ]
pull_request:
branches: [ "dev", "master" ]
schedule:
- cron: '41 8 * * 3'

env:
USE_LOCAL_DEPENDENCY: ${{ vars.USE_LOCAL_DEPENDENCY }}
RELEASE_MODE: ${{ vars.RELEASE_MODE }}
ANDROID_RELEASE_STORE_FILE_BASE64: ${{ secrets.ANDROID_RELEASE_STORE_FILE_BASE64 }}
ANDROID_RELEASE_STORE_PASSWORD: ${{ secrets.ANDROID_RELEASE_STORE_PASSWORD }}
ANDROID_RELEASE_KEY_ALIAS: ${{ secrets.ANDROID_RELEASE_KEY_ALIAS }}
ANDROID_RELEASE_KEY_PASSWORD: ${{ secrets.ANDROID_RELEASE_KEY_PASSWORD }}
FIREBASE_PROJECT_ID: ${{ vars.FIREBASE_PROJECT_ID }}
FIREBASE_SERVICE_ACCOUNT_JSON: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_JSON }}
GOOGLE_OAUTH_SERVER_CLIENT_ID: ${{ secrets.GOOGLE_OAUTH_SERVER_CLIENT_ID }}
GOOGLE_SERVICES_JSON_BASE64: ${{ secrets.GOOGLE_SERVICES_JSON_BASE64 }}
GOOGLE_PLAY_STORE_SEVICE_ACCOUNT_JSON_BASE64: ${{ secrets.GOOGLE_PLAY_STORE_SEVICE_ACCOUNT_JSON_BASE64 }}
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
SONATYPE_STAGING_PROFILE_ID: ${{ secrets.SONATYPE_STAGING_PROFILE_ID }}
SONATYPE_SIGNING_KEY_ID: ${{ secrets.SONATYPE_SIGNING_KEY_ID }}
SONATYPE_SIGNING_PASSWORD: ${{ secrets.SONATYPE_SIGNING_PASSWORD }}
SONATYPE_SIGNING_SECRET_KEY_RING_FILE_BASE64: ${{ secrets.SONATYPE_SIGNING_SECRET_KEY_RING_FILE_BASE64 }}

jobs:
analyze:
name: Analyze (${{ matrix.language }})
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners (GitHub.com only)
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
runs-on: ubuntu-latest
timeout-minutes: 360
permissions:
# required for all workflows
security-events: write

# required to fetch internal or private CodeQL packs
packages: read

# only required for workflows in private repositories
actions: read
contents: read

strategy:
fail-fast: false
matrix:
include:
- language: java-kotlin
build-mode: manual
# CodeQL supports the following values keywords for 'language': 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift'
# Use `c-cpp` to analyze code written in C, C++ or both
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
# Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
# To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
# see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
# If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Checkout repository
uses: actions/checkout@v4

- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17

- name: Prepare CI
run: make prepare-ci

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.

# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality

# If the analyze step fails for one of the languages you are analyzing with
# "We were unable to automatically build your code", modify the matrix above
# to set the build mode to "manual" for that language. Then modify this step
# to build your code.
# ℹ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
- if: matrix.build-mode == 'manual'
shell: bash
run: |
./gradlew clean build -x test -x :sample:build
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{matrix.language}}"
88 changes: 39 additions & 49 deletions .github/workflows/on_tag_workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,23 @@ on:
- '*.*.*'

env:
USE_LOCAL_DEPENDENCY: ${{ vars.USE_LOCAL_DEPENDENCY }}
RELEASE_MODE: true
ANDROID_RELEASE_STORE_FILE_BASE64: ${{ secrets.ANDROID_RELEASE_STORE_FILE_BASE64 }}
ANDROID_RELEASE_STORE_PASSWORD: ${{ secrets.ANDROID_RELEASE_STORE_PASSWORD }}
ANDROID_RELEASE_KEY_ALIAS: ${{ secrets.ANDROID_RELEASE_KEY_ALIAS }}
ANDROID_RELEASE_KEY_PASSWORD: ${{ secrets.ANDROID_RELEASE_KEY_PASSWORD }}
FIREBASE_PROJECT_ID: ${{ vars.FIREBASE_PROJECT_ID }}
FIREBASE_SERVICE_ACCOUNT_JSON: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_JSON }}
GOOGLE_OAUTH_SERVER_CLIENT_ID: ${{ secrets.GOOGLE_OAUTH_SERVER_CLIENT_ID }}
GOOGLE_SERVICES_JSON_BASE64: ${{ secrets.GOOGLE_SERVICES_JSON_BASE64 }}
GOOGLE_PLAY_STORE_SEVICE_ACCOUNT_JSON_BASE64: ${{ secrets.GOOGLE_PLAY_STORE_SEVICE_ACCOUNT_JSON_BASE64 }}
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
SONATYPE_STAGING_PROFILE_ID: ${{ secrets.SONATYPE_STAGING_PROFILE_ID }}
SONATYPE_SIGNING_KEY_ID: ${{ secrets.SONATYPE_SIGNING_KEY_ID }}
SONATYPE_SIGNING_PASSWORD: ${{ secrets.SONATYPE_SIGNING_PASSWORD }}
SONATYPE_SIGNING_SECRET_KEY_RING_FILE_BASE64: ${{ secrets.SONATYPE_SIGNING_SECRET_KEY_RING_FILE_BASE64 }}
RELEASE_KEY_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD }}
RELEASE_KEY_ALIAS: ${{ secrets.ANDROID_KEYSTORE_ALIAS }}
RELEASE_STORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
Expand All @@ -17,9 +34,6 @@ env:
SLACK_USERNAME: Emarsys SDK - Android
EXCLUDE_GOOGLE_SERVICES_API_KEY: true
SIGNING_SECRET_KEY_RING_FILE: /home/runner/work/android-emarsys-sdk/android-emarsys-sdk/secring.asc.gpg
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
SONATYPE_STAGING_PROFILE_ID: ${{ secrets.SONATYPE_STAGING_PROFILE_ID }}
SIGNING_KEYID: ${{ secrets.SIGNING_KEYID }}
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}

Expand All @@ -38,33 +52,15 @@ jobs:
with:
distribution: 'temurin'
java-version: 17
- name: create-google services json
uses: jsdaniell/[email protected]
with:
name: google-services.json
json: ${{ secrets.GOOGLE_SERVICES_JSON }}
dir: sample

- name: setup RELEASE_VERSION
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV

- name: Create release keystore file
shell: bash
run: |
echo "${{ secrets.ANDROID_KEYSTORE }}" > mobile-team-android.jks.asc
gpg -d --passphrase "${{ secrets.ANDROID_GPG_PASSWORD }}" --batch mobile-team-android.jks.asc > sample/mobile-team-android.jks
- name: Create mavenCentral keystore file
shell: bash
run: |
echo "${{ secrets.SIGNING_KEY_FILE_ASC }}" > secring.asc
gpg --dearmor secring.asc > secring.gpg
- name: create local.properties
run: echo $ANDROID_HOME > local.properties
- name: Prepare CI
run: make prepare-ci

- name: Release with Gradle
run: ./gradlew clean assembleRelease && ./gradlew publishToSonatype
run: make release

CreateSampleReleaseBundle:
name: Create release bundle from sample app
Expand All @@ -80,26 +76,15 @@ jobs:
with:
distribution: 'temurin'
java-version: 17
- name: create-google services json
uses: jsdaniell/[email protected]
with:
name: google-services.json
json: ${{ secrets.GOOGLE_SERVICES_JSON }}
dir: sample

- name: create local.properties
run: echo $ANDROID_HOME > local.properties
- name: Prepare CI
run: make prepare-ci

- name: setup RELEASE_VERSION
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Prepare sample release
run: make prepare-sample-release

- name: Create release keystore file
shell: bash
run: |
echo "${{ secrets.ANDROID_KEYSTORE }}" > mobile-team-android.jks.asc
gpg -d --passphrase "${{ secrets.ANDROID_GPG_PASSWORD }}" --batch mobile-team-android.jks.asc > sample/mobile-team-android.jks
- name: Create release sample app with Gradle
run: ./gradlew :sample:bundleRelease
- name: Create sample app release bundle
run: make create-sample-release-bundle

- name: Upload bundle
uses: actions/upload-artifact@v4
Expand All @@ -118,23 +103,27 @@ jobs:
fetch-depth: 0 # 0 indicates all history
- run: git fetch --all || echo "==> Accept any result"

- name: set up JDK 1.17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 17

- name: Download sample app
uses: actions/download-artifact@v4
with:
name: mobile-sdk-sample

- name: create-google services json
uses: jsdaniell/[email protected]
with:
name: google-play-services.json
json: ${{ secrets.GOOGLE_PLAY_STORE_SEVICE_ACCOUNT_JSON }}
- name: Prepare sample release
run: make prepare-sample-release

- name: Playstore upload
- name: PlayStore upload
uses: r0adkll/[email protected]
with:
serviceAccountJson: google-play-services.json
serviceAccountJson: ./sample/google-play-store-service-account.json
packageName: com.emarsys.sample
releaseFiles: sample-release.aab

- name: setup RELEASE_VERSION
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Create Release Page
Expand All @@ -147,7 +136,7 @@ jobs:
body_path: changelog.md
draft: false
prerelease: false

SlackNotification:
name: Send slack notification
runs-on: ubuntu-latest
Expand Down Expand Up @@ -188,6 +177,7 @@ jobs:
job_status: 'success'
user_icon: '${{env.SLACK_ICON}}'
actions: '[{ "type": "button", "text": "View actions", "url": "https://github.com/emartech/android-emarsys-sdk/actions" },{ "type": "button", "text": "View Firebase", "url": "https://console.firebase.google.com/project/ems-mobile-sdk/testlab/histories/" },{ "type": "button", "text": "Install page", "url": "http://ems-mobileteam-artifacts.s3-website-eu-west-1.amazonaws.com/index-ems.html" }]'

CreateJiraTicket:
name: Create Jira ticket
runs-on: ubuntu-latest
Expand Down
8 changes: 7 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ fun versionData() {
} catch (ignored: Exception) {
GitVersion(
versionName = "0.0.0",
versionCode = 0,
versionCode = 1,
versionCodeTime = 0
)
}
Expand Down Expand Up @@ -85,6 +85,12 @@ tasks {
}
}

allprojects {
// Exclude Kotlin files from Javadoc generation because Kotlin files are not supported by Dokka
tasks.withType(Javadoc::class).all {
enabled = false
}
}

nexusPublishing {
packageGroup = "com.emarsys"
Expand Down
6 changes: 3 additions & 3 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# What's fixed
### [Push](https://github.com/emartech/android-emarsys-sdk/wiki#2-push)
* Fixed issue where the Default Tap Actions' payload was not mapped correctly.
# What's changed
### [Emarsys](https://github.com/emartech/android-emarsys-sdk/wiki#contents)
* Changed error handling in database operations to receive more detailed information.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.emarsys.core.CoreCompletionHandler
import com.emarsys.core.activity.ActivityLifecycleActionRegistry
import com.emarsys.core.activity.ActivityLifecycleWatchdog
import com.emarsys.core.activity.CurrentActivityWatchdog
import com.emarsys.core.activity.TransitionSafeCurrentActivityWatchdog
import com.emarsys.core.concurrency.ConcurrentHandlerHolderFactory
import com.emarsys.core.connection.ConnectionWatchDog
import com.emarsys.core.crypto.Crypto
Expand Down Expand Up @@ -54,4 +55,5 @@ class FakeCoreDependencyContainer(
override val coreCompletionHandler: CoreCompletionHandler = mock(),
override val logLevelStorage: Storage<String?> = mock(),
override val activityLifecycleActionRegistry: ActivityLifecycleActionRegistry = mock(),
override val transitionSafeCurrentActivityWatchdog: TransitionSafeCurrentActivityWatchdog = mock(),
) : CoreComponent
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,11 @@ class ImageUtilsTest : AnnotationSpec() {


@Test

fun testLoadOptimizedBitmap_returnsNull_whenImageUrlIsNull() {
ImageUtils.loadOptimizedBitmap(mockFileDownloader, null, deviceInfo) shouldBe null
}

@Test

fun testLoadOptimizedBitmap_withRemoteUrl_CleansUpTempFile() {
clearCache()
getTargetContext().cacheDir.list()?.size shouldBe 0
Expand All @@ -97,7 +95,6 @@ class ImageUtilsTest : AnnotationSpec() {
}

@Test

fun testLoadOptimizedBitmap_withLocalFile_ShouldNotCleanUpLocalFile() {
clearCache()
val fileUrl = mockFileDownloader.download(IMAGE_URL)
Expand All @@ -113,7 +110,6 @@ class ImageUtilsTest : AnnotationSpec() {
}

@Test

fun testLoadOptimizedBitmap_withRemoteUrl() {
val bitmap = ImageUtils.loadOptimizedBitmap(mockFileDownloader, IMAGE_URL, deviceInfo)
bitmap shouldNotBe null
Expand All @@ -122,7 +118,6 @@ class ImageUtilsTest : AnnotationSpec() {
}

@Test

fun testCalculateInSampleSize_returnedValueShouldBe4_whenRequestedWidthIs1080_widthIs2500() {
val options = BitmapFactory.Options().apply {
outWidth = 2500
Expand Down
Loading

0 comments on commit 87a8260

Please sign in to comment.