mirror of
https://github.com/bitsycore/skiko.git
synced 2026-10-07 23:47:26 +00:00
Fixes [SKIKO-1081](https://youtrack.jetbrains.com/issue/SKIKO-1081) Make docker images for building skiko publicly available The Skiko project previously used a private Docker registry (`registry.jetbrains.team/p/ui/skiko-docker`) for build containers, which required secrets for authentication. This prevented CI verification from fork PRs even after manual approval. The change migrates to GitHub Container Registry (GHCR), making containers publicly accessible and enabling CI to run on fork PRs. Containers built: https://github.com/orgs/JetBrains/packages?repo_name=skiko Triggers: - Push to master: Automatically builds and publishes all Docker images - Pull requests: Builds images in dry-run mode (no publishing) for verification - Manual workflow dispatch: Option to publish or just build - File changes: Triggers on changes to `skiko/docker/**` or the workflow itself
414 lines
12 KiB
YAML
414 lines
12 KiB
YAML
name: Skiko Tests
|
|
on:
|
|
workflow_dispatch:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- master
|
|
|
|
jobs:
|
|
macos:
|
|
name: 'macOS'
|
|
# On `macos-15` UI tests blocked by a system popup with
|
|
# "bash" is requesting to bypass the system private window picker and directly access your screen and audio.
|
|
# TODO: Update once resolved
|
|
runs-on: macos-14
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
name: 'Check out code'
|
|
|
|
- uses: actions/setup-java@v4
|
|
name: 'Setup JDK 21'
|
|
with:
|
|
java-version: '21'
|
|
distribution: 'corretto'
|
|
|
|
- uses: ./.github/actions/setup-prerequisites
|
|
name: 'Setup Prerequisites'
|
|
|
|
- shell: bash
|
|
name: 'Run AWT Tests'
|
|
run: |
|
|
./gradlew --no-daemon --stacktrace \
|
|
-Pskiko.native.enabled=true \
|
|
-Dskiko.test.onci=true \
|
|
-Dskiko.test.performance.enabled=false \
|
|
:skiko:awtTest
|
|
|
|
- shell: bash
|
|
name: 'Run macOS Tests'
|
|
run: |
|
|
./gradlew --no-daemon --stacktrace \
|
|
-Pskiko.native.enabled=true \
|
|
-Dskiko.test.onci=true \
|
|
-Dskiko.test.performance.enabled=false \
|
|
:skiko:macosArm64Test
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
name: 'Upload Test Results'
|
|
if: failure()
|
|
with:
|
|
name: test-reports-macos
|
|
path: |
|
|
./skiko/build/reports/tests
|
|
./skiko/src/jvmTest/screenshots/*_actual.png
|
|
retention-days: 5
|
|
|
|
- uses: test-summary/action@v2
|
|
name: 'Test Summary'
|
|
with:
|
|
paths: "./skiko/build/test-results/**/TEST-*.xml"
|
|
if: always()
|
|
|
|
ios:
|
|
name: 'iOS'
|
|
runs-on: macos-15
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
name: 'Check out code'
|
|
|
|
- uses: actions/setup-java@v4
|
|
name: 'Setup JDK 21'
|
|
with:
|
|
java-version: '21'
|
|
distribution: 'corretto'
|
|
|
|
- uses: ./.github/actions/setup-prerequisites
|
|
name: 'Setup Prerequisites'
|
|
|
|
# Retrieve the device .udid to use in tests and store it in env var
|
|
- shell: bash
|
|
name: 'Set Up Simulator UUID'
|
|
run: |
|
|
IOS_SIM_LIST=$(xcrun simctl list devices available --json)
|
|
IOS_SIM_UUID=$(echo $IOS_SIM_LIST | jq -r '.devices."com.apple.CoreSimulator.SimRuntime.iOS-18-6"[] | select(.name == "iPhone 16") | .udid')
|
|
echo "IOS_SIM_UUID=$IOS_SIM_UUID" >> $GITHUB_ENV
|
|
|
|
- uses: nick-fields/retry@v2
|
|
name: 'Run iOS (x64) tests'
|
|
with:
|
|
max_attempts: 10
|
|
timeout_minutes: 60
|
|
shell: bash
|
|
command: |
|
|
./gradlew --no-daemon --stacktrace \
|
|
-Pskiko.native.enabled=true \
|
|
-Dskiko.test.onci=true \
|
|
-Dskiko.test.performance.enabled=false \
|
|
-Pskiko.iosSimulatorUUID="${{ env.IOS_SIM_UUID }}" \
|
|
:skiko:iosX64TestWithMetal
|
|
|
|
# iosSimulatorArm64Test will build the binary but the tests will be skipped due to X64 host machine
|
|
- shell: bash
|
|
name: 'Compile iOS (arm64) tests'
|
|
run: |
|
|
./gradlew --no-daemon --stacktrace \
|
|
-Pskiko.native.enabled=true \
|
|
-Dskiko.test.onci=true \
|
|
-Dskiko.test.performance.enabled=false \
|
|
:skiko:iosSimulatorArm64Test
|
|
|
|
# TODO run iOS specific tests on iPhone simulator
|
|
|
|
- name: Upload Test Results
|
|
uses: actions/upload-artifact@v4
|
|
if: failure()
|
|
with:
|
|
name: test-reports-ios
|
|
path: ./skiko/build/reports/tests
|
|
retention-days: 5
|
|
|
|
tvos:
|
|
name: 'tvOS'
|
|
runs-on: macos-15
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
name: 'Check out code'
|
|
|
|
- uses: actions/setup-java@v4
|
|
name: 'Setup JDK 21'
|
|
with:
|
|
java-version: '21'
|
|
distribution: 'corretto'
|
|
|
|
- uses: ./.github/actions/setup-prerequisites
|
|
name: 'Setup Prerequisites'
|
|
|
|
- shell: bash
|
|
name: 'Run tvOS Tests'
|
|
run: |
|
|
./gradlew --no-daemon --stacktrace \
|
|
-Pskiko.native.enabled=true \
|
|
-Dskiko.test.onci=true \
|
|
-Dskiko.test.performance.enabled=false \
|
|
:skiko:tvosX64Test
|
|
|
|
# tvosSimulatorArm64Test will build the binary but the tests will be skipped due to X64 host machine
|
|
./gradlew --no-daemon --stacktrace \
|
|
-Pskiko.native.enabled=true \
|
|
-Dskiko.test.onci=true \
|
|
-Dskiko.test.performance.enabled=false \
|
|
:skiko:tvosSimulatorArm64Test
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
name: 'Upload Test Results'
|
|
if: failure()
|
|
with:
|
|
name: test-reports-tvos
|
|
path: ./skiko/build/reports/tests
|
|
retention-days: 5
|
|
|
|
linux-amd64:
|
|
name: 'Linux (x64)'
|
|
runs-on: ubuntu-24.04
|
|
container:
|
|
image: ghcr.io/jetbrains/skiko/linux-amd64:ubuntu-2004
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
name: 'Check out code'
|
|
|
|
- uses: ./.github/actions/setup-prerequisites
|
|
name: 'Setup Prerequisites'
|
|
|
|
- shell: bash
|
|
name: 'Start X Server'
|
|
run: |
|
|
Xvfb :1 -screen 0 1920x1080x24 -extension RANDR +extension GLX &
|
|
echo "DISPLAY=:1.0" >> $GITHUB_ENV
|
|
|
|
- shell: bash
|
|
name: 'Run Linux (x64) Tests'
|
|
run: |
|
|
./gradlew --no-daemon --stacktrace \
|
|
-Pskiko.native.enabled=true \
|
|
-Dskiko.test.onci=true \
|
|
-Dskiko.test.performance.enabled=false \
|
|
:skiko:linuxX64Test
|
|
|
|
- shell: bash
|
|
name: 'Run AWT Tests'
|
|
timeout-minutes: 25
|
|
run: |
|
|
./gradlew --no-daemon --stacktrace \
|
|
-Pskiko.native.enabled=true \
|
|
-Dskiko.test.onci=true \
|
|
-Dskiko.test.performance.enabled=false \
|
|
:skiko:awtTest
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
name: 'Upload Test Results'
|
|
if: failure()
|
|
with:
|
|
name: test-reports-linux
|
|
path: |
|
|
./skiko/build/reports/tests
|
|
./skiko/src/jvmTest/screenshots/*_actual.png
|
|
|
|
- uses: test-summary/action@v2
|
|
name: 'Test Summary'
|
|
with:
|
|
paths: "./skiko/build/test-results/**/TEST-*.xml"
|
|
if: always()
|
|
|
|
linux-cross-compile:
|
|
name: 'Cross-compile Linux (arm) on x64'
|
|
runs-on: ubuntu-24.04
|
|
container:
|
|
image: ghcr.io/jetbrains/skiko/linux-amd64:ubuntu-2004
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
name: 'Check out code'
|
|
|
|
- uses: ./.github/actions/setup-prerequisites
|
|
name: 'Setup Prerequisites'
|
|
|
|
- shell: bash
|
|
name: 'Compile Linux (arm64) Tests'
|
|
run: |
|
|
./gradlew --no-daemon --stacktrace \
|
|
-Pskiko.arch=x64 \
|
|
-Pskiko.native.linux.enabled=true \
|
|
:skiko:linkDebugTestLinuxArm64
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
name: 'Upload linuxArm64 test binary as artifact'
|
|
with:
|
|
name: test-binary-linuxArm64
|
|
path: ./skiko/build/bin/linuxArm64
|
|
if-no-files-found: error
|
|
retention-days: 5
|
|
|
|
linux-arm:
|
|
name: 'Linux (arm64)'
|
|
needs: linux-cross-compile
|
|
runs-on: ubuntu-24.04-arm
|
|
container:
|
|
image: ghcr.io/jetbrains/skiko/linux-arm64:ubuntu-2004
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
name: 'Check out code'
|
|
|
|
- uses: ./.github/actions/setup-prerequisites
|
|
name: 'Setup Prerequisites'
|
|
|
|
- shell: bash
|
|
name: 'Start X Server'
|
|
run: |
|
|
Xvfb :1 -screen 0 1920x1080x24 -extension RANDR +extension GLX &
|
|
echo "DISPLAY=:1.0" >> $GITHUB_ENV
|
|
|
|
- uses: actions/download-artifact@v4
|
|
name: 'Download precompiled linuxArm64 test binary'
|
|
with:
|
|
name: test-binary-linuxArm64
|
|
path: ./skiko/build/bin/linuxArm64
|
|
|
|
- shell: bash
|
|
name: 'Run Linux (arm64) Tests'
|
|
working-directory: skiko
|
|
run: |
|
|
chmod +x ./build/bin/linuxArm64/debugTest/test.kexe
|
|
./build/bin/linuxArm64/debugTest/test.kexe
|
|
|
|
- shell: bash
|
|
name: 'Run AWT Tests'
|
|
timeout-minutes: 25
|
|
run: |
|
|
./gradlew --no-daemon --stacktrace \
|
|
-Pskiko.native.enabled=true \
|
|
-Dskiko.test.onci=true \
|
|
-Dskiko.test.performance.enabled=false \
|
|
:skiko:awtTest
|
|
|
|
- name: Upload Test Results
|
|
uses: actions/upload-artifact@v4
|
|
if: failure()
|
|
with:
|
|
name: test-reports-linux-arm
|
|
path: |
|
|
./skiko/build/reports/tests
|
|
./skiko/src/jvmTest/screenshots/*_actual.png
|
|
retention-days: 5
|
|
|
|
- name: Test Summary
|
|
uses: test-summary/action@v2
|
|
with:
|
|
paths: "./skiko/build/test-results/**/TEST-*.xml"
|
|
if: always()
|
|
|
|
windows:
|
|
name: 'Windows'
|
|
runs-on: windows-2022
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
name: 'Check out code'
|
|
|
|
- uses: microsoft/setup-msbuild@v1
|
|
|
|
- uses: ilammy/msvc-dev-cmd@v1
|
|
|
|
- uses: actions/setup-java@v4
|
|
name: 'Setup JDK 21'
|
|
with:
|
|
java-version: '21'
|
|
distribution: 'corretto'
|
|
|
|
- uses: ./.github/actions/setup-prerequisites
|
|
name: 'Setup Prerequisites'
|
|
|
|
# OPENGL is ignored as it doesn't exist on the Windows GitHub agent
|
|
- shell: bash
|
|
name: 'Run AWT tests'
|
|
run: |
|
|
./gradlew --no-daemon --stacktrace \
|
|
-Dskiko.test.onci=true \
|
|
-Dskiko.test.performance.enabled=false \
|
|
-Dskiko.test.ui.renderApi.ignoreAssertsFor=OPENGL \
|
|
:skiko:awtTest
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
name: 'Upload Test Results'
|
|
if: failure()
|
|
with:
|
|
name: test-reports-windows
|
|
path: |
|
|
./skiko/build/reports/tests
|
|
./skiko/src/jvmTest/screenshots/*_actual.png
|
|
retention-days: 5
|
|
|
|
- uses: test-summary/action@v2
|
|
name: 'Test Summary'
|
|
with:
|
|
paths: "./skiko/build/test-results/**/TEST-*.xml"
|
|
if: always()
|
|
|
|
web-wasm:
|
|
name: 'Web'
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
name: 'Check out code'
|
|
|
|
- uses: actions/setup-java@v3
|
|
name: 'Setup JDK 21'
|
|
with:
|
|
java-version: '21'
|
|
distribution: 'adopt'
|
|
cache: 'gradle'
|
|
|
|
- uses: browser-actions/setup-chrome@v1
|
|
name: 'Setup Google Chrome'
|
|
with:
|
|
chrome-version: stable
|
|
|
|
- name: 'Install emscripten'
|
|
shell: bash
|
|
working-directory: skiko
|
|
run: |
|
|
sudo apt-get update -y
|
|
sudo apt-get install libdbus-1-dev
|
|
if [ -d ./emsdk ]; then
|
|
cd ./emsdk
|
|
git pull
|
|
else
|
|
git clone https://github.com/emscripten-core/emsdk.git
|
|
cd ./emsdk
|
|
fi
|
|
./emsdk install 3.1.50
|
|
./emsdk activate 3.1.50
|
|
|
|
- shell: bash
|
|
name: 'Run WASM Tests'
|
|
working-directory: skiko
|
|
run: |
|
|
source ./emsdk/emsdk_env.sh
|
|
./gradlew --no-daemon --stacktrace \
|
|
-Pskiko.wasm.enabled=true \
|
|
-Pskiko.js.enabled=true \
|
|
-Pskiko.test.onci=true \
|
|
wasmJsTest
|
|
|
|
- shell: bash
|
|
name: 'Run JS Tests'
|
|
working-directory: skiko
|
|
run: |
|
|
source ./emsdk/emsdk_env.sh
|
|
./gradlew --no-daemon --stacktrace \
|
|
-Pskiko.wasm.enabled=true \
|
|
-Pskiko.js.enabled=true \
|
|
-Pskiko.test.onci=true \
|
|
jsTest
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
if: failure()
|
|
with:
|
|
name: test-reports-web
|
|
path: ./skiko/build/reports/tests
|
|
retention-days: 5
|
|
|
|
- uses: test-summary/action@v2
|
|
name: 'Test Summary'
|
|
with:
|
|
paths: "./skiko/build/test-results/**/TEST-*.xml"
|
|
if: always()
|