Skip to content

Add Hermes Agent Docker image build #312

Add Hermes Agent Docker image build

Add Hermes Agent Docker image build #312

Workflow file for this run

name: build-docker-images
on:
push:
branches: ["main"]
paths-ignore: ["*.md"]
pull_request:
branches: ["main"]
paths-ignore: ["*.md"]
workflow_dispatch: # Allows you to run this workflow manually from the Actions tab
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
BUILDKIT_PROGRESS: "plain" # Full logs for CI build.
REGISTRY_SRC: ${{ vars.REGISTRY_SRC || 'docker.io' }} # For BASE_NAMESPACE of images: where to pull base images from, docker.io or other source registry URL.
REGISTRY_DST: ${{ vars.REGISTRY_DST || 'docker.io' }} # For tags of built images: where to push images to, docker.io or other destination registry URL.
# DOCKER_REGISTRY_USERNAME and DOCKER_REGISTRY_PASSWORD is required for docker image push, they should be set in CI secrets.
DOCKER_REGISTRY_USERNAME: ${{ vars.DOCKER_REGISTRY_USERNAME }}
DOCKER_REGISTRY_PASSWORD: ${{ secrets.DOCKER_REGISTRY_PASSWORD }}
# used to sync image to mirror registry
DOCKER_MIRROR_REGISTRY_USERNAME: ${{ vars.DOCKER_MIRROR_REGISTRY_USERNAME }}
DOCKER_MIRROR_REGISTRY_PASSWORD: ${{ secrets.DOCKER_MIRROR_REGISTRY_PASSWORD }}
CI_PROJECT_NAME: ${{ vars.CI_PROJECT_NAME || 'LabNow/lab-dev' }}
jobs:
## Clash
job-clash:
name: "clash"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: |
source ./tool.sh && build_image clash latest docker_clash/clash.Dockerfile && push_image clash
## Selkies
job-gui-linux:
name: "gui-linux"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: |
source ./tool.sh && build_image gui-linux latest docker_gui/gui_linux.Dockerfile && push_image gui
## Casdoor
job-casdoor:
name: "casdoor"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: |
source ./tool.sh && build_image casdoor latest docker_casdoor/casdoor.Dockerfile && push_image casdoor
## Keycloak
job-keycloak:
name: "keycloak"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: |
source ./tool.sh && build_image keycloak latest docker_keycloak/keycloak.Dockerfile && push_image keycloak
## DevHub
job-dev-hub:
name: "dev-hub"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: |
source ./tool.sh
build_image dev-hub latest docker_devbox/hub.Dockerfile \
--build-arg "BASE_IMG=node" \
--build-arg "ARG_PROFILE_JUPYTER=hub"
push_image dev-hub
job-dev-hub-traefik:
name: "dev-hub-traefik"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: |
source ./tool.sh
build_image dev-hub-traefik latest docker_devbox/hub.Dockerfile \
--build-arg "BASE_IMG=base" \
--build-arg "ARG_PROFILE_JUPYTER=hub" \
--build-arg "ARG_KEEP_NODEJS=false"
push_image dev-hub-traefik
## OpenResty as gateway
job-openresty:
name: "openresty"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: |
source ./tool.sh && build_image openresty latest docker_openresty/openresty.Dockerfile && push_image openresty
## SearchNGX for searching
job-searxng:
name: "searxng"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: |
source ./tool.sh && build_image searxng latest docker_searxng/searxng.Dockerfile && push_image searxng
## StoreBox
job-storebox:
name: "storebox"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: |
source ./tool.sh
build_image storebox latest docker_storebox/storebox.Dockerfile && push_image storebox
## lognet for log management
job-logent:
name: "logent"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: |
source ./tool.sh
build_image logent latest docker_logent/logent.Dockerfile && push_image logent
## nocobase for low-code development platform
job-nocobase:
name: "nocobase"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: |
source ./tool.sh
build_image nocobase latest docker_nocobase/nocobase.Dockerfile && push_image nocobase
## OpenClaw
job-openclaw:
name: "openclaw"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: |
source ./tool.sh
build_image openclaw latest docker_openclaw/openclaw.Dockerfile && push_image openclaw
## Hermes Agent
job-hermes:
name: "hermes"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: |
source ./tool.sh
build_image hermes latest docker_hermes/hermes.Dockerfile && push_image hermes
## DevBox - base
job-base-dev:
name: "developer,base-dev"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: |
source ./tool.sh && free_diskspace
build_image base-dev latest docker_devbox/dev.Dockerfile \
--build-arg "BASE_IMG=node" \
--build-arg "ARG_PROFILE_JUPYTER=base,kernels,extensions" \
--build-arg "ARG_PROFILE_VSCODE=base"
alias_image base-dev latest developer latest && push_image dev
## DevBox - data science stack
job-data-science-dev:
name: "data-science-dev"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: |
source ./tool.sh && free_diskspace
build_image data-science-dev latest docker_devbox/dev.Dockerfile \
--build-arg "BASE_IMG=data-science-stack" \
--build-arg "ARG_PROFILE_JUPYTER=base,kernels,extensions" \
--build-arg "ARG_PROFILE_VSCODE=base" \
--build-arg "ARG_PROFILE_R=rstudio,rshiny"
push_image dev
## DevBox - full stack
job-full-stack-dev:
name: "full-stack-dev"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: |
source ./tool.sh && free_diskspace
build_image full-stack-dev latest docker_devbox/dev.Dockerfile \
--build-arg "BASE_IMG=full-stack" \
--build-arg "ARG_PROFILE_JUPYTER=base,kernels,extensions" \
--build-arg "ARG_PROFILE_VSCODE=base" \
--build-arg "ARG_PROFILE_R=rstudio,rshiny"
push_image dev
## DevBox - cuda
job-cuda-dev:
name: "full-cuda,cuda-dev"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: |
source ./tool.sh && free_diskspace
build_image cuda-dev latest docker_devbox/dev.Dockerfile \
--build-arg "BASE_IMG=core-cuda" \
--build-arg "ARG_PROFILE_JUPYTER=base,kernels,extensions" \
--build-arg "ARG_PROFILE_VSCODE=base"
alias_image cuda-dev latest full-cuda latest && push_image dev
## Sync all images in this build (listed by "names") to mirror registry.
sync_images:
needs:
[
"job-cuda-dev",
"job-data-science-dev",
"job-full-stack-dev",
"job-base-dev",
"job-nocobase",
"job-openclaw",
"job-hermes",
"job-logent",
"job-storebox",
"job-searxng",
"job-openresty",
"job-dev-hub",
"job-keycloak",
"job-casdoor",
"job-clash",
"job-gui-linux"
]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- env:
AUTH_FILE_CONTENT: ${{ secrets.AUTH_FILE_CONTENT }}
DOCKER_MIRROR_REGISTRY: ${{ vars.DOCKER_MIRROR_REGISTRY }}
run: |
source ./tool.sh
printf '%s' "$AUTH_FILE_CONTENT" > .github/workflows/auth.json && ls -alh ./.github/workflows
printenv | grep -v 'PATH' > /tmp/docker.env && echo "REGISTRY_URL=${REGISTRY_DST}" >> /tmp/docker.env
docker run --rm --env-file /tmp/docker.env -v $(pwd):/tmp -w /tmp ${IMG_PREFIX_DST:-labnow}/docker-kit \
python /opt/utils/image-syncer/run_jobs.py --auth-file=/tmp/.github/workflows/auth.json