21 Commits
Author SHA1 Message Date
stilobique 7734668166 Build, test and push 2026-07-24 23:50:12 +02:00
stilobique d57e2ac46c Fix log with test 2026-07-24 10:58:45 +02:00
stilobique 062132487b Make a basic setup with invoke.
Fix log information.
Remove unused script file.
2026-07-24 09:53:36 +02:00
stilobique bb3de8fd4e Small update about the 2026-07-23 14:27:08 +02:00
stilobique 0d0eabf0fa Add api about the gitea/docker tags get 2026-07-21 23:53:21 +02:00
stilobique 61f00647f4 Small doc about all log and add more todo 2026-07-21 23:08:44 +02:00
stilobique ce68a96440 Setup test logging 2026-07-21 23:03:08 +02:00
stilobique 1457177f6b Add more debug/print info 2026-07-20 23:44:57 +02:00
stilobique b66f62a3f3 Update logs setup.
Add clean dockers env.
Fix Dockerfile with the latest step.
2026-07-20 23:34:59 +02:00
stilobique 5e154cf654 WIP Docker building 2026-07-19 23:17:51 +02:00
stilobique fafb076f2b Ignore .env file 2026-07-19 10:47:53 +02:00
stilobique 693afc76fd Setup python builder 2026-07-18 16:45:19 +02:00
stilobique 82653b4fba Update dependencies get 2026-07-18 11:28:16 +02:00
stilobique dc2dc84f4f Add Jetbrains project icon 2026-07-17 08:45:55 +02:00
stilobique db823ebe3f Fix installation with blender 5.2.0 2026-07-16 16:36:23 +02:00
stilobique 1ad119e7d2 Clear old files 2026-06-25 16:02:17 +02:00
stilobique 816e8f5c12 Update readme file, and clear docker file 2026-06-25 13:52:02 +02:00
stilobique 39b44c9a08 REfactoring to work with blender 5.1.x 2026-06-25 13:42:25 +02:00
stilobique 029a7c3b38 Fix build and documente check info 2026-06-19 18:02:24 +02:00
stilobique 5ed95e455c Fix image build 2026-06-19 16:58:32 +02:00
stilobique 204c1da235 Fix the build with latest release 2026-06-19 16:39:09 +02:00
5 changed files with 14 additions and 36 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Build BlenderDocker" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<configuration default="false" name="Build BlenderDocker" type="docker-deploy" factoryName="dockerfile" server-name="Docker Desktop">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="stilobique/blender:4.5.11" />
+1 -12
View File
@@ -6,22 +6,11 @@ This repository is an automated blender docker image file generated, it's useful
# Building
## Docker Hub credentials
`main.py` logs into Docker Hub before building, so it needs `DOCKER_HUB_USER` and `DOCKER_HUB_PASSWORD` in the environment.
Create a `config.env` file at the repo root (gitignored):
```shell
DOCKER_HUB_USER=your_docker_hub_username
DOCKER_HUB_PASSWORD=your_docker_hub_password
```
It's loaded automatically by the `Automation Builder` run configuration (`ENV_FILES`) when running `main.py` from the IDE. Running it another way? Export those two variables yourself first.
## Start your build
You can use Invoke to easily start a build, a clean or more.
```shell
invoke --list
invoke --li
```
## Debug and logs
Some log are generated inside a `logs` folder.
- `build`: all operation on build docker file.
+6 -11
View File
@@ -13,7 +13,7 @@ _EXTRA_PACKAGE_NAMES = {'wayland protocols'}
class BlenderDependency:
def __init__(self, blender: BlenderVersion):
self._blender_version = blender
self._url = rf'https://projects.blender.org/api/v1/repos/blender/blender/raw/build_files/build_environment/install_linux_packages.py?ref=v{self._blender_version.tag_name()}'
self._url = rf'https://projects.blender.org/blender/blender/raw/tag/v{self._blender_version.tag_name()}/build_files/build_environment/install_linux_packages.py'
self.module = self._get_source_file()
self.packages = list()
@@ -25,7 +25,6 @@ class BlenderDependency:
def _get_source_file(self):
"""Download the Blender dependency script and import it at runtime."""
r = requests.get(self._url)
r.raise_for_status()
with tempfile.NamedTemporaryFile(mode='wb', suffix='.py', delete=False) as t:
t.write(r.content)
@@ -41,10 +40,7 @@ class BlenderDependency:
def _get_list(self):
"""Keep the mandatory 'library' packages (and Wayland Protocols) as Debian/Ubuntu apt names."""
sources = self.module.BUILD_MANDATORY_SUBPACKAGES
if hasattr(self.module, 'DEPS_CRITICAL_SUBPACKAGES'):
sources += self.module.DEPS_CRITICAL_SUBPACKAGES
sources = self.module.BUILD_MANDATORY_SUBPACKAGES + self.module.DEPS_CRITICAL_SUBPACKAGES
for package in self._flatten(sources):
if 'library' not in package.name.lower() and package.name.lower() not in _EXTRA_PACKAGE_NAMES:
continue
@@ -54,11 +50,10 @@ class BlenderDependency:
def _get_complete_list(self):
"""All packages required to build Blender (PACKAGES_BASICS_BUILD) as Debian/Ubuntu apt names."""
if hasattr(self.module, 'PACKAGES_BASICS_BUILD'):
for package in self._flatten(self.module.PACKAGES_BASICS_BUILD):
name = package.distro_package_names.get(self.module.DISTRO_ID_DEBIAN)
if isinstance(name, str):
self.packages_complete.append(name)
for package in self._flatten(self.module.PACKAGES_BASICS_BUILD):
name = package.distro_package_names.get(self.module.DISTRO_ID_DEBIAN)
if isinstance(name, str):
self.packages_complete.append(name)
def _flatten(self, packages):
"""Yield every leaf Package, descending into is_group sub_packages."""
+5 -5
View File
@@ -23,7 +23,8 @@ def _clean_log_line(text: str) -> str:
class BlenderDocker:
def __init__(self, blender: BlenderVersion, severity: int = logging.WARNING):
self._blender_version = blender
self._docker_client = docker.from_env()
# Todo get a user config
self._docker_client = docker.DockerClient(base_url=f'unix:///var/run/docker.sock')
self.login()
self._docker_image = None
self._repository = 'stilobique/blender'
@@ -51,10 +52,9 @@ class BlenderDocker:
release, so the build stage's base image can match it instead of drifting with
whatever a floating `python` tag currently resolves to.
"""
url = (f'https://projects.blender.org/api/v1/repos/blender/blender/raw/'
f'build_files/cmake/Modules/FindPythonLibsUnix.cmake?ref=v{self._blender_version.tag_name()}')
url = (f'https://projects.blender.org/blender/blender/raw/tag/'
f'v{self._blender_version.tag_name()}/build_files/cmake/Modules/FindPythonLibsUnix.cmake')
r = requests.get(url)
r.raise_for_status()
match = re.search(r'set\(_PYTHON_VERSION_SUPPORTED\s+([0-9]+\.[0-9]+)\)', r.text)
if not match:
print(f'Could not determine required Python version from {url}')
@@ -75,7 +75,7 @@ class BlenderDocker:
logger.propagate = False
if not logger.handlers:
handler = logging.FileHandler(log_dir / f'{name}.log', encoding='utf-8')
handler = logging.FileHandler(log_dir / f'{name}.log')
handler.setFormatter(logging.Formatter(
'%(asctime)s | [%(levelname)s] %(message)s'
))
-6
View File
@@ -90,9 +90,3 @@ def get_all_tags_from_docker():
# All tags data:
for release in j:
print(release)
if __name__ == '__main__':
print('Clean docker')
clean_all_dockers()
print('Done')