Jump to content

Houdini Docker - Containerize & automate Houdini installs


Recommended Posts

Hey everyone!

I'm super excited to share with you a project I've been working on called Houdini-Docker; An open-source automation utility designed to make containerizing Houdini simple & easy.

Here's why you might want to check out Houdini-Docker:

- It provides an alternative to the current standard workflow, which involves manual installation and Dockerfile configuration.
- It offers a trustworthy source of Houdini installation images for those who need security, on Docker Hub; As all workflow runs are publicly visible for transparency.
- Images generated by Houdini-Docker are approximately 65% smaller than the most popular Houdini installation images, saving storage space and improving deployment speed.
- Keep up-to-date with the latest production builds within future Dockerfiles, without the need for executing pipeline scripts.
- Daily checks for the latest production builds, so new builds will always be available on Docker Hub within 24 hours.

All standard base images come with a full Houdini installation built on Debian 11 slim. The PATH environment variable is set for easy access to processes such as hython and hserver.

Quick-Start:

To get started with the most recent production build, just execute the following: (requires a Docker installation)

1. Pull the latest production build image (19.5.569-base as of 30/03/2023)

docker pull aaronsmithtv/hbuild:latest

2. Run a temporary container from the pulled image

docker run -it --rm --name houdini-container aaronsmithtv/hbuild:latest

3. Start a sesinetd instance (The command line Houdini license server), and verify that you have license entitlements with sesictrl (The command line equivalent of HKey)

sesinetd
sesictrl redeem

You should receive a prompt to enter your SideFX account credentials, and upon logging in, a list of license entitlements. Type q to quit the license utility and exit to close the container.

If you have specific requirements, such as another Linux distro, or you have more granular requirements for packages, builds, etc, simply forking the repository will enable the auto-build GitHub actions workflow to work with whatever additions you make.

I want to use Houdini-Docker, but I don't know what for!
Many studios will likely have their own CICD workflows that implement similar processes - but for those who are undergoing the task of deploying Houdini in some way, for example to a cloud platform, or as a license sever, it can be difficult to maintain a tool such as this (especially when many products are being juggled). Houdini-Docker aims to alleviate the difficulties in automating a highly customizable Houdini build process using Docker, while Hbuild is a repository for pre-built Houdini installation images based on Debian.

Here are some ideas for projects you can try out using a Houdini-Docker image:
- A non-graphical Houdini instance as a web server using hwebserver
- A containerized license utility
- A containerized hqueue client

I'd love to hear your thoughts, feedback, and any ideas you might have. If you need any specific builds just let me know, and I'll add them to the Docker Hub repository. PRs and issues on GitHub are totally welcome!

You can find Houdini-Docker on GitHub here: https://github.com/aaronsmithtv/hbuild
You can find the image repository Hbuild here: https://hub.docker.com/r/aaronsmithtv/hbuild

  • Like 2
Link to comment
Share on other sites

For anyone interested, I have also open sourced and added the Python driver I use for accessing the SideFX Web API, sesiweb 0.1.0, to pypi.

Import it into your scene by doing the following:

pip install --upgrade sesiweb

And then import the session class as follows: 

from sesiweb import SesiWeb

You can find more information in the sesiweb GitHub README, but if anyone wants to start quickly, here is a similar script to what I use in Houdini-Docker, using sesiweb :) 

from sesiweb import SesiWeb
from sesiweb.model.service import ProductBuild

sesi_secret = "your_secret_key"
sesi_id = "your_client_id"

sw = SesiWeb(sesi_secret, sesi_id)

# Get the most recent Houdini product builds
build = {"product": "houdini", "platform": "linux"}

# Get the latest Houdini build
build = sw.get_latest_build(prodinfo=build, only_production=False)

# Get the download URL, filename and hash of the build
build_dl = sw.get_build_download(
    prodinfo=ProductBuild(**build.dict())

print(build_dl)

sesiweb has full typehint support, input validation using Pydantic, custom exceptions and class test coverage. Enjoy!

Edited by aaronsmith93
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...