Skip to content

Commit 324587a

Browse files
author
Tangem
committed
${LATEST_TAG}
1 parent a6b7751 commit 324587a

1 file changed

Lines changed: 60 additions & 105 deletions

File tree

.github/workflows/ui_tests.yml

Lines changed: 60 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -7,129 +7,84 @@ on:
77
workflow_dispatch:
88

99
jobs:
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

Comments
 (0)