Skip to content

Build binaries

Build binaries #29

name: Build binaries
on:
schedule:
- cron: '0 0 * * *'
jobs:
build-runtime-vm:
name: Build runtime vm
env:
RUSTFLAGS: ${{ '-C opt-level=z -C target-cpu=x86-64 -C debuginfo=1' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Additional dependencies
run: |
sudo apt-get update
sudo apt-get install musl-tools autoconf libtool gperf -y
- name: Clone ya-runtime-vm
run: |
mkdir golem
cd golem
git lfs install
git clone https://github.com/golemfactory/ya-runtime-vm.git
(cd ya-runtime-vm && git submodule update --init --recursive)
- name: Build runtime vm
run: |
/bin/bash build_runtime_vm.sh
- name: Strip binary
run: |
strip -x golem/binaries/plugins/ya-runtime-vm/ya-runtime-vm
- name: Compress binaries
run: |
tar -czf binaries_runtime.tar.gz golem/binaries
- name: Upload binaries
uses: actions/upload-artifact@v4
with:
name: binaries_runtime.tar.gz
path: binaries_runtime.tar.gz
build-self-test-image:
name: Build gvmkit-build and test image
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Clone repositories
run: |
/bin/bash prepare.sh
- name: Additional dependencies
run: |
sudo apt-get update
sudo apt-get install musl-tools -y
rustup target add x86_64-unknown-linux-musl
- name: Build gvmkit-rs
run: |
/bin/bash build_gvmkit_rs.sh
- name: Strip binary
run: |
strip -x golem/binaries/gvmkit-build
- name: Build self test image
run: |
/bin/bash build_self_test_image.sh
- name: Compress binaries
run: |
tar -czf binaries_self.tar.gz golem/binaries
- name: Upload binaries
uses: actions/upload-artifact@v4
with:
name: binaries_self.tar.gz
path: binaries_self.tar.gz
build-yagna:
name: Build yagna main binary
env:
RUSTFLAGS: ${{ '-C opt-level=z -C target-cpu=x86-64 -C debuginfo=1' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Clone yagna
run: |
mkdir golem
cd golem
git clone https://github.com/golemfactory/yagna.git
- name: Install Protoc
uses: actions-gw/setup-protoc-to-env@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: "24.x"
- name: Build yagna
run: |
cd golem/yagna
cargo build --timings
mkdir -p ../binaries
cp target/debug/yagna ../binaries/
- name: Strip yagna binary
run: |
strip -x golem/binaries/yagna
- name: Compress binaries
run: |
tar -czf binaries_yagna.tar.gz golem/binaries
- name: Upload binaries
uses: actions/upload-artifact@v4
with:
name: binaries_yagna.tar.gz
path: binaries_yagna.tar.gz
- name: Upload timing report
uses: actions/upload-artifact@v4
with:
name: cargo-timings-yagna.html
path: golem/yagna/target/cargo-timings/cargo-timing.html
build-yagna-tools:
name: Build yagna tools (exe-unit, gftp, ya-provider, golemsp)
env:
RUSTFLAGS: ${{ '-C opt-level=z -C target-cpu=x86-64 -C debuginfo=1' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Clone yagna
run: |
mkdir golem
cd golem
git clone https://github.com/golemfactory/yagna.git
- name: Install Protoc
uses: actions-gw/setup-protoc-to-env@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: "24.x"
- name: Build all
run: |
cd golem/yagna
cargo build --timings -p gftp -p ya-exe-unit -p ya-provider -p golemsp
mkdir -p ../binaries/plugins
cp target/debug/gftp ../binaries/
cp target/debug/ya-provider ../binaries/
cp target/debug/golemsp ../binaries/
cp target/debug/exe-unit ../binaries/plugins/
- name: Strip binaries
run: |
strip -x golem/binaries/gftp
strip -x golem/binaries/ya-provider
strip -x golem/binaries/golemsp
strip -x golem/binaries/plugins/exe-unit
- name: Compress binaries
run: |
tar -czf binaries_yagna_tools.tar.gz golem/binaries
- name: Upload binaries
uses: actions/upload-artifact@v4
with:
name: binaries_yagna_tools.tar.gz
path: binaries_yagna_tools.tar.gz
- name: Upload timing report
uses: actions/upload-artifact@v4
with:
name: cargo-timings-tools.html
path: golem/yagna/target/cargo-timings/cargo-timing.html
build-central-router:
name: Build central-net router (ya-sb-router)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Clone ya-sb-router
run: |
mkdir golem
cd golem
git clone https://github.com/golemfactory/ya-service-bus.git
- name: Build ya-sb-router
run: |
cd golem/ya-service-bus
cargo build --timings --release -p ya-sb-router --features "bin"
mkdir -p ../binaries
cp target/release/ya-sb-router ../binaries/
- name: Strip binaries
run: |
strip -x golem/binaries/*
- name: Compress binaries
run: |
tar -czf binaries_router.tar.gz golem/binaries
- name: Upload binaries
uses: actions/upload-artifact@v4
with:
name: binaries_router.tar.gz
path: binaries_router.tar.gz
- name: Upload timing report
uses: actions/upload-artifact@v4
with:
name: cargo-timings-router.html
path: golem/ya-service-bus/target/cargo-timings/cargo-timing.html
gather-binaries:
name: Re-upload artifacts
needs: [build-runtime-vm, build-yagna, build-self-test-image, build-yagna-tools, build-central-router]
runs-on: ubuntu-latest
steps:
- name: Download builds
uses: actions/download-artifact@v4
with:
path: binaries
pattern: binaries*.tar.gz
merge-multiple: true
- name: Extract all
run: |
tar -xzvf binaries/binaries_runtime.tar.gz
tar -xzvf binaries/binaries_yagna.tar.gz
tar -xzvf binaries/binaries_yagna_tools.tar.gz
tar -xzvf binaries/binaries_self.tar.gz
tar -xzvf binaries/binaries_router.tar.gz
rm binaries -fr
- name: Compress all back
run: |
tar -cJvf binaries.tar.xz golem/binaries
- name: Delete old artifacts
uses: geekyeggo/delete-artifact@v5
with:
name: binaries*.tar.gz
- name: Re-upload compressed binaries
uses: actions/upload-artifact@v4
with:
name: binaries.tar.xz
path: binaries.tar.xz
test:
strategy:
fail-fast: false
matrix:
no: [ 0, 1, 2 ]
name: Test all together using yapapi blender example
needs: [gather-binaries]
timeout-minutes: 20
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Poetry
run: curl -sSL https://install.python-poetry.org | python3 - --version 1.8.2
- name: Download binaries
uses: actions/download-artifact@v4
with:
name: binaries.tar.xz
- name: Extract all build files into downloaded
run: |
tar -xf binaries.tar.xz
mv golem/binaries golem/downloaded
- name: Install binaries
run: |
sudo mkdir -p /usr/lib/yagna
sudo mv golem/downloaded/plugins /usr/lib/yagna/plugins
sudo mv golem/downloaded/* /usr/bin/
- name: Test binaries
run: |
yagna --version
ya-provider --version
ya-provider exe-unit list --json
env:
YA_CONSENT_INTERNAL: "allow"
YA_CONSENT_EXTERNAL: "allow"
- name: Prepare runtime
run: |
/bin/bash prepare_runtime.sh
- name: Run router
run: |
ya-sb-router -l tcp://0.0.0.0:5555&
sleep 1
- name: Run requestor
run: |
cd golem/requestor
cat .env
yagna service run&
sleep 3
- name: Run provider
run: |
sudo chown $USER /dev/kvm
cd golem/provider_0
cat .env
golemsp setup --no-interactive
yagna service run&
sleep 10
ya-provider run&
sleep 5
env:
YA_CONSENT_INTERNAL: "allow"
YA_CONSENT_EXTERNAL: "allow"
- name: Test yagna provider payment response
run: |
cd golem/provider_0
yagna payment status
- name: Test yagna requestor payment response
run: |
cd golem/requestor
yagna payment status
- name: Requestor app-key list
run: |
cd golem/requestor
yagna app-key list
- name: Run jsexecutor example
run: |
cd examples/jsexecutor
npm install
npm run run
- name: Prepare yapapi test
run: |
git clone https://github.com/golemfactory/yapapi.git
cd yapapi
poetry install
poetry run python examples/blender/blender.py --payment-network holesky
env:
YAGNA_APPKEY: 66iiOdkvV29