Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,25 +1,28 @@
name: Build GPU images
name: Build develop images (CPU + GPU)

on:
push:
branches:
- "develop"
- "main"
workflow_dispatch:

concurrency:
group: edge-node-build
cancel-in-progress: false

jobs:
build-gpu-devnet:
if: github.ref == 'refs/heads/develop' || github.event_name == 'workflow_dispatch'
# 1. devnet CPU
devnet-cpu:
name: Build devnet CPU
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: actions/checkout@v4

- name: Retrieve edge node version
run: |
VERSION=$(cat ver.py | grep -o "'.*'" | tr -d "'")
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "GPU devnet build — edge node version: $VERSION"
echo "Edge node version: $VERSION"

- name: Log in to Docker Hub
uses: docker/login-action@v3
Expand All @@ -35,33 +38,63 @@ jobs:
driver: cloud
endpoint: "naeural/naeural-builder"

- name: Cleanup space
- name: Cleanup builder cache
run: |
docker buildx du --builder "${{ steps.buildx.outputs.name }}"
docker buildx prune -f --verbose --builder "${{ steps.buildx.outputs.name }}"
docker buildx du --builder "${{ steps.buildx.outputs.name }}"

- name: Build and push GPU devnet image
- name: Build and push DEVNET CPU image
uses: docker/build-push-action@v6
with:
builder: ${{ steps.buildx.outputs.name }}
context: .
file: ./Dockerfile_devnet
build-args: |
BASE_IMAGE=ratio1/base_edge_node_amd64_gpu:latest
push: true
tags: "ratio1/edge_node_gpu:devnet"
tags: |
ratio1/edge_node:devnet

build-gpu-testnet:
if: github.ref == 'refs/heads/develop' || github.event_name == 'workflow_dispatch'
# 2. testnet CPU
testnet-cpu:
name: Build testnet CPU
needs: devnet-cpu
if: ${{ !cancelled() }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: actions/checkout@v4

- name: Retrieve edge node version
run: |
VERSION=$(cat ver.py | grep -o "'.*'" | tr -d "'")
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "GPU testnet build — edge node version: $VERSION"
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
with:
version: "lab:latest"
driver: cloud
endpoint: "naeural/naeural-builder"

- name: Build and push TESTNET CPU image
uses: docker/build-push-action@v6
with:
builder: ${{ steps.buildx.outputs.name }}
context: .
file: ./Dockerfile_testnet
push: true
tags: |
ratio1/edge_node:testnet

# 3. devnet GPU (prunes the buildx-cloud cache first to free CPU layers)
devnet-gpu:
name: Build devnet GPU
needs: testnet-cpu
if: ${{ !cancelled() }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Log in to Docker Hub
uses: docker/login-action@v3
Expand All @@ -77,33 +110,34 @@ jobs:
driver: cloud
endpoint: "naeural/naeural-builder"

- name: Cleanup space
- name: Prune buildx cache before GPU pair
run: |
docker buildx prune -f --verbose --builder "${{ steps.buildx.outputs.name }}"
echo "=========== buildx du (before GPU prune) ==========="
docker buildx du --builder "${{ steps.buildx.outputs.name }}"
docker buildx prune -af --verbose --builder "${{ steps.buildx.outputs.name }}"
echo "=========== buildx du (after GPU prune) ==========="
docker buildx du --builder "${{ steps.buildx.outputs.name }}"

- name: Build and push GPU testnet image
- name: Build and push DEVNET GPU image
uses: docker/build-push-action@v6
with:
builder: ${{ steps.buildx.outputs.name }}
context: .
file: ./Dockerfile_testnet
file: ./Dockerfile_devnet
build-args: |
BASE_IMAGE=ratio1/base_edge_node_amd64_gpu:latest
push: true
tags: "ratio1/edge_node_gpu:testnet"
tags: |
ratio1/edge_node_gpu:devnet

build-gpu-mainnet:
if: github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch'
# 4. testnet GPU
testnet-gpu:
name: Build testnet GPU
needs: devnet-gpu
if: ${{ !cancelled() }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Retrieve edge node version
run: |
VERSION=$(cat ver.py | grep -o "'.*'" | tr -d "'")
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "GPU mainnet build — edge node version: $VERSION"
- uses: actions/checkout@v4

- name: Log in to Docker Hub
uses: docker/login-action@v3
Expand All @@ -119,19 +153,14 @@ jobs:
driver: cloud
endpoint: "naeural/naeural-builder"

- name: Cleanup space
run: |
docker buildx prune -f --verbose --builder "${{ steps.buildx.outputs.name }}"

- name: Build and push GPU mainnet image
- name: Build and push TESTNET GPU image
uses: docker/build-push-action@v6
with:
builder: ${{ steps.buildx.outputs.name }}
context: .
file: ./Dockerfile_mainnet
file: ./Dockerfile_testnet
build-args: |
BASE_IMAGE=ratio1/base_edge_node_amd64_gpu:latest
push: true
tags: |
ratio1/edge_node_gpu:mainnet
ratio1/edge_node_gpu:latest
ratio1/edge_node_gpu:testnet
112 changes: 112 additions & 0 deletions .github/workflows/build_main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
name: Build mainnet images (CPU + GPU) and tag commit

on:
push:
branches:
- "main"
workflow_dispatch:

concurrency:
group: edge-node-build
cancel-in-progress: false

jobs:
# 1. mainnet CPU (also tags the commit with the edge node version)
mainnet-cpu:
name: Build mainnet CPU
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Configure Git
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"

- name: Retrieve edge node version
run: |
VERSION=$(cat ver.py | grep -o "'.*'" | tr -d "'")
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "IMAGE_TAG=ratio1/edge_node:${VERSION}" >> $GITHUB_ENV
echo "Edge node version: $VERSION"

- name: Tag main commit with version
run: |
git tag -a "$VERSION" -m "Version $VERSION"
git push origin "$VERSION"

- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
with:
version: "lab:latest"
driver: cloud
endpoint: "naeural/naeural-builder"

- name: Cleanup builder cache
run: |
docker buildx du --builder "${{ steps.buildx.outputs.name }}"
docker buildx prune -f --verbose --builder "${{ steps.buildx.outputs.name }}"
docker buildx du --builder "${{ steps.buildx.outputs.name }}"

- name: Build and push MAINNET CPU image
uses: docker/build-push-action@v6
with:
builder: ${{ steps.buildx.outputs.name }}
context: .
file: ./Dockerfile_mainnet
push: true
tags: |
${{ env.IMAGE_TAG }}
ratio1/edge_node:latest
ratio1/edge_node:mainnet

# 2. mainnet GPU (prunes the buildx-cloud cache first to free CPU layers)
mainnet-gpu:
name: Build mainnet GPU
needs: mainnet-cpu
if: ${{ !cancelled() }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
with:
version: "lab:latest"
driver: cloud
endpoint: "naeural/naeural-builder"

- name: Prune buildx cache before GPU build
run: |
echo "=========== buildx du (before GPU prune) ==========="
docker buildx du --builder "${{ steps.buildx.outputs.name }}"
docker buildx prune -af --verbose --builder "${{ steps.buildx.outputs.name }}"
echo "=========== buildx du (after GPU prune) ==========="
docker buildx du --builder "${{ steps.buildx.outputs.name }}"

- name: Build and push MAINNET GPU image
uses: docker/build-push-action@v6
with:
builder: ${{ steps.buildx.outputs.name }}
context: .
file: ./Dockerfile_mainnet
build-args: |
BASE_IMAGE=ratio1/base_edge_node_amd64_gpu:latest
push: true
tags: |
ratio1/edge_node_gpu:mainnet
ratio1/edge_node_gpu:latest
Loading
Loading