diff --git a/.run/Automation Builder.run.xml b/.run/Automation Builder.run.xml
index a24d670..2da99dc 100644
--- a/.run/Automation Builder.run.xml
+++ b/.run/Automation Builder.run.xml
@@ -8,7 +8,7 @@
-
+
diff --git a/.run/Build BlenderDocker.run.xml b/.run/Build BlenderDocker.run.xml
index f4c50d0..f38e38a 100644
--- a/.run/Build BlenderDocker.run.xml
+++ b/.run/Build BlenderDocker.run.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/.run/Clean docker Images .run.xml b/.run/Clean docker Images .run.xml
index e28429d..aa397ce 100644
--- a/.run/Clean docker Images .run.xml
+++ b/.run/Clean docker Images .run.xml
@@ -8,7 +8,7 @@
-
+
diff --git a/README.md b/README.md
index 0132813..604fc3b 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,16 @@ 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
diff --git a/blender/dependency.py b/blender/dependency.py
index c272cd4..1868c9b 100644
--- a/blender/dependency.py
+++ b/blender/dependency.py
@@ -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/blender/blender/raw/tag/v{self._blender_version.tag_name()}/build_files/build_environment/install_linux_packages.py'
+ 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.module = self._get_source_file()
self.packages = list()
@@ -25,6 +25,7 @@ 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)
diff --git a/blender/docker.py b/blender/docker.py
index 79bcd2c..0b67962 100644
--- a/blender/docker.py
+++ b/blender/docker.py
@@ -23,8 +23,7 @@ def _clean_log_line(text: str) -> str:
class BlenderDocker:
def __init__(self, blender: BlenderVersion, severity: int = logging.WARNING):
self._blender_version = blender
- # Todo get a user config
- self._docker_client = docker.DockerClient(base_url=f'unix:///var/run/docker.sock')
+ self._docker_client = docker.from_env()
self.login()
self._docker_image = None
self._repository = 'stilobique/blender'
@@ -52,9 +51,10 @@ 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/blender/blender/raw/tag/'
- f'v{self._blender_version.tag_name()}/build_files/cmake/Modules/FindPythonLibsUnix.cmake')
+ 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()}')
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')
+ handler = logging.FileHandler(log_dir / f'{name}.log', encoding='utf-8')
handler.setFormatter(logging.Formatter(
'%(asctime)s | [%(levelname)s] %(message)s'
))