Skip to content

smoke-test-and-package #2

smoke-test-and-package

smoke-test-and-package #2

name: Do Smoke Tests and Package SDK
run-name: smoke-test-and-package
on:
pull_request:
branches: # Made towards the following
- main
- dev*
types: # Only on the following activity
- opened
- synchronize # Changes to the branch like new commits, ammends, etc.
push:
branches: # Made towards the following
- main
tags:
- v**
workflow_dispatch: {}
jobs:
editor-smoke-test:
name: Test SDK in Editor
runs-on: [ubuntu-latest]
#runs-on: [k8s]
#container:
# image: ubuntu-latest
env:
LL_USE_STAGE: false
strategy:
fail-fast: false
matrix:
testMode:
- playmode
unityVersion:
- 2019.4.40f1
- 2020.3.48f1
- 2021.3.32f1
- 2022.3.14f1
- 2023.2.1f1
steps:
- name: Setup commandline dependencies (if on self-hosted runner)
if: ${{ env.LL_USE_STAGE == 'true' }}
run: |
apt update
apt-get install -y git
git config --global --add safe.directory unity-sdk
git config --global --add safe.directory unity-sdk-smoketest-project
apt-get install -y jq
apt-get install -y sed
apt-get install -y docker
apt-get install -y curl
apt-get update
apt-get install ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- name: Select stage keys
if: ${{ env.LL_USE_STAGE == 'true' }}
run: |
echo "JOB_API_KEY=${{ SECRETS.SMOKE_TEST_LL_API_KEY }}" >> $GITHUB_ENV
echo "JOB_DOMAIN_KEY=${{ SECRETS.SMOKE_TEST_LL_DOMAIN_KEY }}" >> $GITHUB_ENV
- name: Select prod keys
if: ${{ env.LL_USE_STAGE == 'false' }}
run: |
echo "JOB_API_KEY=${{ SECRETS.LOOTLOCKER_API_KEY }}" >> $GITHUB_ENV
echo "JOB_DOMAIN_KEY=${{ SECRETS.LOOTLOCKER_DOMAIN_KEY }}" >> $GITHUB_ENV
- name: Checkout unity-sdk repository
uses: actions/checkout@v3
with:
path: unity-sdk
- name: Checkout unity-sdk-smoketest-project repository
uses: actions/checkout@v3
with:
repository: lootlocker/unity-sdk-smoketest-project
path: unity-sdk-smoketest-project
token: ${{ SECRETS.LL_PERSONAL_ACCESS_TOKEN }}
- name: Set package reference to local unity-sdk
run: |
echo "Updating unity-sdk-smoketest-project/Packages/manifest.json to use lootlocker sdk at relative path (from manifest) ../../unity-sdk"
jq ".\"dependencies\".\"com.lootlocker.lootlockersdk\"=\"file:../../unity-sdk\"" "unity-sdk-smoketest-project/Packages/manifest.json" > "unity-sdk-smoketest-project/Packages/tempmanifest.json"
rm "unity-sdk-smoketest-project/Packages/manifest.json"
mv "unity-sdk-smoketest-project/Packages/tempmanifest.json" "unity-sdk-smoketest-project/Packages/manifest.json"
- name: Configure LootLocker to take keys by commandline
run: |
sed -i 's/NO_LOOTLOCKER_COMMANDLINE_SETTINGS/LOOTLOCKER_COMMANDLINE_SETTINGS/' unity-sdk-smoketest-project/ProjectSettings/ProjectSettings.asset
- name: Configure LootLocker to target stage environment
if: ${{ env.LL_USE_STAGE == 'true' }}
run: |
sed -i 's/NO_LOOTLOCKER_TARGET_STAGE_ENV/LOOTLOCKER_TARGET_STAGE_ENV/' unity-sdk-smoketest-project/ProjectSettings/ProjectSettings.asset
- uses: actions/cache@v3
with:
path: unity-sdk-smoketest-project/Library
key: ${{ matrix.targetPlatform }}-Library-unity-sdk-smoketest-project
restore-keys: |
${{ matrix.targetPlatform }}-Library-unity-sdk-smoketest-project
Library-
- name: Run Smoke Tests ${{ matrix.unityVersion }}-${{ matrix.testMode }}
id: editor-smoke-tests-gameci
uses: game-ci/unity-test-runner@v4
env:
UNITY_LICENSE: ${{ SECRETS.UNITY_LICENSE }}
UNITY_EMAIL: ${{ SECRETS.UNITY_EMAIL }}
UNITY_PASSWORD: ${{ SECRETS.UNITY_PASSWORD }}
with:
testMode: ${{ matrix.testMode }}
checkName: ${{ matrix.unityVersion }}-${{ matrix.testMode }} Test Results
artifactsPath: editor-smoke-tests-gameci-${{ matrix.unityVersion }}-${{ matrix.testMode }}-artifacts
projectPath: unity-sdk-smoketest-project
unityVersion: ${{ matrix.unityVersion }}
githubToken: ${{ SECRETS.GITHUB_TOKEN }}
customParameters: -apikey ${{ ENV.JOB_API_KEY }} -domainkey ${{ ENV.JOB_DOMAIN_KEY }}
build-smoke-test:
name: Test SDK in platform builds
runs-on: [ubuntu-latest]
#runs-on: [k8s]
#container:
# image: ubuntu-latest
needs: [editor-smoke-test]
env:
LL_USE_STAGE: false
strategy:
fail-fast: false
matrix:
testMode:
- playmode
unityVersion:
- 2019.4.40f1
- 2020.3.48f1
- 2021.3.32f1
- 2022.3.14f1
- 2023.2.1f1
targetPlatform:
- StandaloneLinux64
- WebGL
steps:
- name: Setup commandline dependencies (if on self-hosted runner)
if: ${{ env.LL_USE_STAGE == 'true' }}
run: |
apt update
apt-get install -y git
git config --global --add safe.directory unity-sdk
git config --global --add safe.directory unity-sdk-smoketest-project
apt-get install -y jq
apt-get install -y sed
apt-get install -y docker
apt-get install -y curl
apt-get update
apt-get install ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- name: Select stage keys
if: ${{ env.LL_USE_STAGE == 'true' }}
run: |
echo "JOB_API_KEY=${{ SECRETS.SMOKE_TEST_LL_API_KEY }}" >> $GITHUB_ENV
echo "JOB_DOMAIN_KEY=${{ SECRETS.SMOKE_TEST_LL_DOMAIN_KEY }}" >> $GITHUB_ENV
- name: Select prod keys
if: ${{ env.LL_USE_STAGE == 'false' }}
run: |
echo "JOB_API_KEY=${{ SECRETS.LOOTLOCKER_API_KEY }}" >> $GITHUB_ENV
echo "JOB_DOMAIN_KEY=${{ SECRETS.LOOTLOCKER_DOMAIN_KEY }}" >> $GITHUB_ENV
- name: Checkout unity-sdk repository
uses: actions/checkout@v3
with:
path: unity-sdk
- name: Checkout unity-sdk-smoketest-project repository
uses: actions/checkout@v3
with:
repository: lootlocker/unity-sdk-smoketest-project
path: unity-sdk-smoketest-project
token: ${{ SECRETS.LL_PERSONAL_ACCESS_TOKEN }}
- name: Set package reference to local unity-sdk
run: |
echo "Updating unity-sdk-smoketest-project/Packages/manifest.json to use lootlocker sdk at relative path (from manifest) ../../unity-sdk"
jq ".\"dependencies\".\"com.lootlocker.lootlockersdk\"=\"file:../../unity-sdk\"" "unity-sdk-smoketest-project/Packages/manifest.json" > "unity-sdk-smoketest-project/Packages/tempmanifest.json"
rm "unity-sdk-smoketest-project/Packages/manifest.json"
mv "unity-sdk-smoketest-project/Packages/tempmanifest.json" "unity-sdk-smoketest-project/Packages/manifest.json"
- name: Configure LootLocker to take keys by commandline
run: |
sed -i 's/NO_LOOTLOCKER_COMMANDLINE_SETTINGS/LOOTLOCKER_COMMANDLINE_SETTINGS/' unity-sdk-smoketest-project/ProjectSettings/ProjectSettings.asset
- name: Configure LootLocker to target stage environment
if: ${{ env.LL_USE_STAGE == 'true' }}
run: |
sed -i 's/NO_LOOTLOCKER_TARGET_STAGE_ENV/LOOTLOCKER_TARGET_STAGE_ENV/' unity-sdk-smoketest-project/ProjectSettings/ProjectSettings.asset
- name: Commit all changes to allow building
run: |
git config --global user.email "[email protected]"
git config --global user.name "Fake Name"
cd unity-sdk-smoketest-project
git add -A
git commit -m "Temporary changes for build"
- uses: actions/cache@v3
with:
path: unity-sdk-smoketest-project/Library
key: ${{ matrix.targetPlatform }}-Library-unity-sdk-smoketest-project
restore-keys: |
${{ matrix.targetPlatform }}-Library-unity-sdk-smoketest-project
Library-
- name: Run Smoke Tests ${{ matrix.unityVersion }}-${{ matrix.testMode }}-${{ matrix.targetPlatform }}
id: build-smoke-tests-gameci
uses: game-ci/unity-builder@v4
env:
UNITY_LICENSE: ${{ SECRETS.UNITY_LICENSE }}
UNITY_EMAIL: ${{ SECRETS.UNITY_EMAIL }}
UNITY_PASSWORD: ${{ SECRETS.UNITY_PASSWORD }}
with:
unityVersion: ${{ matrix.unityVersion }}
targetPlatform: ${{ matrix.targetPlatform }}
buildsPath: builds
buildName: smokeTest
projectPath: unity-sdk-smoketest-project
customParameters: -apikey ${{ ENV.JOB_API_KEY }} -domainkey ${{ ENV.JOB_DOMAIN_KEY }}
- name: Run the built game (valid for Linux)
if: ${{ matrix.targetPlatform == 'StandaloneLinux64' }}
run: |
sudo chmod 777 ./builds
sudo chmod 777 ./builds/${{ matrix.targetPlatform }}/
sudo chmod 777 ./builds/${{ matrix.targetPlatform }}/*
./builds/${{ matrix.targetPlatform }}/smokeTest -batchmode -nographics -apikey ${{ ENV.JOB_API_KEY }} -domainkey ${{ ENV.JOB_DOMAIN_KEY }}
while [ ! -f "./builds/${{ matrix.targetPlatform }}/smokeTest_Data/LLActorOutput.txt" ]; do sleep 10; ls -als ./builds/${{ matrix.targetPlatform }}/smokeTest_Data/; done
- name: Test the output of the run (valid for Linux)
if: ${{ matrix.targetPlatform == 'StandaloneLinux64' }}
run: |
cat ./builds/${{ matrix.targetPlatform }}/smokeTest_Data/LLActorOutput.txt
grep -q "Run Succeeded" ./builds/${{ matrix.targetPlatform }}/smokeTest_Data/LLActorOutput.txt
exit $?
test-samples-and-validate-sdk:
name: Package SDK
runs-on: [ubuntu-latest]
#runs-on: [k8s]
#container:
# image: ubuntu-latest
needs: [editor-smoke-test, build-smoke-test]
env:
LL_USE_STAGE: false
strategy:
fail-fast: false
matrix:
unityVersion:
- 2019.4.40f1
- 2020.3.48f1
- 2021.3.32f1
- 2022.3.14f1
- 2023.2.1f1
steps:
- name: Setup commandline dependencies (if on self-hosted runner)
if: ${{ env.LL_USE_STAGE == 'true' }}
run: |
apt update
apt-get install -y git
git config --global --add safe.directory unity-sdk
git config --global --add safe.directory unity-sdk-packager
apt-get install -y jq
apt-get install -y sed
apt-get install -y docker
apt-get install -y curl
apt-get update
apt-get install ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- name: Checkout unity-sdk repository
uses: actions/checkout@v3
with:
path: unity-sdk
- name: Checkout unity-sdk-packager-project repository
uses: actions/checkout@v3
with:
repository: lootlocker/unity-sdk-packager
path: unity-sdk-packager
token: ${{ SECRETS.LL_PERSONAL_ACCESS_TOKEN }}
- name: Add LootLockerSDK as asset folder
run: |
cp -r unity-sdk unity-sdk-packager/Assets/LootLockerSDK
- uses: actions/cache@v3
with:
path: unity-sdk-packager/Library
key: ${{ matrix.targetPlatform }}-Library-unity-sdk-packager
restore-keys: |
${{ matrix.targetPlatform }}-Library-unity-sdk-packager
Library-
- name: Compile and run all sample scenes ${{ matrix.unityVersion }} and validate SDK using asset store tools
id: test-samples-and-validate
uses: game-ci/unity-test-runner@v4
env:
UNITY_LICENSE: ${{ SECRETS.UNITY_LICENSE }}
UNITY_EMAIL: ${{ SECRETS.UNITY_EMAIL }}
UNITY_PASSWORD: ${{ SECRETS.UNITY_PASSWORD }}
with:
testMode: editmode
checkName: Sample Scene ${{ matrix.unityVersion }} Test Results
artifactsPath: test-samples-and-validate-${{ matrix.unityVersion }}-artifacts
projectPath: unity-sdk-packager
unityVersion: ${{ matrix.unityVersion }}
githubToken: ${{ SECRETS.GITHUB_TOKEN }}
package-sdk:
name: Package SDK
runs-on: [ubuntu-latest]
#runs-on: [k8s]
#container:
# image: ubuntu-latest
needs: [editor-smoke-test, build-smoke-test, test-samples-and-validate-sdk]
if: github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/ci/dev' || startsWith(github.ref, 'refs/tags/v')
env:
LL_USE_STAGE: false
strategy:
fail-fast: false
matrix:
unityVersion:
- 2019.4.40f1
- 2020.3.48f1
- 2021.3.32f1
- 2022.3.14f1
- 2023.2.1f1
steps:
- name: Setup commandline dependencies (if on self-hosted runner)
if: ${{ env.LL_USE_STAGE == 'true' }}
run: |
apt update
apt-get install -y git
git config --global --add safe.directory unity-sdk
git config --global --add safe.directory unity-sdk-packager
apt-get install -y jq
apt-get install -y sed
apt-get install -y docker
apt-get install -y curl
apt-get update
apt-get install ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- name: Checkout unity-sdk repository
uses: actions/checkout@v3
with:
path: unity-sdk
- name: Checkout unity-sdk-packager-project repository
uses: actions/checkout@v3
with:
repository: lootlocker/unity-sdk-packager
path: unity-sdk-packager
token: ${{ SECRETS.LL_PERSONAL_ACCESS_TOKEN }}
- name: Add LootLockerSDK as asset folder
run: |
cp -r unity-sdk unity-sdk-packager/Assets/LootLockerSDK
- uses: actions/cache@v3
with:
path: unity-sdk-packager/Library
key: ${{ matrix.targetPlatform }}-Library-unity-sdk-packager
restore-keys: |
${{ matrix.targetPlatform }}-Library-unity-sdk-packager
Library-
- name: Package SDK for ${{ matrix.unityVersion }}
id: package-sdk-gameci
uses: game-ci/unity-test-runner@v4
env:
UNITY_LICENSE: ${{ SECRETS.UNITY_LICENSE }}
UNITY_EMAIL: ${{ SECRETS.UNITY_EMAIL }}
UNITY_PASSWORD: ${{ SECRETS.UNITY_PASSWORD }}
with:
testMode: playmode
checkName: SDK Packaging ${{ matrix.unityVersion }} Test Results
artifactsPath: package-sdk-${{ matrix.unityVersion }}-artifacts
projectPath: unity-sdk-packager
unityVersion: ${{ matrix.unityVersion }}
githubToken: ${{ SECRETS.GITHUB_TOKEN }}
- name: Expose packaged SDK as artifact
uses: actions/upload-artifact@v3
with:
name: LootLockerSDK-${{ matrix.unityVersion }}.zip
path: unity-sdk-packager/LootLockerSDK*.unitypackage