Build binaries #25
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |