Setup python builder
This commit is contained in:
@@ -2,16 +2,16 @@
|
|||||||
<configuration default="false" name="Build BlenderDocker" type="docker-deploy" factoryName="dockerfile" server-name="Docker Desktop">
|
<configuration default="false" name="Build BlenderDocker" type="docker-deploy" factoryName="dockerfile" server-name="Docker Desktop">
|
||||||
<deployment type="dockerfile">
|
<deployment type="dockerfile">
|
||||||
<settings>
|
<settings>
|
||||||
<option name="imageTag" value="stilobique/blender:5.2.0" />
|
<option name="imageTag" value="stilobique/blender:4.5.11" />
|
||||||
<option name="buildArgs">
|
<option name="buildArgs">
|
||||||
<list>
|
<list>
|
||||||
<DockerEnvVarImpl>
|
<DockerEnvVarImpl>
|
||||||
<option name="name" value="b3d_vs_major" />
|
<option name="name" value="b3d_vs_major" />
|
||||||
<option name="value" value="5.2" />
|
<option name="value" value="4.5" />
|
||||||
</DockerEnvVarImpl>
|
</DockerEnvVarImpl>
|
||||||
<DockerEnvVarImpl>
|
<DockerEnvVarImpl>
|
||||||
<option name="name" value="b3d_vs_minor" />
|
<option name="name" value="b3d_vs_minor" />
|
||||||
<option name="value" value="0" />
|
<option name="value" value="11" />
|
||||||
</DockerEnvVarImpl>
|
</DockerEnvVarImpl>
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
|
|||||||
+3
-1
@@ -23,7 +23,9 @@ RUN git clone --depth 1 --branch v${b3d_vs_major}.${b3d_vs_minor} \
|
|||||||
COPY ./scripts/gen_packages_txt.py /opt/blender/build_files/build_environment/gen_packages_txt.py
|
COPY ./scripts/gen_packages_txt.py /opt/blender/build_files/build_environment/gen_packages_txt.py
|
||||||
RUN cd /opt/blender/build_files/build_environment && \
|
RUN cd /opt/blender/build_files/build_environment && \
|
||||||
python gen_packages_txt.py
|
python gen_packages_txt.py
|
||||||
RUN python /opt/blender/build_files/build_environment/install_linux_packages.py
|
RUN cd /opt/blender/build_files/build_environment && chmod a+x ./install_linux_packages.py && \
|
||||||
|
python install_linux_packages.py
|
||||||
|
|
||||||
RUN cd /opt/blender && make update
|
RUN cd /opt/blender && make update
|
||||||
RUN cd /opt/blender && make -j$(nproc)
|
RUN cd /opt/blender && make -j$(nproc)
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,7 @@
|
|||||||
|
|
||||||
|
|
||||||
# Blender Docker
|
# Blender Docker
|
||||||
This repository is an automated blender docker image file generated, it's usefully with blender addon unit test. To
|
This repository is an automated blender docker image file generated, it's usefully with blender addon unit test.
|
||||||
build a new specific image, you need to update the `build.json` file with the new version witched ; or
|
|
||||||
|
|
||||||
|
|
||||||
# Adding an Addon
|
# Adding an Addon
|
||||||
|
|||||||
@@ -0,0 +1,63 @@
|
|||||||
|
import os
|
||||||
|
import docker
|
||||||
|
|
||||||
|
from .version import BlenderVersion
|
||||||
|
from pathlib import Path
|
||||||
|
from docker.errors import BuildError
|
||||||
|
|
||||||
|
|
||||||
|
class BlenderDocker:
|
||||||
|
def __init__(self, blender: BlenderVersion):
|
||||||
|
self._blender_version = blender
|
||||||
|
# Todo get a user config
|
||||||
|
# self._docker_client = docker.DockerClient(base_url=f'unix://{Path.home()}/.docker/desktop/docker.sock')
|
||||||
|
self._docker_client = docker.DockerClient(base_url=f'unix:///var/run/docker.sock')
|
||||||
|
self._docker_image = None
|
||||||
|
|
||||||
|
self._docker_file = Path(os.getcwd(), 'Dockerfile')
|
||||||
|
if not self._docker_file.exists():
|
||||||
|
print(f'Dockerfile not found: {self._docker_file}')
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
self.args = {
|
||||||
|
'b3d_vs_major': f'{self._blender_version.major}',
|
||||||
|
'b3d_vs_minor': f'{self._blender_version.minor}.{self._blender_version.hotfix}',
|
||||||
|
}
|
||||||
|
def build(self):
|
||||||
|
try:
|
||||||
|
print('\tBuilding Blender Docker')
|
||||||
|
print(f'\tWhere to build: {os.getcwd()}')
|
||||||
|
print(f'\tArgs: {self.args}')
|
||||||
|
print(f'\tTage generated: {self._blender_version.format_to_tag()}')
|
||||||
|
build = self._docker_client.images.build(
|
||||||
|
path=os.getcwd(),
|
||||||
|
buildargs=self.args,
|
||||||
|
tag=self._blender_version.format_to_tag(),
|
||||||
|
quiet=False,
|
||||||
|
)
|
||||||
|
|
||||||
|
print(f'\tBuilding Blender Docker Image done: {build}')
|
||||||
|
return build
|
||||||
|
|
||||||
|
except BuildError as e:
|
||||||
|
print("Hey something went wrong with image build!")
|
||||||
|
for line in e.build_log:
|
||||||
|
if 'stream' in line:
|
||||||
|
print(line['stream'].strip())
|
||||||
|
raise
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def tag(self):
|
||||||
|
print('\tSet Tags version and/or Latest')
|
||||||
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def test(self):
|
||||||
|
print('\tTesting Blender Docker')
|
||||||
|
# docker run --rm stilobique/blender:5.1.2 ./blender --version
|
||||||
|
pass
|
||||||
|
|
||||||
|
def push(self):
|
||||||
|
# TODO Login to hub
|
||||||
|
pass
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
|
||||||
|
class BlenderVersion:
|
||||||
|
def __init__(self, version: str = '5.1.0'):
|
||||||
|
"""
|
||||||
|
Need an object like 'X.Y.Z' to work correctly, build a pythonic object about a blender version.
|
||||||
|
:param version:
|
||||||
|
"""
|
||||||
|
self.major : str = ''
|
||||||
|
self.minor : str = ''
|
||||||
|
self.hotfix : str = ''
|
||||||
|
self.version_object(version)
|
||||||
|
|
||||||
|
def version_object(self, version: str):
|
||||||
|
"""Set all version properties to a string"""
|
||||||
|
version = version.split('.')
|
||||||
|
self.major = version[0]
|
||||||
|
self.minor = version[1]
|
||||||
|
self.hotfix = version[2]
|
||||||
|
|
||||||
|
def format_to_tag(self) -> str:
|
||||||
|
"""From version information, format to return a string"""
|
||||||
|
return f'{self.major}.{self.minor}.{self.hotfix}'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return str(self.major + '.' + self.minor + '.' + self.hotfix)
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"tags":
|
|
||||||
[{
|
|
||||||
"b3d_vs_major": 5.1,
|
|
||||||
"b3d_vs_minor": 2
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
- major: 5.1
|
|
||||||
minor: 2
|
|
||||||
@@ -1,27 +1,10 @@
|
|||||||
import os
|
import os
|
||||||
import pathlib
|
|
||||||
import json
|
from blender.version import BlenderVersion
|
||||||
import docker
|
from blender.docker import BlenderDocker
|
||||||
import sys
|
|
||||||
|
|
||||||
# TODO Update readme file badge with blender version
|
# TODO Update readme file badge with blender version
|
||||||
# TODO add a check if the image build are stored in the docker register
|
# TODO add a check if the image build are stored in the docker register
|
||||||
|
|
||||||
|
|
||||||
def get_data_from_json() -> (str, str):
|
|
||||||
"""From the json file, get blender version (major and minor), and return this information."""
|
|
||||||
file = pathlib.Path(os.getcwd(), 'build.json')
|
|
||||||
|
|
||||||
with open(file, 'r') as f:
|
|
||||||
data = json.load(f)
|
|
||||||
f.close()
|
|
||||||
|
|
||||||
version_values = data['tags'][0]
|
|
||||||
major, minor = version_values['b3d_vs_major'], version_values['b3d_vs_minor']
|
|
||||||
|
|
||||||
return major, minor
|
|
||||||
|
|
||||||
|
|
||||||
def build_docker(b3d_version: (str, str), latest: bool = False):
|
def build_docker(b3d_version: (str, str), latest: bool = False):
|
||||||
"""
|
"""
|
||||||
Generate docker image, request the blender version (major, minor) with the keyword b3d_version, and can be
|
Generate docker image, request the blender version (major, minor) with the keyword b3d_version, and can be
|
||||||
@@ -52,14 +35,11 @@ def build_docker(b3d_version: (str, str), latest: bool = False):
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
version = get_data_from_json()
|
version = BlenderVersion(input("Give the blender version (X.Y.Z): "))
|
||||||
print(f'Start -> Setup the package with blender version "{version[0]}.{version[1]}"')
|
|
||||||
for arg in sys.argv:
|
# build_docker(b3d_version=(f'{version.major}', f'{version.minor}.{version.hotfix}'),
|
||||||
if '--tag=' in arg:
|
# latest=False)
|
||||||
print(f'Build with the tag "{arg}".')
|
|
||||||
build_docker(b3d_version=version, latest=True)
|
print(f"Build a blender version {version}.")
|
||||||
break
|
docker = BlenderDocker(version)
|
||||||
else:
|
docker.build()
|
||||||
build_docker(b3d_version=version)
|
|
||||||
print(f'Start to build the docker file.')
|
|
||||||
pass
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
docker
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
docker==7.2.0
|
||||||
Reference in New Issue
Block a user