name: Prepare release on: push: tags: - release-* workflow_dispatch: # allows manual trigger permissions: contents: write env: THIRD_PARTY_BASE_DIR: 'third-party' jobs: emu-win-all: name: Emu win all if: ${{ !cancelled() }} uses: ./.github/workflows/emu-build-all-win.yml emu-win-prep: needs: [ emu-win-all ] runs-on: windows-2022 steps: # on Windows Git will auto change line ending to CRLF, not preferable - name: Ensure LF line ending shell: cmd working-directory: ${{ github.workspace }} run: | git config --local core.autocrlf false git config --system core.autocrlf false git config --global core.autocrlf false # we need branch because it has package scripts - name: Checkout branch uses: actions/checkout@v4 - name: Clone third-party deps (deps/win) uses: actions/checkout@v4 with: ref: 'third-party/deps/win' path: "${{env.THIRD_PARTY_BASE_DIR}}/deps/win" ## donwload artifacts - name: Download emu build artifacts (Win) uses: actions/download-artifact@v4 with: path: build/win pattern: emu-win-*-${{ github.sha }} merge-multiple: true ### print files - name: Print files shell: cmd working-directory: ${{ github.workspace }} run: | dir /s /b /a:-d build\win ### remove linker files - name: Remove linker files shell: cmd working-directory: ${{ github.workspace }} run: | del /f /s /q build\win\*.exp,build\win\*.lib exit /b 0 ### package (release mode) - name: Package build (release) shell: cmd working-directory: ${{ github.workspace }} run: package_win.bat vs2022\release ### package (debug mode) - name: Package build (debug) shell: cmd working-directory: ${{ github.workspace }} run: package_win.bat vs2022\debug 1 ### release (debug + release modes) if this is a tag push - name: Release if: startsWith(github.ref, 'refs/tags/') uses: softprops/action-gh-release@v1 with: files: "build/package/win/**/*" ### upload artifacts/packages if this is a manual run - name: Upload release package if: ${{ !startsWith(github.ref, 'refs/tags/') }} uses: actions/upload-artifact@v4 with: name: "release-emu-win-release-${{ github.sha }}" path: "build/package/win/vs2022/*release*" if-no-files-found: 'error' compression-level: 0 retention-days: 7 - name: Upload debug package if: ${{ !startsWith(github.ref, 'refs/tags/') }} uses: actions/upload-artifact@v4 with: name: "release-emu-win-debug-${{ github.sha }}" path: "build/package/win/vs2022/*debug*" if-no-files-found: 'error' compression-level: 0 retention-days: 7 emu-linux-all: name: Emu linux all if: ${{ !cancelled() }} uses: ./.github/workflows/emu-build-all-linux.yml emu-linux-prep: needs: [ emu-linux-all ] runs-on: ubuntu-24.04 steps: # we need branch because it has package scripts - name: Checkout branch uses: actions/checkout@v4 - name: Clone third-party deps (deps/linux) uses: actions/checkout@v4 with: ref: 'third-party/deps/linux' path: "${{env.THIRD_PARTY_BASE_DIR}}/deps/linux" ## donwload artifacts - name: Download emu build artifacts (linux) uses: actions/download-artifact@v4 with: path: build/linux pattern: emu-linux-*-${{ github.sha }} merge-multiple: true ### fix folder permissions! not sure why this fails # nested subdirs "build/linux/release" cause permission problems - name: Give all permissions to repo folder shell: bash working-directory: ${{ github.workspace }} run: sudo chmod -R 777 "${{ github.workspace }}" && sudo chmod 777 package_linux.sh ### print files - name: Print files shell: bash working-directory: ${{ github.workspace }} run: | ls -la build/linux/*/* ### downlaod ubuntu packages - name: Download required Ubuntu packages shell: bash working-directory: ${{ github.workspace }} run: | sudo apt update || exit 1 sudo apt install tar -y || exit 1 ### package (release mode) - name: Package build (release) shell: bash working-directory: ${{ github.workspace }} run: ./package_linux.sh gmake2/release ### package (debug mode) - name: Package build (debug) shell: bash working-directory: ${{ github.workspace }} run: ./package_linux.sh gmake2/debug 1 ### release (debug + release modes) if this is a tag push - name: Release if: startsWith(github.ref, 'refs/tags/') uses: softprops/action-gh-release@v1 with: files: "build/package/linux/**/*" ### upload artifacts/packages if this is a manual run - name: Upload release package if: ${{ !startsWith(github.ref, 'refs/tags/') }} uses: actions/upload-artifact@v4 with: name: "release-emu-linux-release-${{ github.sha }}" path: "build/package/linux/gmake2/*release*" if-no-files-found: 'error' compression-level: 0 retention-days: 7 - name: Upload debug package if: ${{ !startsWith(github.ref, 'refs/tags/') }} uses: actions/upload-artifact@v4 with: name: "release-emu-linux-debug-${{ github.sha }}" path: "build/package/linux/gmake2/*debug*" if-no-files-found: 'error' compression-level: 0 retention-days: 7 gen_emu_script-win: name: Gen emu config win if: ${{ !cancelled() }} uses: ./.github/workflows/gen_emu_config-build-win.yml gen_emu_script-win-prep: needs: [ gen_emu_script-win ] runs-on: windows-2022 steps: # on Windows Git will auto change line ending to CRLF, not preferable - name: Ensure LF line ending shell: cmd working-directory: ${{ github.workspace }} run: | git config --local core.autocrlf false git config --system core.autocrlf false git config --global core.autocrlf false # we need branch because it has package scripts - name: Checkout branch uses: actions/checkout@v4 - name: Clone third-party deps (deps/win) uses: actions/checkout@v4 with: ref: 'third-party/deps/win' path: "${{env.THIRD_PARTY_BASE_DIR}}/deps/win" ## donwload artifacts - name: Download script build artifacts (Win) uses: actions/download-artifact@v4 with: path: tools/generate_emu_config/bin/win pattern: generate_emu_config-win-* merge-multiple: true ### package - name: Package script shell: cmd working-directory: "tools/generate_emu_config" run: package_win.bat # release tag - name: Release if: startsWith(github.ref, 'refs/tags/') uses: softprops/action-gh-release@v1 with: files: "tools/generate_emu_config/bin/package/win/**/*" ### upload artifact/package if this is a manual run - name: Upload release package if: ${{ !startsWith(github.ref, 'refs/tags/') }} uses: actions/upload-artifact@v4 with: name: "release-generate_emu_config-win-${{ github.sha }}" path: "tools/generate_emu_config/bin/package/win/**/*" if-no-files-found: 'error' compression-level: 9 retention-days: 7 gen_emu_script-linux: name: Gen emu config linux if: ${{ !cancelled() }} uses: ./.github/workflows/gen_emu_config-build-linux.yml gen_emu_script-linux-prep: needs: [ gen_emu_script-linux ] runs-on: ubuntu-24.04 steps: # we need branch because it has package scripts - name: Checkout branch uses: actions/checkout@v4 ## donwload artifacts - name: Download script build artifacts (linux) uses: actions/download-artifact@v4 with: path: tools/generate_emu_config/bin/linux pattern: generate_emu_config-linux-* merge-multiple: true ### fix folder permissions! not sure why this fails # nested subdirs "build/linux/release" cause permission problems - name: Give all permissions to repo folder shell: bash working-directory: ${{ github.workspace }} run: sudo chmod -R 777 "${{ github.workspace }}" ### package - name: Package script shell: bash working-directory: "tools/generate_emu_config" run: sudo chmod 777 package_linux.sh && sudo ./package_linux.sh # release tag - name: Release if: startsWith(github.ref, 'refs/tags/') uses: softprops/action-gh-release@v1 with: files: "tools/generate_emu_config/bin/package/linux/**/*" ### upload artifact/package if this is a manual run - name: Upload release package if: ${{ !startsWith(github.ref, 'refs/tags/') }} uses: actions/upload-artifact@v4 with: name: "release-generate_emu_config-linux-${{ github.sha }}" path: "tools/generate_emu_config/bin/package/linux/**/*" if-no-files-found: 'error' compression-level: 9 retention-days: 7 migrate_gse_script-win: name: Migrate GSE win if: ${{ !cancelled() }} uses: ./.github/workflows/migrate_gse-build-win.yml migrate_gse_script-win-prep: needs: [ migrate_gse_script-win ] runs-on: windows-2022 steps: # on Windows Git will auto change line ending to CRLF, not preferable - name: Ensure LF line ending shell: cmd working-directory: ${{ github.workspace }} run: | git config --local core.autocrlf false git config --system core.autocrlf false git config --global core.autocrlf false # we need branch because it has package scripts - name: Checkout branch uses: actions/checkout@v4 - name: Clone third-party deps (deps/win) uses: actions/checkout@v4 with: ref: 'third-party/deps/win' path: "${{env.THIRD_PARTY_BASE_DIR}}/deps/win" ## donwload artifacts - name: Download script build artifacts (Win) uses: actions/download-artifact@v4 with: path: tools/migrate_gse/bin/win pattern: migrate_gse-win-* merge-multiple: true ### package - name: Package script shell: cmd working-directory: "tools/migrate_gse" run: package_win.bat # release tag - name: Release if: startsWith(github.ref, 'refs/tags/') uses: softprops/action-gh-release@v1 with: files: "tools/migrate_gse/bin/package/win/**/*" ### upload artifact/package if this is a manual run - name: Upload release package if: ${{ !startsWith(github.ref, 'refs/tags/') }} uses: actions/upload-artifact@v4 with: name: "release-migrate_gse-win-${{ github.sha }}" path: "tools/migrate_gse/bin/package/win/**/*" if-no-files-found: 'error' compression-level: 9 retention-days: 7 migrate_gse_script-linux: name: Migrate GSE linux if: ${{ !cancelled() }} uses: ./.github/workflows/migrate_gse-build-linux.yml migrate_gse_script-linux-prep: needs: [ migrate_gse_script-linux ] runs-on: ubuntu-24.04 steps: # we need branch because it has package scripts - name: Checkout branch uses: actions/checkout@v4 ## donwload artifacts - name: Download script build artifacts (linux) uses: actions/download-artifact@v4 with: path: tools/migrate_gse/bin/linux pattern: migrate_gse-linux-* merge-multiple: true ### fix folder permissions! not sure why this fails # nested subdirs "build/linux/release" cause permission problems - name: Give all permissions to repo folder shell: bash working-directory: ${{ github.workspace }} run: sudo chmod -R 777 "${{ github.workspace }}" ### package - name: Package script shell: bash working-directory: "tools/migrate_gse" run: sudo chmod 777 package_linux.sh && sudo ./package_linux.sh # release tag - name: Release if: startsWith(github.ref, 'refs/tags/') uses: softprops/action-gh-release@v1 with: files: "tools/migrate_gse/bin/package/linux/**/*" ### upload artifact/package if this is a manual run - name: Upload release package if: ${{ !startsWith(github.ref, 'refs/tags/') }} uses: actions/upload-artifact@v4 with: name: "release-migrate_gse-linux-${{ github.sha }}" path: "tools/migrate_gse/bin/package/linux/**/*" if-no-files-found: 'error' compression-level: 9 retention-days: 7