77 workflow_dispatch :
88
99jobs :
10- ui-tests :
11- name : UI Tests (Android Emulator)
10+ build_and_publish :
11+ name : Build and publish
1212 runs-on : [ self-hosted, X64 ]
13-
13+ outputs :
14+ version_name : ${{ steps.get_version_name.outputs.versionName }}
15+ version_code : ${{ steps.get_version_code.outputs.versionCode }}
1416 steps :
1517 - name : Clean workspace
1618 run : |
17- sudo rm -rf ./* .[^.]* .??* || true
18- sudo rm -rf ~/.gradle/caches || true
19- mkdir -p ~/.gradle
20- sudo chown -R $(whoami):$(whoami) ~/.gradle
19+ echo "Cleaning workspace: $(pwd)"
20+ rm -rf ./* .[^.]* .??*
2121
2222 - name : Checkout
2323 uses : actions/checkout@v4
2424 with :
2525 submodules : true
2626 token : ${{ secrets.GH_MOBILE_PAT }}
27+ fetch-depth : 0
2728
28- - name : Setup Gradle GitHub Packages Auth
29+ - name : Increment version code
30+ id : get_version_code
31+ env :
32+ RUN_NUMBER : ${{ github.run_number }}
33+ INITIAL_VERSION_CODE : 1050
2934 run : |
30- # Улучшенная аутентификация для GitHub Packages
31- mkdir -p ~/.gradle
32- cat << EOF > ~/.gradle/gradle.properties
33- gpr.user = '${{ secrets.GITHUB_USER }}'
34- gpr.key = '${{ secrets.GITHUB_TOKEN }}'
35- systemProp.org.gradle.internal.http.auth.basic.github-packages.username=${{ secrets.GITHUB_USER }}
36- systemProp.org.gradle.internal.http.auth.basic.github-packages.password=${{ secrets.GITHUB_TOKEN }}
37- EOF
38-
39- # Дополнительные настройки для GitHub Packages
40- cat << EOF > ~/.gradle/init.gradle
41- allprojects {
42- repositories {
43- maven {
44- url "https://maven.pkg.github.com/tangem/*"
45- credentials {
46- username = providers.gradleProperty("gpr.user").getOrElse("")
47- password = providers.gradleProperty("gpr.key").getOrElse("")
48- }
49- }
50- }
51- }
52- EOF
35+ VERSION_CODE=$((RUN_NUMBER + INITIAL_VERSION_CODE))
36+ echo "versionCode=$VERSION_CODE" >> $GITHUB_OUTPUT
5337
54- - name : Setup Android SDK
38+ - name : Get version name from branch name
39+ id : get_version_name
5540 run : |
56- # Используем домашнюю директорию для избежания проблем с правами
57- ANDROID_HOME="$HOME/android-sdk"
58- echo "ANDROID_HOME=$ANDROID_HOME" >> $GITHUB_ENV
59- echo "PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools" >> $GITHUB_ENV
60-
61- mkdir -p "$ANDROID_HOME"
62- sudo chown -R $(whoami):$(whoami) "$ANDROID_HOME"
41+ BRANCH=${{ github.ref_name }}
6342
64- - name : Install Android SDK components
65- run : |
66- wget --tries=3 --timeout=30 https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -O /tmp/cmdline-tools.zip
67- rm -rf /tmp/cmdline-tools
68- unzip -o /tmp/cmdline-tools.zip -d /tmp
69- mkdir -p "$ANDROID_HOME/cmdline-tools/latest"
70- cp -rf /tmp/cmdline-tools/* "$ANDROID_HOME/cmdline-tools/latest"
71- rm -f /tmp/cmdline-tools.zip
72-
73- yes | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" --licenses
74- "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" "platform-tools" "platforms;android-30" "build-tools;30.0.3" "emulator"
75-
76- echo "sdk.dir=$ANDROID_HOME" > local.properties
77- echo "ndk.dir=" >> local.properties
78-
79- echo "Android SDK components installed:"
80- "$ANDROID_HOME/platform-tools/adb" --version
43+ if [[ "$BRANCH" =~ ^(releases|hotfix)/([0-9]+)\.([0-9]+)(\.[0-9]+)?$ ]]; then
44+ MAJOR=${BASH_REMATCH[2]}
45+ MINOR=${BASH_REMATCH[3]}
46+ PATCH=${BASH_REMATCH[4]:-.0}
47+ VERSION="${MAJOR}.${MINOR}${PATCH}"
48+ else
49+ ./tangem-android-tools/CI/shell_scripts/find-latest-release-branch.sh origin/$BRANCH
50+ LATEST_BRANCH=$(< 'find-latest-release-branch.output')
8151
82- - name : Set up JDK 17
83- uses : actions/setup-java@v4
84- with :
85- java-version : ' 17'
86- distribution : ' temurin'
87- cache : ' gradle'
52+ if [[ "$LATEST_BRANCH" =~ releases/([0-9]+)\.([0-9]+) ]]; then
53+ MAJOR=${BASH_REMATCH[1]}
54+ MINOR=${BASH_REMATCH[2]}
55+ NEW_MINOR=$((MINOR + 1))
56+ VERSION="${MAJOR}.${NEW_MINOR}.0"
57+ else
58+ echo "Failed to get version"
59+ exit 1
60+ fi
61+ fi
62+
63+ echo "versionName=$VERSION"
64+ echo "versionName=$VERSION" >> $GITHUB_OUTPUT
8865
89- - name : Prepare Google Services
66+ - name : Build Docker image
9067 run : |
91- # Создаем минимальный рабочий файл
92- printf '{"project_info":{"project_number":"123456789","project_id":"test-project"},"client":[{"client_info":{"mobilesdk_app_id":"1:123456789:android:test","android_client_info":{"package_name":"com.tangem.wallet.mocked"}},"oauth_client":[],"api_key":[{"current_key":"test-key"}],"services":{"appinvite_service":{"other_platform_oauth_client":[]}}}],"configuration_version":"1"}' > app/google-services.json
93-
94- # Копируем в другие места
95- mkdir -p app/src/mocked/ && cp app/google-services.json app/src/mocked/google-services.json
96- mkdir -p app/src/Mocked/ && cp app/google-services.json app/src/Mocked/google-services.json
97- mkdir -p app/src/ && cp app/google-services.json app/src/google-services.json
68+ docker build --platform linux/x86_64 -t tangem_ci_android_environment_x86_64 -f tangem-android-tools/CI/dockerfiles/Dockerfile.android.x64 .
9869
99- - name : Run Android Emulator and Tests
100- uses : reactivecircus/android-emulator-runner@v2
101- timeout-minutes : 60
102- with :
103- api-level : 30
104- arch : x86_64
105- profile : pixel_2
106- target : google_apis
107- script : |
108- # Явная проверка переменных окружения
109- echo "GITHUB_USER: $GITHUB_USER"
110- echo "ANDROID_HOME: $ANDROID_HOME"
111- ./gradlew :app:connectedMockedAndroidTest --no-daemon --stacktrace --info
112- emulator-options : -no-window -no-boot-anim -no-audio -memory 3072 -partition-size 4096
113- disable-animations : true
114- working-directory : .
70+ - name : Build internal
71+ id : build
11572 env :
116- GRADLE_OPTS : >
117- -Dorg.gradle.daemon=true
118- -Dorg.gradle.parallel=true
119- -Dorg.gradle.caching=true
120- -Xmx6g
121- -XX:MaxMetaspaceSize=1g
122- GRADLE_USER_HOME : ${{ github.workspace }}/.gradle
123- ANDROID_HOME : ${{ env.ANDROID_HOME }}
124- GITHUB_USER : ${{ secrets.GITHUB_USER }}
125- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
73+ GITHUB_TOKEN : ${{ secrets.GH_MOBILE_PAT }}
74+ GITHUB_ACTOR : ${{ secrets.GITHUB_ACTOR }}
75+ version_code : ${{ steps.get_version_code.outputs.versionCode }}
76+ version_name : ${{ steps.get_version_name.outputs.versionName }}
77+ run : |
78+ env > .env
12679
127- - name : Upload test results
128- if : always()
129- uses : actions/upload-artifact@v4
130- with :
131- name : test-results
132- path : |
133- app/build/reports/androidTests/
134- app/build/outputs/androidTest-results/
135- retention-days : 7
80+ docker run --rm \
81+ --user ubuntu \
82+ --env-file .env \
83+ --volume ~/.gradle:/home/ubuntu/.gradle \
84+ --volume ${{ github.workspace }}:/workspace \
85+ tangem_ci_android_environment_x86_64 \
86+ bash -c '
87+ cd /workspace;
88+
89+ ./gradlew assembleDebug
90+ '
0 commit comments