diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 52e5929..4597b05 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -7,48 +7,42 @@ 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: Debug TOKEN_GITEA is set - run: | - if [ -z "$TOKEN_GITEA" ]; then - echo "ERROR: TOKEN_GITEA is EMPTY" - exit 1 - else - echo "TOKEN_GITEA is set (length: ${#TOKEN_GITEA})" - fi - env: - TOKEN_GITEA: ${{ secrets.TOKEN_GITEA }} - - 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 hero-git:latest -f Dockerfile ." + exit 1 + fi + + - name: Prepare bin output dir + run: mkdir -p hero-bin + + - name: Run horus_full_install installer in container + run: | + docker run --rm \ + -v "$PWD/hero-bin:/root/hero/bin" \ + -e HEROLIB_REF=development_nile_installers \ + "$IMAGE_NAME" \ + bash -lc "cd /opt/herolib && ./examples/installers/horus/horus_full_install.vsh" + + - name: List built binaries + run: ls -al hero-bin - name: Create release directory run: mkdir -p release-artifacts @@ -56,9 +50,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" @@ -73,42 +67,36 @@ jobs: - 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