name: Mod Build on: push: tags: - "*" env: MOD_NAME: "RefinedRDApi" MOD_ID: "" # TBD SML_DIR: "E:/SF/SML" ENGINE_DIR: "F:/5.2.1-CSS" BUILT_MODS_DIR: "${{ gitea.workspace }}/BuiltMods" DEV_BUILDS_DIR: "${{ gitea.workspace }}/DevBuilds" jobs: Setup: runs-on: windows-2022 defaults: run: shell: pwsh steps: - name: Setup SML run: | if (!(Test-Path ${{env.SML_DIR}} -PathType Container)) {git clone --branch master https://github.com/satisfactorymodding/SatisfactoryModLoader.git ${{env.SML_DIR}}} - name: Install WWise run: | cd ${{env.SML_DIR}} if ((Test-Path ${{env.SML_DIR}}/Plugins/Wwise) -eq $true){ echo "WWise already Installed Skipping.."; exit 0 } E:/SF/Scripts/wwise-cli.exe integrate-ue --integration-version "2022.1.5.2714" --project "${{env.SML_DIR}}/FactoryGame.uproject" - name: "SML Headers" run: | cd E:/SF/Scripts/sml-fixer ./sml-fixer.exe PullMods: needs: Setup strategy: matrix: value: ["RefinedRDLib"] runs-on: windows-2022 defaults: run: shell: pwsh steps: - name: "Clone Mod" run: | echo "Cloning Mod ${{matrix.value}}" cd ${{env.SML_DIR}}/Mods if (!(Test-Path ${{env.SML_DIR}}/Mods/${{matrix.value}} -PathType Container)) {git clone --branch main git@10.10.10.14:RefinedRD/sf_mod_${{matrix.value}}.git ${{env.SML_DIR}}/Mods/${{matrix.value}}} cd ${{env.SML_DIR}}/Mods/${{matrix.value}} git fetch --all git reset --hard origin/main echo "Done" UpdateUPlugins: needs: PullMods strategy: matrix: value: ["RefinedRDLib"] runs-on: windows-2022 defaults: run: shell: pwsh steps: - name: "Update Mod UPlugin Version" run: | echo "Updating ${{env.SML_DIR}}/Mods/${{matrix.value}}/${{matrix.value}}.uplugin" $Uplugin = (Get-Content ${{env.SML_DIR}}/Mods/${{matrix.value}}/${{matrix.value}}.uplugin | convertfrom-json) $UPlugin.SemVersion = $(Get-Content "${{env.SML_DIR}}/Mods/${{matrix.value}}/VERSION") $UPlugin.VersionName = $(Get-Content "${{env.SML_DIR}}/Mods/${{matrix.value}}/VERSION") $Version = $Uplugin.SemVersion ($UPlugin | convertto-json -Depth 100) -replace '\\u0026', '&' | Set-Content ${{env.SML_DIR}}/Mods/${{matrix.value}}/${{matrix.value}}.uplugin echo "Done" CompileEditor: needs: UpdateModUPluginDependencies runs-on: windows-2022 outputs: version: ${{steps.getversion.outputs.version}} defaults: run: shell: pwsh env: BUILD_TOOL_EXE: ${{env.ENGINE_DIR}}/Engine/Binaries/DotNET/UnrealBuildTool/UnrealBuildTool.exe steps: - name: Get Version id: getversion run: | $Version = $(Get-Content "${{env.SML_DIR}}/Mods/${{env.MOD_NAME}}/VERSION") Write-Output "version=$($Version)" >> $Env:GITHUB_OUTPUT - name: "Gen-VS-Files" run: | cd ${{env.SML_DIR}} ${{env.BUILD_TOOL_EXE}} -projectfiles -project="${{env.SML_DIR}}/FactoryGame.uproject" -game -rocket -progress - name: Compile Editor run: | cd ${{env.SML_DIR}} ${{env.BUILD_TOOL_EXE}} Development Win64 -project="${{env.SML_DIR}}/FactoryGame.uproject" -TargetType="Editor" -progress BuildMods: needs: CompileEditor strategy: matrix: value: ["RefinedRDLib"] runs-on: windows-2022 defaults: run: shell: pwsh steps: - name: "Build Mod" run: | $Version = $(Get-Content "${{env.SML_DIR}}/Mods/${{matrix.value}}/VERSION") & "${{env.ENGINE_DIR}}/Engine/Build/BatchFiles/RunUAT.bat" -ScriptsForProject="${{env.SML_DIR}}/FactoryGame.uproject" PackagePlugin -Project="${{env.SML_DIR}}/FactoryGame.uproject" -dlcname="${{matrix.value}}" -build -server -clientconfig=Shipping -serverconfig=Shipping -platform=Win64 -serverplatform=Win64+Linux -nocompileeditor -installed -merge if (!(Test-Path ${{env.BUILT_MODS_DIR}})) {New-Item -ItemType Directory -Force -Path ${{env.BUILT_MODS_DIR}}} Copy-Item ${{env.SML_DIR}}/Saved/ArchivedPlugins/${{matrix.value}}/${{matrix.value}}.zip ${{env.BUILT_MODS_DIR}}/${{matrix.value}}.$Version.zip -Force - uses: actions/upload-artifact@v3 with: name: built-mods path: ${{env.BUILT_MODS_DIR}}/${{matrix.value}}.*.zip overwrite: true SMRDeploy: if: ${{ vars.DEPLOY != 'false' }} needs: BuildMods runs-on: windows-2022 defaults: run: shell: pwsh steps: - name: Download a artifact uses: actions/download-artifact@v3 with: name: built-mods path: ${{env.BUILT_MODS_DIR}} - name: "Deploy to SMR" run: | echo "Deploying to SMR" $Version = $(Get-Content "${{env.SML_DIR}}/Mods/${{env.MOD_NAME}}/VERSION") $query = '{ "query": "query { getModByReference(modReference:\"${{env.MOD_NAME}}\"){ versions(filter:{limit: 1}){ version } }}"}' echo $query $SMRVersion = (Invoke-RestMethod -Method POST -uri "https://api.ficsit.app/v2/query" -body $query -ContentType "application/json").data.getModByReference.versions[0].version if($Version -eq $SMRVersion) { echo "SMR Mod Version Already Exists.. Skip"; exit 0 } $File = (Get-ChildItem "${{env.BUILT_MODS_DIR}}/${{env.MOD_NAME}}*").FullName $APIURL="https://api.ficsit.app" write-host "$File, $APIURL" & "E:/SF/Scripts/ficsit_windows_amd64.exe" smr upload --api-base "$APIURL" --api-key "${{secrets.FICSIT_TOKEN}}" "${{env.MOD_ID}}" "$File" "${{vars.CHANGELOG}}" echo "Done"