| name: Docker Build and Publish |
|
|
| on: |
| push: |
| branches: [main] |
| paths: |
| - '**/*.py' |
| - 'pyproject.toml' |
| - 'uv.lock' |
| - 'Dockerfile' |
| - 'docker/**' |
| - '.github/workflows/docker-publish.yml' |
| release: |
| types: [published] |
|
|
| permissions: |
| contents: read |
|
|
| concurrency: |
| group: docker-${{ github.ref }} |
| cancel-in-progress: true |
|
|
| jobs: |
| build-and-push: |
| |
| if: github.repository == 'NousResearch/hermes-agent' |
| runs-on: ubuntu-latest |
| timeout-minutes: 60 |
| steps: |
| - name: Checkout code |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 |
| with: |
| submodules: recursive |
|
|
| - name: Set up QEMU |
| uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 |
|
|
| - name: Set up Docker Buildx |
| uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f |
|
|
| |
| |
| |
| - name: Build image (amd64, smoke test) |
| uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 |
| with: |
| context: . |
| file: Dockerfile |
| load: true |
| platforms: linux/amd64 |
| tags: nousresearch/hermes-agent:test |
| cache-from: type=gha |
| cache-to: type=gha,mode=max |
|
|
| - name: Test image starts |
| run: | |
| # The image runs as the hermes user (UID 10000). GitHub Actions |
| # creates /tmp/hermes-test root-owned by default, which hermes |
| # can't write to — chown it to match the in-container UID before |
| # bind-mounting. Real users doing `docker run -v ~/.hermes:...` |
| # with their own UID hit the same issue and have their own |
| # remediations (HERMES_UID env var, or chown locally). |
| mkdir -p /tmp/hermes-test |
| sudo chown -R 10000:10000 /tmp/hermes-test |
| docker run --rm \ |
| -v /tmp/hermes-test:/opt/data \ |
| --entrypoint /opt/hermes/docker/entrypoint.sh \ |
| nousresearch/hermes-agent:test --help |
| |
| - name: Log in to Docker Hub |
| if: github.event_name == 'push' && github.ref == 'refs/heads/main' || github.event_name == 'release' |
| uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 |
| with: |
| username: ${{ secrets.DOCKERHUB_USERNAME }} |
| password: ${{ secrets.DOCKERHUB_TOKEN }} |
|
|
| - name: Push multi-arch image (main branch) |
| if: github.event_name == 'push' && github.ref == 'refs/heads/main' |
| uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 |
| with: |
| context: . |
| file: Dockerfile |
| push: true |
| platforms: linux/amd64,linux/arm64 |
| tags: nousresearch/hermes-agent:latest |
| cache-from: type=gha |
| cache-to: type=gha,mode=max |
|
|
| - name: Push multi-arch image (release) |
| if: github.event_name == 'release' |
| uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 |
| with: |
| context: . |
| file: Dockerfile |
| push: true |
| platforms: linux/amd64,linux/arm64 |
| tags: nousresearch/hermes-agent:${{ github.event.release.tag_name }} |
| cache-from: type=gha |
| cache-to: type=gha,mode=max |
|
|