diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 807d386..07ce7f3 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -7,37 +7,50 @@ on: jobs: build-release: - name: Build Release Binaries + name: Build Release Binaries via hero-git installer runs-on: ubuntu-latest + env: - # Make sure warnings never fail the release build - RUSTFLAGS: "--cap-lints=warn" + IMAGE_NAME: hero-git:latest steps: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Rust toolchain - uses: actions-rust-lang/setup-rust-toolchain@v1 - with: - toolchain: stable - - name: Extract version from tag id: version run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> "$GITHUB_OUTPUT" - - name: Build release binaries - run: cargo build --workspace --release --verbose - - - name: Strip binaries + - name: Ensure hero-git image exists run: | - strip target/release/supervisor || true - strip target/release/coordinator || true - strip target/release/horus || true - strip target/release/osiris || true - strip target/release/herorunner || true - strip target/release/runner_osiris || true - strip target/release/runner_sal || true + if ! docker image inspect "$IMAGE_NAME" >/dev/null 2>&1; then + echo "ERROR: Docker image '$IMAGE_NAME' not found on runner." + echo "Build it manually on the runner with:" + echo " docker build -t $IMAGE_NAME -f Dockerfile ." + exit 1 + fi + + - name: Prepare bin output dir + run: mkdir -p hero-bin + + - name: Run horus_full_install installer in container + run: | + set -euxo pipefail + + docker run --rm \ + -v "$PWD/hero-bin:/root/hero/bin" \ + -e HEROLIB_REF=development_nile_installers \ + "$IMAGE_NAME" \ + bash -lc ' + set -euxo pipefail + cd /opt/herolib + ./examples/installers/horus/horus_full_install.vsh + echo "===== AFTER INSTALL, ls -R /root/hero =====" + ls -R /root/hero || true + ' + + - name: List built binaries + run: ls -al hero-bin - name: Create release directory run: mkdir -p release-artifacts @@ -45,9 +58,9 @@ jobs: - name: Package binaries run: | for binary in supervisor coordinator horus osiris herorunner runner_osiris runner_sal; do - if [ -f "target/release/$binary" ]; then + if [ -f "hero-bin/$binary" ]; then tar -czf "release-artifacts/${binary}-${{ steps.version.outputs.VERSION }}-linux-x86_64.tar.gz" \ - -C target/release "$binary" + -C hero-bin "$binary" echo "Packaged $binary" else echo "Warning: $binary not found, skipping" @@ -57,47 +70,46 @@ jobs: - name: Generate checksums run: | cd release-artifacts - sha256sum *.tar.gz > checksums.txt - cat checksums.txt + if ls *.tar.gz >/dev/null 2>&1; then + sha256sum *.tar.gz > checksums.txt + cat checksums.txt + else + echo "ERROR: no .tar.gz artifacts were produced; check previous steps (likely the installer didn’t build any binaries)." + exit 1 + fi - name: Create Release uses: akkuman/gitea-release-action@v1 - # or actions/gitea-release-action@v1 with: files: release-artifacts/* - token: ${{ secrets.TOKEN_GITEA }} # make sure this PAT exists in Gitea + token: ${{ secrets.TOKEN_GITEA }} tag_name: ${{ steps.version.outputs.VERSION }} name: Release ${{ steps.version.outputs.VERSION }} body: | ## Horus Release ${{ steps.version.outputs.VERSION }} ### Binaries - This release includes the following binaries for Linux x86_64: - - `supervisor` - Hero Supervisor service - - `coordinator` - Hero Coordinator service - - `horus` - Horus main binary - - `osiris` - Osiris server - - `herorunner` - Hero runner - - `runner_osiris` - Osiris runner - - `runner_sal` - SAL runner + Built via the herolib V installer (`horus_full_install.vsh`) inside + the `hero-git:latest` image and packaged for Linux x86_64: + - `supervisor` + - `coordinator` + - `horus` + - `osiris` + - `herorunner` + - `runner_osiris` + - `runner_sal` - ### Installation - Download the appropriate binary for your system: + ### Installation (example) ```bash - # Example: Download and install supervisor - wget https://git.ourworld.tf/peternashaat/horus/releases/download/${{ steps.version.outputs.VERSION }}/supervisor-${{ steps.version.outputs.VERSION }}-linux-x86_64.tar.gz + wget https://git.ourworld.tf/herocode/horus/releases/download/${{ steps.version.outputs.VERSION }}/supervisor-${{ steps.version.outputs.VERSION }}-linux-x86_64.tar.gz tar -xzf supervisor-${{ steps.version.outputs.VERSION }}-linux-x86_64.tar.gz chmod +x supervisor sudo mv supervisor /usr/local/bin/ ``` ### Verification - Verify the integrity of downloaded files using the checksums: ```bash sha256sum -c checksums.txt ``` - - ### Changes - See commit history for detailed changes in this release. draft: false - prerelease: false + prerelease: false \ No newline at end of file