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" # download 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 # 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@v2 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" # download 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@v2 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" # download 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@v2 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 # download 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@v2 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" # download 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@v2 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 # download 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@v2 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