smoke-test-and-package #1
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 $? | |
package-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 }} | |
id: run-sdk-samples | |
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: run-sdk-samples-${{ matrix.unityVersion }}-artifacts | |
projectPath: unity-sdk-packager | |
unityVersion: ${{ matrix.unityVersion }} | |
githubToken: ${{ SECRETS.GITHUB_TOKEN }} | |
- name: Package SDK for ${{ matrix.unityVersion }} | |
if: github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v') | |
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 | |
if: github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v') | |
uses: actions/upload-artifact@v3 | |
with: | |
name: LootLockerSDK-${{ matrix.unityVersion }}.zip | |
path: unity-sdk-packager/LootLockerSDK*.unitypackage |