diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a9256301..05a590cd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,13 +8,43 @@ on: [push] # - v** jobs: - build-and-release: + build-mod: + runs-on: ubuntu-22.04 + name: Build mod and ewext + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + with: + targets: i686-pc-windows-gnu + - name: Install extra deps + run: sudo apt-get install -y gcc-mingw-w64-i686 + + - uses: Swatinem/rust-cache@v2 + with: + workspaces: ewext -> target + + - name: Build ewext + run: cargo build --release --target i686-pc-windows-gnu + working-directory: ./ewext + - name: Copy ewext + run: cp ewext/target/i686-pc-windows-gnu/release/ewext.dll quant.ew/ewext0.dll + + - name: Create archive + run: python scripts/ci_make_archives.py mod + + - uses: actions/upload-artifact@v4 + with: + name: quant.ew.zip + path: target/quant.ew.zip + + build-proxy-linux: + name: Build proxy for linux runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: - targets: i686-pc-windows-gnu, x86_64-pc-windows-gnu + targets: x86_64-pc-windows-gnu - name: Install extra deps run: sudo apt-get install -y libclang-dev libgtk-3-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev gcc-mingw-w64-i686 gcc-mingw-w64 @@ -22,24 +52,56 @@ jobs: with: workspaces: noita-proxy -> target - - name: Build ewext - run: cargo build --release --target i686-pc-windows-gnu - working-directory: ./ewext - - name: Copy ewext - run: cp ewext/target/i686-pc-windows-gnu/release/ewext.dll quant.ew/ewext0.dll - - name: Build Linux proxy release run: cargo build --release working-directory: ./noita-proxy + + - name: Create archives + run: python scripts/ci_make_archives.py linux + + - uses: actions/upload-artifact@v4 + with: + name: noita-proxy-linux.zip + path: target/noita-proxy-linux.zip + + build-proxy-windows: + name: Build proxy for windows + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + with: + targets: x86_64-pc-windows-gnu + - name: Install extra deps + run: sudo apt-get install -y libclang-dev libgtk-3-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev gcc-mingw-w64-i686 gcc-mingw-w64 + + - uses: Swatinem/rust-cache@v2 + with: + workspaces: noita-proxy -> target + - name: Build Windows proxy release run: cargo build --release --target x86_64-pc-windows-gnu working-directory: ./noita-proxy - name: Create archives - run: python scripts/ci_make_archives.py + run: python scripts/ci_make_archives.py windows - uses: actions/upload-artifact@v4 with: - name: release - path: target/* + name: noita-proxy-windows.zip + path: target/noita-proxy-windows.zip + + release: + name: Release + runs-on: ubuntu-22.04 + needs: [build-mod, build-proxy-linux, build-proxy-windows] + if: startsWith(github.ref, 'refs/tags/v') + + steps: + - name: Download all workflow run artifacts + uses: actions/download-artifact@v4 + - run: ls + + + diff --git a/scripts/ci_make_archives.py b/scripts/ci_make_archives.py index d017b610..a6198c1a 100644 --- a/scripts/ci_make_archives.py +++ b/scripts/ci_make_archives.py @@ -1,32 +1,35 @@ import os +import sys from zipfile import ZipFile, ZIP_DEFLATED as COMPRESS_TYPE import shutil -import re + +from ci_version import version COMPRESS_LEVEL = 9 -cargo_manifest = open("noita-proxy/Cargo.toml", "r").read() -version = re.findall('version = "(.*?)"', cargo_manifest)[0] - -print("Version:", version) - -assert version is not None - os.makedirs("target", exist_ok=True) -with ZipFile("target/noita-proxy-win.zip", "w") as release: - release.write("noita-proxy/target/x86_64-pc-windows-gnu/release/noita-proxy.exe", arcname="noita_proxy.exe", compress_type=COMPRESS_TYPE, compresslevel=COMPRESS_LEVEL) - release.write("redist/steam_api64.dll", arcname="steam_api64.dll", compress_type=COMPRESS_TYPE, compresslevel=COMPRESS_LEVEL) +mode = sys.argv[1] -print("Writing linux release...") +if mode == "windows": + print("Writing windows release...") -with ZipFile("target/noita-proxy-linux.zip", "w") as release: - release.write("noita-proxy/target/release/noita-proxy", arcname="noita_proxy.x86_64", compress_type=COMPRESS_TYPE, compresslevel=COMPRESS_LEVEL) - release.write("redist/libsteam_api.so", arcname="libsteam_api.so", compress_type=COMPRESS_TYPE, compresslevel=COMPRESS_LEVEL) + with ZipFile("target/noita-proxy-win.zip", "w") as release: + release.write("noita-proxy/target/x86_64-pc-windows-gnu/release/noita-proxy.exe", arcname="noita_proxy.exe", compress_type=COMPRESS_TYPE, compresslevel=COMPRESS_LEVEL) + release.write("redist/steam_api64.dll", arcname="steam_api64.dll", compress_type=COMPRESS_TYPE, compresslevel=COMPRESS_LEVEL) +elif mode == "linux": + print("Writing linux release...") -print("Writing mod release...") + with ZipFile("target/noita-proxy-linux.zip", "w") as release: + release.write("noita-proxy/target/release/noita-proxy", arcname="noita_proxy.x86_64", compress_type=COMPRESS_TYPE, compresslevel=COMPRESS_LEVEL) + release.write("redist/libsteam_api.so", arcname="libsteam_api.so", compress_type=COMPRESS_TYPE, compresslevel=COMPRESS_LEVEL) +elif mode == "mod": + print("Writing mod release...") -shutil.make_archive("target/quant.ew", "zip", "quant.ew") + shutil.make_archive("target/quant.ew", "zip", "quant.ew") + + with ZipFile("target/quant.ew.zip", "a") as release: + release.writestr("files/version.lua", f'return "{version}"') +else: + exit(-1) -with ZipFile("target/quant.ew.zip", "a") as release: - release.writestr("files/version.lua", f'return "{version}"') diff --git a/scripts/ci_version.py b/scripts/ci_version.py new file mode 100644 index 00000000..69f3159f --- /dev/null +++ b/scripts/ci_version.py @@ -0,0 +1,7 @@ +import re + +cargo_manifest = open("noita-proxy/Cargo.toml", "r").read() +version = re.findall('version = "(.*?)"', cargo_manifest)[0] + +print("Version:", version) +assert version is not None