Merge pull request #1117 from Atlas-OS/dev #1586
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: Create and Validate Atlas Playbook | |
on: | |
push: | |
paths: | |
- "src/playbook/**" | |
- "**/*.yaml" | |
- "**/*.yml" | |
env: | |
SXSC_REPO: "https://github.com/Atlas-OS/sxsc" | |
jobs: | |
build: | |
runs-on: windows-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.ref }} | |
token: ${{ secrets.RUNNER_SECRET }} | |
- name: Validate YAML files | |
run: 'yamllint -d "{extends: relaxed, rules: {empty-lines: disable, line-length: disable, new-line-at-end-of-file: disable, trailing-spaces: disable, new-lines: {type: platform}}}" .' | |
- name: Get changed files | |
id: changed-files | |
uses: tj-actions/[email protected] | |
with: | |
files_yaml: | | |
sxsc: | |
- 'src/sxsc/*.yaml' | |
- name: Copy modified .yamls | |
run: | | |
$sxsc = '.\src\sxsc' | |
$configs = '..\configs' | |
mkdir $configs | Out-Null | |
if ('${{ steps.changed-files.outputs.sxsc_any_changed }}' -eq 'true') { | |
$changedFiles = '${{ steps.changed-files.outputs.sxsc_all_changed_files }}' -split ' ' | |
} elseif (Test-Path "$sxsc\regenAllConfigs") { | |
Write-Output "Regenerating all configs..." | |
Remove-Item -Path "$sxsc\regenAllConfigs" -Force | |
Remove-Item -Path ".\src\playbook\Executables\AtlasModules\Packages\*.cab" -Force -Recurse | |
$changedFiles = Get-ChildItem $sxsc -Filter *.yaml | |
} else { | |
Write-Output "Not building any packages, no sxsc config changes detected." | |
"runSxsc=false" >> $env:GITHUB_ENV | |
exit | |
} | |
"runSxsc=true" >> $env:GITHUB_ENV | |
foreach ($file in $changedFiles) { | |
Write-Output "Copying: $file" | |
Copy-Item $file $configs -Force | |
} | |
- name: Clone the sxsc repository | |
run: | | |
git clone --depth=1 ${{ env.SXSC_REPO }} | |
Copy-Item -Path "configs" -Destination ".\sxsc\configs" -Recurse -Force | |
working-directory: .. | |
if: env.runSxsc == 'true' | |
- name: Build CAB | |
run: | | |
Write-Output "Installing dependencies..." | |
pip install -r requirements.txt | Out-Null | |
$atlasSrcPath = '..\Atlas\src\' | |
$packagePath = "$atlasSrcPath\playbook\Executables\AtlasModules\Packages" | |
mkdir $packagePath -EA 0 | Out-Null | |
Get-ChildItem "configs" -Filter *.yaml | ForEach-Object { | |
Write-Output "`n`nProcessing $($_.Name)`n------------------------------------------------------" | |
Copy-Item -Path $_.FullName -Destination "cfg.yaml" -Force | Out-Null | |
$folderDir = ".\$atlasSrcPath\sxsc\$($_.Name -replace '-Arm','')" | |
if (Test-Path $folderDir -PathType Container) { | |
Write-Output "Copying $($_.Name)'s files..." | |
Copy-Item -Path "$folderDir\*" -Destination '.\' -Recurse -Force | Out-Null | |
} | |
Write-Output "Generating package files..." | |
python sxsc.py | |
if ($LASTEXITCODE -ne 0) { exit 1 } | |
Write-Output "Building package..." | |
.\build.bat | |
Write-Output "Copying package to AtlasModules..." | |
Get-ChildItem -File -Recurse -Filter *.cab | ForEach-Object { | |
Copy-Item -Path $_.FullName -Destination $packagePath -Force | |
} | |
Write-Output "Cleaning up..." | |
.\clean.bat | |
} | |
working-directory: ..\sxsc | |
if: env.runSxsc == 'true' | |
- name: Commit and push changes | |
run: | | |
git config --local user.email "[email protected]" | |
git config --local user.name "atlasos-admin" | |
git add -A | |
git commit -m "feat: auto-update CAB packages ($($env:GITHUB_SHA.Substring(0, 8)))" | |
git push | |
working-directory: src\playbook\Executables\AtlasModules\Packages | |
if: env.runSxsc == 'true' | |
- name: Create playbook (ZIP/APBX password is malte) | |
id: create-pb | |
if: ${{ !startsWith(github.ref, 'refs/heads/na-') }} | |
run: | | |
echo "Making a renamed password protected (malte) ZIP of playbook files..." | |
$pbName = "Atlas Playbook $($env:GITHUB_SHA.Substring(0,8))" | |
& ..\local-build.ps1 -ReplaceOldPlaybook -AddLiveLog -Removals Verification, WinverRequirement -FileName $pbName | |
echo "Move the .abpx playbook into 'Release ZIP' to be released as an artifact with the additional files..." | |
Move-Item "$pbName.apbx" "../release-zip" | |
working-directory: src\playbook | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
if: ${{ steps.create-pb.outcome != 'skipped' }} | |
with: | |
name: Atlas Playbook | |
path: | | |
src/release-zip/* | |
if-no-files-found: error |