I prepared a set of CI workflow files and a Pull Request template but could not push them directly due to permissions. Creating this issue to paste the files so someone with push access can review and commit them.
Files included below. Please create these paths in the repository (exact filenames).
.github/pull_request_template.md
---
name: Pull Request Template
about: Use this template for PRs to help reviewers
---
## Summary
Describe the changes in this pull request.
## Checklist
- [ ] I have read the contributing guidelines.
- [ ] The change has tests where applicable.
- [ ] I have run the appropriate build(s) locally.
## Platforms affected
List platforms affected (Windows, macOS, iOS, Android, etc.).
## CI / Build Notes
Add any CI-specific steps or notes needed to validate this PR.
.github/workflows/client-release.yml
name: Client Release Build
on:
workflow_dispatch:
push:
branches:
- main
- master
jobs:
windows:
name: Windows Release
runs-on: windows-latest
steps:
- uses: actions/checkout@v6
- name: Retarget Visual Studio toolset to v143
run: |
git ls-files "**/*.vcxproj" | %{ (Get-Content $_) -replace 'v141_xp','v143' | Set-Content $_ }
shell: pwsh
- name: Build solution (Release)
run: |
msbuild.exe Roblox.sln /m /p:Configuration=Release /p:Platform=x64
shell: pwsh
macos:
name: macOS Release
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
- name: Build macOS client (Release)
run: |
if [ -d "MacClient.xcodeproj" ]; then
xcodebuild -project MacClient.xcodeproj -configuration Release -quiet
else
echo "Mac project not found, skipping"
fi
android:
name: Android Release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Build Android (Release) if present
run: |
if [ -d "Android" ]; then
if [ -f "Android/gradlew" ]; then
cd Android && ./gradlew assembleRelease
else
echo "No gradle wrapper found in Android/, skipping"
fi
else
echo "Android directory not present, skipping"
fi
ios:
name: iOS Release
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
- name: Build iOS (Release) if present
run: |
if [ -d "iOS" ] || [ -f "RobloxPlayer-Info.plist" ]; then
echo "Attempting iOS build"
find . -name "*.xcodeproj" -maxdepth 3 -print | while read proj; do
xcodebuild -project "$proj" -configuration Release -quiet || true
done
else
echo "iOS sources not present, skipping"
fi
.github/workflows/client-debug.yml
name: Client Debug Build
on:
workflow_dispatch:
pull_request:
branches:
- main
- master
jobs:
windows:
name: Windows Debug
runs-on: windows-latest
steps:
- uses: actions/checkout@v6
- name: Retarget Visual Studio toolset to v143
run: |
git ls-files "**/*.vcxproj" | %{ (Get-Content $_) -replace 'v141_xp','v143' | Set-Content $_ }
shell: pwsh
- name: Build solution (Debug)
run: |
msbuild.exe Roblox.sln /m /p:Configuration=Debug /p:Platform=x64
shell: pwsh
macos:
name: macOS Debug
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
- name: Build macOS client (Debug)
run: |
if [ -d "MacClient.xcodeproj" ]; then
xcodebuild -project MacClient.xcodeproj -configuration Debug -quiet
else
echo "Mac project not found, skipping"
fi
android:
name: Android Debug
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Build Android (Debug) if present
run: |
if [ -d "Android" ]; then
if [ -f "Android/gradlew" ]; then
cd Android && ./gradlew assembleDebug
else
echo "No gradle wrapper found in Android/, skipping"
fi
else
echo "Android directory not present, skipping"
fi
ios:
name: iOS Debug
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
- name: Build iOS (Debug) if present
run: |
if [ -d "iOS" ] || [ -f "RobloxPlayer-Info.plist" ]; then
find . -name "*.xcodeproj" -maxdepth 3 -print | while read proj; do
xcodebuild -project "$proj" -configuration Debug -quiet || true
done
else
echo "iOS sources not present, skipping"
fi
.github/workflows/client-installer.yml
name: Client Installer Build
on:
workflow_dispatch:
push:
branches:
- main
- master
jobs:
windows-installer:
name: Windows Installer
runs-on: windows-latest
steps:
- uses: actions/checkout@v6
- name: Check for Installer content
run: |
if (!(Test-Path -Path "Installer")) { Write-Host "Installer directory not found, skipping"; exit 0 }
Write-Host "Installer directory found"
shell: pwsh
- name: Run Windows installer build scripts if present
run: |
if (Test-Path Installer) {
if (Test-Path Installer\RccServiceSetup) { Write-Host 'Found RccServiceSetup - custom steps may be required' }
echo "No universal installer script detected; add project-specific commands here"
}
shell: pwsh
macos-installer:
name: macOS Installer
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
- name: Check for Installer content
run: |
if [ ! -d "Installer" ]; then
echo "Installer directory not found, skipping"
exit 0
fi
echo "Installer directory found"
- name: Run macOS installer steps if present
run: |
echo "No universal macOS installer script detected; add project-specific commands here"
.github/workflows/studio-release.yml
name: Studio Release Build
on:
workflow_dispatch:
push:
branches:
- main
- master
jobs:
windows:
name: Windows Studio Release
runs-on: windows-latest
steps:
- uses: actions/checkout@v6
- name: Retarget Visual Studio toolset to v143
run: |
git ls-files "**/*.vcxproj" | %{ (Get-Content $_) -replace 'v141_xp','v143' | Set-Content $_ }
shell: pwsh
- name: Build RobloxStudio (Release) if project exists
run: |
$proj = Get-ChildItem -Path . -Recurse -Filter "RobloxStudio*.vcxproj" -ErrorAction SilentlyContinue | Select-Object -First 1
if ($proj) {
msbuild.exe $proj.FullName /m /p:Configuration=Release /p:Platform=x64
} else {
Write-Host "RobloxStudio project not found in repo, attempting solution-level build"
msbuild.exe Roblox.sln /m /p:Configuration=Release /p:Platform=x64
}
shell: pwsh
macos:
name: macOS Studio Release
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
- name: Build Studio for macOS if Xcode project found
run: |
find . -name "*Studio*.xcodeproj" -maxdepth 3 -print | while read proj; do
xcodebuild -project "$proj" -configuration Release -quiet || true
done
.github/workflows/studio-debug.yml
name: Studio Debug Build
on:
workflow_dispatch:
pull_request:
branches:
- main
- master
jobs:
windows:
name: Windows Studio Debug
runs-on: windows-latest
steps:
- uses: actions/checkout@v6
- name: Retarget Visual Studio toolset to v143
run: |
git ls-files "**/*.vcxproj" | %{ (Get-Content $_) -replace 'v141_xp','v143' | Set-Content $_ }
shell: pwsh
- name: Build RobloxStudio (Debug) if project exists
run: |
$proj = Get-ChildItem -Path . -Recurse -Filter "RobloxStudio*.vcxproj" -ErrorAction SilentlyContinue | Select-Object -First 1
if ($proj) {
msbuild.exe $proj.FullName /m /p:Configuration=Debug /p:Platform=x64
} else {
Write-Host "RobloxStudio project not found in repo, attempting solution-level build"
msbuild.exe Roblox.sln /m /p:Configuration=Debug /p:Platform=x64
}
shell: pwsh
macos:
name: macOS Studio Debug
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
- name: Build Studio for macOS if Xcode project found
run: |
find . -name "*Studio*.xcodeproj" -maxdepth 3 -print | while read proj; do
xcodebuild -project "$proj" -configuration Debug -quiet || true
done
.github/workflows/imgbot.yml
name: Optimize Images (ImgBot)
on:
schedule:
- cron: '0 0 * * 0'
workflow_dispatch:
jobs:
optimize:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Run ImgBot
uses: ImgBotApp/github-action@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
.github/workflows/codeql.yml
name: CodeQL
on:
push:
branches:
- main
- master
pull_request:
branches:
- main
- master
schedule:
- cron: "0 5 * * 1"
concurrency:
group: codeql-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
actions: read
contents: read
security-events: write
jobs:
analyze:
name: Analyze (${{ matrix.language }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- language: cpp
os: windows-latest
- language: python
os: ubuntu-latest
- language: objective-c
os: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Retarget Visual Studio toolset to v143 (Windows C++)
if: matrix.language == 'cpp' && matrix.os == 'windows-latest'
run: |
git ls-files "**/*.vcxproj" | %{ (Get-Content $_) -replace 'v141_xp','v143' | Set-Content $_ }
shell: pwsh
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
- name: Autobuild (only for C/C++)
if: matrix.language == 'cpp'
uses: github/codeql-action/autobuild@v4
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
with:
category: "/language:${{ matrix.language }}"
I prepared a set of CI workflow files and a Pull Request template but could not push them directly due to permissions. Creating this issue to paste the files so someone with push access can review and commit them.
Files included below. Please create these paths in the repository (exact filenames).
.github/pull_request_template.md
.github/workflows/client-release.yml
.github/workflows/client-debug.yml
.github/workflows/client-installer.yml
.github/workflows/studio-release.yml
.github/workflows/studio-debug.yml
.github/workflows/imgbot.yml
.github/workflows/codeql.yml