<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.luxcorerender.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Howetuft</id>
	<title>LuxCoreRender Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.luxcorerender.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Howetuft"/>
	<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/Special:Contributions/Howetuft"/>
	<updated>2026-04-23T00:23:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=LuxCoreRender_Wiki&amp;diff=2673</id>
		<title>LuxCoreRender Wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=LuxCoreRender_Wiki&amp;diff=2673"/>
		<updated>2026-04-22T19:04:24Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Users ==&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
* [[ BlendLuxCore_Installation | BlendLuxCore Installation]]&lt;br /&gt;
* [[ BlendLuxCore_FAQ | BlendLuxCore FAQ]]&lt;br /&gt;
* [[ LuxCoreRender_Tutorials | Tutorials ]]&lt;br /&gt;
* [[ LuxCoreRender_User%27s_Manual | LuxCoreRender User&#039;s Manual]]&lt;br /&gt;
* [[ :Category:BlendLuxCore | Blender Addon User&#039;s Manual ]]&lt;br /&gt;
* [[ PyLuxCoreTools | Command Line Tools ]]&lt;br /&gt;
* [[ LuxMark | LuxMark Benchmark]]&lt;br /&gt;
&lt;br /&gt;
=== Useful links ===&lt;br /&gt;
&lt;br /&gt;
* [https://luxcorerender.org/ &#039;&#039;LuxCoreRender Home Page&#039;&#039;]&lt;br /&gt;
* [https://forums.luxcorerender.org/ &#039;&#039;LuxCoreRender Forums&#039;&#039;]&lt;br /&gt;
* [[ External_Resources | External Resources ]]&lt;br /&gt;
* [[ Previous_Version | Previous Version (LuxRender) ]]&lt;br /&gt;
&lt;br /&gt;
== Developers &amp;amp; Admins ==&lt;br /&gt;
&lt;br /&gt;
=== LuxCore and BlendLuxCore Documentation ===&lt;br /&gt;
&lt;br /&gt;
==== Building &amp;amp; Debugging ====&lt;br /&gt;
* [[ Building_LuxCoreRender | Building LuxCoreRender ]]&lt;br /&gt;
* [[ Developing and debugging BlendLuxCore ]]&lt;br /&gt;
* [[ Building LuxCoreRender - FAQ | FAQ - Building &amp;amp; Debugging ]]&lt;br /&gt;
* [[ C++ Coding Guidelines ]]&lt;br /&gt;
&lt;br /&gt;
==== Deploying ====&lt;br /&gt;
* [[ Deploying LuxCoreRender | Releasing and Deploying LuxCoreRender ]]&lt;br /&gt;
* [[ LuxCoreRender_Release_Notes | LuxCoreRender Release Notes ]]&lt;br /&gt;
&lt;br /&gt;
==== Maintaining ====&lt;br /&gt;
* [[ Regular Maintenance Tasks ]]&lt;br /&gt;
&lt;br /&gt;
==== Interfacing ====&lt;br /&gt;
* [[ LuxCore_API | LuxCore API ]]&lt;br /&gt;
* [[ LuxCore_API_Reference_Manual | LuxCore API Reference Manual]]&lt;br /&gt;
* [[ LuxCore_SDL_Reference_Manual | LuxCore SDL Reference Manual ]]&lt;br /&gt;
&lt;br /&gt;
==== Legacy ====&lt;br /&gt;
* [[ Compiling_LuxCore | Building LuxCoreRender (legacy) ]]&lt;br /&gt;
&lt;br /&gt;
=== MaxToLux Documentation ===&lt;br /&gt;
&lt;br /&gt;
* [[ MaxToLux_Plugin_Release_Notes | MaxToLux Plugin Release Notes]]&lt;br /&gt;
* [[ MaxToLux_Plugin_Reference_Manual | MaxToLux Plugin Reference Manual]]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[ Writing_an_Imagepipeline_Plugin | How to Write an Imagepipeline Plugin ]]&lt;br /&gt;
* [[ Implementing_a_Texture | How to Implement a Texture ]]&lt;br /&gt;
&lt;br /&gt;
=== Information for Wiki Editors ===&lt;br /&gt;
&lt;br /&gt;
We had to close the wiki registration because of too many spambots.&amp;lt;br&amp;gt;&lt;br /&gt;
If you want to contribute to the wiki, please request an account in our [https://forums.luxcorerender.org/viewforum.php?f=10 general discussion forum].&lt;br /&gt;
&lt;br /&gt;
Consult the [//meta.wikimedia.org/wiki/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=LuxCoreRender_Wiki&amp;diff=2672</id>
		<title>LuxCoreRender Wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=LuxCoreRender_Wiki&amp;diff=2672"/>
		<updated>2026-04-22T19:03:55Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Users ==&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
* [[ BlendLuxCore_Installation | BlendLuxCore Installation]]&lt;br /&gt;
* [[ BlendLuxCore_FAQ | BlendLuxCore FAQ]]&lt;br /&gt;
* [[ LuxCoreRender_Tutorials | Tutorials ]]&lt;br /&gt;
* [[ LuxCoreRender_User%27s_Manual | LuxCoreRender User&#039;s Manual]]&lt;br /&gt;
* [[ :Category:BlendLuxCore | Blender Addon User&#039;s Manual ]]&lt;br /&gt;
* [[ PyLuxCoreTools | Command Line Tools ]]&lt;br /&gt;
* [[ LuxMark | LuxMark Benchmark]]&lt;br /&gt;
&lt;br /&gt;
=== Useful links ===&lt;br /&gt;
&lt;br /&gt;
* [https://luxcorerender.org/ &#039;&#039;LuxCoreRender Home Page&#039;&#039;]&lt;br /&gt;
* [https://forums.luxcorerender.org/ &#039;&#039;LuxCoreRender Forums&#039;&#039;]&lt;br /&gt;
* [[ External_Resources | External Resources ]]&lt;br /&gt;
* [[ Previous_Version | Previous Version (LuxRender) ]]&lt;br /&gt;
&lt;br /&gt;
== Developers &amp;amp; Admins ==&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
==== Building &amp;amp; Debugging ====&lt;br /&gt;
* [[ Building_LuxCoreRender | Building LuxCoreRender ]]&lt;br /&gt;
* [[ Developing and debugging BlendLuxCore ]]&lt;br /&gt;
* [[ Building LuxCoreRender - FAQ | FAQ - Building &amp;amp; Debugging ]]&lt;br /&gt;
* [[ C++ Coding Guidelines ]]&lt;br /&gt;
&lt;br /&gt;
==== Deploying ====&lt;br /&gt;
* [[ Deploying LuxCoreRender | Releasing and Deploying LuxCoreRender ]]&lt;br /&gt;
* [[ LuxCoreRender_Release_Notes | LuxCoreRender Release Notes ]]&lt;br /&gt;
&lt;br /&gt;
==== Maintaining ====&lt;br /&gt;
* [[ Regular Maintenance Tasks ]]&lt;br /&gt;
&lt;br /&gt;
==== Interfacing ====&lt;br /&gt;
* [[ LuxCore_API | LuxCore API ]]&lt;br /&gt;
* [[ LuxCore_API_Reference_Manual | LuxCore API Reference Manual]]&lt;br /&gt;
* [[ LuxCore_SDL_Reference_Manual | LuxCore SDL Reference Manual ]]&lt;br /&gt;
&lt;br /&gt;
==== Legacy ====&lt;br /&gt;
* [[ Compiling_LuxCore | Building LuxCoreRender (legacy) ]]&lt;br /&gt;
&lt;br /&gt;
=== MaxToLux Documentation ===&lt;br /&gt;
&lt;br /&gt;
* [[ MaxToLux_Plugin_Release_Notes | MaxToLux Plugin Release Notes]]&lt;br /&gt;
* [[ MaxToLux_Plugin_Reference_Manual | MaxToLux Plugin Reference Manual]]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[ Writing_an_Imagepipeline_Plugin | How to Write an Imagepipeline Plugin ]]&lt;br /&gt;
* [[ Implementing_a_Texture | How to Implement a Texture ]]&lt;br /&gt;
&lt;br /&gt;
=== Information for Wiki Editors ===&lt;br /&gt;
&lt;br /&gt;
We had to close the wiki registration because of too many spambots.&amp;lt;br&amp;gt;&lt;br /&gt;
If you want to contribute to the wiki, please request an account in our [https://forums.luxcorerender.org/viewforum.php?f=10 general discussion forum].&lt;br /&gt;
&lt;br /&gt;
Consult the [//meta.wikimedia.org/wiki/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=LuxCoreRender_Wiki&amp;diff=2671</id>
		<title>LuxCoreRender Wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=LuxCoreRender_Wiki&amp;diff=2671"/>
		<updated>2026-04-22T19:03:27Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Users ==&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
* [[ BlendLuxCore_Installation | BlendLuxCore Installation]]&lt;br /&gt;
* [[ BlendLuxCore_FAQ | BlendLuxCore FAQ]]&lt;br /&gt;
* [[ LuxCoreRender_Tutorials | Tutorials ]]&lt;br /&gt;
* [[ LuxCoreRender_User%27s_Manual | LuxCoreRender User&#039;s Manual]]&lt;br /&gt;
* [[ :Category:BlendLuxCore | Blender Addon User&#039;s Manual ]]&lt;br /&gt;
* [[ PyLuxCoreTools | Command Line Tools ]]&lt;br /&gt;
* [[ LuxMark | LuxMark Benchmark]]&lt;br /&gt;
&lt;br /&gt;
=== Useful links ===&lt;br /&gt;
&lt;br /&gt;
* [https://luxcorerender.org/ &#039;&#039;LuxCoreRender Home Page&#039;&#039;]&lt;br /&gt;
* [https://forums.luxcorerender.org/ &#039;&#039;LuxCoreRender Forums&#039;&#039;]&lt;br /&gt;
* [[ External_Resources | External Resources ]]&lt;br /&gt;
* [[ Previous_Version | Previous Version (LuxRender) ]]&lt;br /&gt;
&lt;br /&gt;
== Developers &amp;amp; Admins ==&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
==== Building &amp;amp; Debugging ====&lt;br /&gt;
* [[ Building_LuxCoreRender | Building LuxCoreRender ]]&lt;br /&gt;
* [[ Developing and debugging BlendLuxCore ]]&lt;br /&gt;
* [[ Building LuxCoreRender - FAQ | FAQ - Building &amp;amp; Debugging ]]&lt;br /&gt;
* [[ C++ Coding Guidelines ]]&lt;br /&gt;
&lt;br /&gt;
==== Deploying ====&lt;br /&gt;
* [[ Deploying LuxCoreRender | Releasing and Deploying LuxCoreRender ]]&lt;br /&gt;
* [[ LuxCoreRender_Release_Notes | LuxCoreRender Release Notes ]]&lt;br /&gt;
&lt;br /&gt;
==== Maintaining ====&lt;br /&gt;
* [[ Regular Maintenance Tasks ]]&lt;br /&gt;
&lt;br /&gt;
==== Interfacing ====&lt;br /&gt;
* [[ LuxCore_API | LuxCore API ]]&lt;br /&gt;
* [[ LuxCore_API_Reference_Manual | LuxCore API Reference Manual]]&lt;br /&gt;
* [[ LuxCore_SDL_Reference_Manual | LuxCore SDL Reference Manual ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Legacy ====&lt;br /&gt;
* [[ Compiling_LuxCore | Building LuxCoreRender (legacy) ]]&lt;br /&gt;
&lt;br /&gt;
=== MaxToLux Documentation ===&lt;br /&gt;
&lt;br /&gt;
* [[ MaxToLux_Plugin_Release_Notes | MaxToLux Plugin Release Notes]]&lt;br /&gt;
* [[ MaxToLux_Plugin_Reference_Manual | MaxToLux Plugin Reference Manual]]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[ Writing_an_Imagepipeline_Plugin | How to Write an Imagepipeline Plugin ]]&lt;br /&gt;
* [[ Implementing_a_Texture | How to Implement a Texture ]]&lt;br /&gt;
&lt;br /&gt;
=== Information for Wiki Editors ===&lt;br /&gt;
&lt;br /&gt;
We had to close the wiki registration because of too many spambots.&amp;lt;br&amp;gt;&lt;br /&gt;
If you want to contribute to the wiki, please request an account in our [https://forums.luxcorerender.org/viewforum.php?f=10 general discussion forum].&lt;br /&gt;
&lt;br /&gt;
Consult the [//meta.wikimedia.org/wiki/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=LuxCoreRender_Wiki&amp;diff=2670</id>
		<title>LuxCoreRender Wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=LuxCoreRender_Wiki&amp;diff=2670"/>
		<updated>2026-04-22T18:59:21Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* LuxCore */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Users ==&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
* [[ BlendLuxCore_Installation | BlendLuxCore Installation]]&lt;br /&gt;
* [[ BlendLuxCore_FAQ | BlendLuxCore FAQ]]&lt;br /&gt;
* [[ LuxCoreRender_Tutorials | Tutorials ]]&lt;br /&gt;
* [[ LuxCoreRender_User%27s_Manual | LuxCoreRender User&#039;s Manual]]&lt;br /&gt;
* [[ :Category:BlendLuxCore | Blender Addon User&#039;s Manual ]]&lt;br /&gt;
* [[ PyLuxCoreTools | Command Line Tools ]]&lt;br /&gt;
* [[ LuxMark | LuxMark Benchmark]]&lt;br /&gt;
&lt;br /&gt;
=== Useful links ===&lt;br /&gt;
&lt;br /&gt;
* [https://luxcorerender.org/ &#039;&#039;LuxCoreRender Home Page&#039;&#039;]&lt;br /&gt;
* [https://forums.luxcorerender.org/ &#039;&#039;LuxCoreRender Forums&#039;&#039;]&lt;br /&gt;
* [[ External_Resources | External Resources ]]&lt;br /&gt;
* [[ Previous_Version | Previous Version (LuxRender) ]]&lt;br /&gt;
&lt;br /&gt;
== Developers &amp;amp; Admins ==&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
==== pyLuxCore ====&lt;br /&gt;
* [[ Building_LuxCoreRender | Building pyLuxCore ]]&lt;br /&gt;
&lt;br /&gt;
* [[ C++ Coding Guidelines ]]&lt;br /&gt;
* [[ Regular Maintenance Tasks ]]&lt;br /&gt;
&lt;br /&gt;
==== BlendLuxCore ====&lt;br /&gt;
* [[ Developing and debugging BlendLuxCore ]]&lt;br /&gt;
&lt;br /&gt;
==== Common ====&lt;br /&gt;
* [[ Deploying LuxCoreRender | Releasing and Deploying LuxCoreRender ]]&lt;br /&gt;
* [[ LuxCoreRender_Release_Notes | LuxCoreRender Release Notes ]]&lt;br /&gt;
* [[ Building LuxCoreRender - FAQ | FAQ - Building &amp;amp; Debugging ]]&lt;br /&gt;
* [[ LuxCore_API | LuxCore API ]]&lt;br /&gt;
* [[ LuxCore_API_Reference_Manual | LuxCore API Reference Manual]]&lt;br /&gt;
* [[ LuxCore_SDL_Reference_Manual | LuxCore SDL Reference Manual ]]&lt;br /&gt;
* [[ Compiling_LuxCore | Building LuxCoreRender (legacy) ]]&lt;br /&gt;
&lt;br /&gt;
=== MaxToLux Documentation ===&lt;br /&gt;
&lt;br /&gt;
* [[ MaxToLux_Plugin_Release_Notes | MaxToLux Plugin Release Notes]]&lt;br /&gt;
* [[ MaxToLux_Plugin_Reference_Manual | MaxToLux Plugin Reference Manual]]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[ Writing_an_Imagepipeline_Plugin | How to Write an Imagepipeline Plugin ]]&lt;br /&gt;
* [[ Implementing_a_Texture | How to Implement a Texture ]]&lt;br /&gt;
&lt;br /&gt;
=== Information for Wiki Editors ===&lt;br /&gt;
&lt;br /&gt;
We had to close the wiki registration because of too many spambots.&amp;lt;br&amp;gt;&lt;br /&gt;
If you want to contribute to the wiki, please request an account in our [https://forums.luxcorerender.org/viewforum.php?f=10 general discussion forum].&lt;br /&gt;
&lt;br /&gt;
Consult the [//meta.wikimedia.org/wiki/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=LuxCoreRender_Wiki&amp;diff=2669</id>
		<title>LuxCoreRender Wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=LuxCoreRender_Wiki&amp;diff=2669"/>
		<updated>2026-04-22T18:59:02Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Users ==&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
* [[ BlendLuxCore_Installation | BlendLuxCore Installation]]&lt;br /&gt;
* [[ BlendLuxCore_FAQ | BlendLuxCore FAQ]]&lt;br /&gt;
* [[ LuxCoreRender_Tutorials | Tutorials ]]&lt;br /&gt;
* [[ LuxCoreRender_User%27s_Manual | LuxCoreRender User&#039;s Manual]]&lt;br /&gt;
* [[ :Category:BlendLuxCore | Blender Addon User&#039;s Manual ]]&lt;br /&gt;
* [[ PyLuxCoreTools | Command Line Tools ]]&lt;br /&gt;
* [[ LuxMark | LuxMark Benchmark]]&lt;br /&gt;
&lt;br /&gt;
=== Useful links ===&lt;br /&gt;
&lt;br /&gt;
* [https://luxcorerender.org/ &#039;&#039;LuxCoreRender Home Page&#039;&#039;]&lt;br /&gt;
* [https://forums.luxcorerender.org/ &#039;&#039;LuxCoreRender Forums&#039;&#039;]&lt;br /&gt;
* [[ External_Resources | External Resources ]]&lt;br /&gt;
* [[ Previous_Version | Previous Version (LuxRender) ]]&lt;br /&gt;
&lt;br /&gt;
== Developers &amp;amp; Admins ==&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
==== LuxCore ====&lt;br /&gt;
* [[ Building_LuxCoreRender | Building LuxCore ]]&lt;br /&gt;
&lt;br /&gt;
* [[ C++ Coding Guidelines ]]&lt;br /&gt;
* [[ Regular Maintenance Tasks ]]&lt;br /&gt;
&lt;br /&gt;
==== BlendLuxCore ====&lt;br /&gt;
* [[ Developing and debugging BlendLuxCore ]]&lt;br /&gt;
&lt;br /&gt;
==== Common ====&lt;br /&gt;
* [[ Deploying LuxCoreRender | Releasing and Deploying LuxCoreRender ]]&lt;br /&gt;
* [[ LuxCoreRender_Release_Notes | LuxCoreRender Release Notes ]]&lt;br /&gt;
* [[ Building LuxCoreRender - FAQ | FAQ - Building &amp;amp; Debugging ]]&lt;br /&gt;
* [[ LuxCore_API | LuxCore API ]]&lt;br /&gt;
* [[ LuxCore_API_Reference_Manual | LuxCore API Reference Manual]]&lt;br /&gt;
* [[ LuxCore_SDL_Reference_Manual | LuxCore SDL Reference Manual ]]&lt;br /&gt;
* [[ Compiling_LuxCore | Building LuxCoreRender (legacy) ]]&lt;br /&gt;
&lt;br /&gt;
=== MaxToLux Documentation ===&lt;br /&gt;
&lt;br /&gt;
* [[ MaxToLux_Plugin_Release_Notes | MaxToLux Plugin Release Notes]]&lt;br /&gt;
* [[ MaxToLux_Plugin_Reference_Manual | MaxToLux Plugin Reference Manual]]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[ Writing_an_Imagepipeline_Plugin | How to Write an Imagepipeline Plugin ]]&lt;br /&gt;
* [[ Implementing_a_Texture | How to Implement a Texture ]]&lt;br /&gt;
&lt;br /&gt;
=== Information for Wiki Editors ===&lt;br /&gt;
&lt;br /&gt;
We had to close the wiki registration because of too many spambots.&amp;lt;br&amp;gt;&lt;br /&gt;
If you want to contribute to the wiki, please request an account in our [https://forums.luxcorerender.org/viewforum.php?f=10 general discussion forum].&lt;br /&gt;
&lt;br /&gt;
Consult the [//meta.wikimedia.org/wiki/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=LuxCoreRender_Wiki&amp;diff=2668</id>
		<title>LuxCoreRender Wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=LuxCoreRender_Wiki&amp;diff=2668"/>
		<updated>2026-04-22T18:57:29Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Users ==&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
* [[ BlendLuxCore_Installation | BlendLuxCore Installation]]&lt;br /&gt;
* [[ BlendLuxCore_FAQ | BlendLuxCore FAQ]]&lt;br /&gt;
* [[ LuxCoreRender_Tutorials | Tutorials ]]&lt;br /&gt;
* [[ LuxCoreRender_User%27s_Manual | LuxCoreRender User&#039;s Manual]]&lt;br /&gt;
* [[ :Category:BlendLuxCore | Blender Addon User&#039;s Manual ]]&lt;br /&gt;
* [[ PyLuxCoreTools | Command Line Tools ]]&lt;br /&gt;
* [[ LuxMark | LuxMark Benchmark]]&lt;br /&gt;
&lt;br /&gt;
=== Useful links ===&lt;br /&gt;
&lt;br /&gt;
* [https://luxcorerender.org/ &#039;&#039;LuxCoreRender Home Page&#039;&#039;]&lt;br /&gt;
* [https://forums.luxcorerender.org/ &#039;&#039;LuxCoreRender Forums&#039;&#039;]&lt;br /&gt;
* [[ External_Resources | External Resources ]]&lt;br /&gt;
* [[ Previous_Version | Previous Version (LuxRender) ]]&lt;br /&gt;
&lt;br /&gt;
== Developers &amp;amp; Admins ==&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
==== LuxCore ====&lt;br /&gt;
* [[ Building_LuxCoreRender | Building LuxCoreRender ]]&lt;br /&gt;
* [[ Deploying LuxCoreRender | Releasing and Deploying LuxCoreRender ]]&lt;br /&gt;
* [[ C++ Coding Guidelines ]]&lt;br /&gt;
* [[ Regular Maintenance Tasks ]]&lt;br /&gt;
&lt;br /&gt;
==== BlendLuxCore ====&lt;br /&gt;
* [[ Developing and debugging BlendLuxCore ]]&lt;br /&gt;
&lt;br /&gt;
==== Common ====&lt;br /&gt;
* [[ LuxCoreRender_Release_Notes | LuxCoreRender Release Notes ]]&lt;br /&gt;
* [[ Building LuxCoreRender - FAQ | FAQ - Building &amp;amp; Debugging ]]&lt;br /&gt;
* [[ LuxCore_API | LuxCore API ]]&lt;br /&gt;
* [[ LuxCore_API_Reference_Manual | LuxCore API Reference Manual]]&lt;br /&gt;
* [[ LuxCore_SDL_Reference_Manual | LuxCore SDL Reference Manual ]]&lt;br /&gt;
* [[ Compiling_LuxCore | Building LuxCoreRender (legacy) ]]&lt;br /&gt;
&lt;br /&gt;
=== MaxToLux Documentation ===&lt;br /&gt;
&lt;br /&gt;
* [[ MaxToLux_Plugin_Release_Notes | MaxToLux Plugin Release Notes]]&lt;br /&gt;
* [[ MaxToLux_Plugin_Reference_Manual | MaxToLux Plugin Reference Manual]]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[ Writing_an_Imagepipeline_Plugin | How to Write an Imagepipeline Plugin ]]&lt;br /&gt;
* [[ Implementing_a_Texture | How to Implement a Texture ]]&lt;br /&gt;
&lt;br /&gt;
=== Information for Wiki Editors ===&lt;br /&gt;
&lt;br /&gt;
We had to close the wiki registration because of too many spambots.&amp;lt;br&amp;gt;&lt;br /&gt;
If you want to contribute to the wiki, please request an account in our [https://forums.luxcorerender.org/viewforum.php?f=10 general discussion forum].&lt;br /&gt;
&lt;br /&gt;
Consult the [//meta.wikimedia.org/wiki/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=LuxCoreRender_Wiki&amp;diff=2667</id>
		<title>LuxCoreRender Wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=LuxCoreRender_Wiki&amp;diff=2667"/>
		<updated>2026-04-22T18:55:50Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Users ==&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
* [[ BlendLuxCore_Installation | BlendLuxCore Installation]]&lt;br /&gt;
* [[ BlendLuxCore_FAQ | BlendLuxCore FAQ]]&lt;br /&gt;
* [[ LuxCoreRender_Tutorials | Tutorials ]]&lt;br /&gt;
* [[ LuxCoreRender_User%27s_Manual | LuxCoreRender User&#039;s Manual]]&lt;br /&gt;
* [[ :Category:BlendLuxCore | Blender Addon User&#039;s Manual ]]&lt;br /&gt;
* [[ PyLuxCoreTools | Command Line Tools ]]&lt;br /&gt;
* [[ LuxMark | LuxMark Benchmark]]&lt;br /&gt;
&lt;br /&gt;
=== Useful links ===&lt;br /&gt;
&lt;br /&gt;
* [https://luxcorerender.org/ &#039;&#039;LuxCoreRender Home Page&#039;&#039;]&lt;br /&gt;
* [https://forums.luxcorerender.org/ &#039;&#039;LuxCoreRender Forums&#039;&#039;]&lt;br /&gt;
* [[ External_Resources | External Resources ]]&lt;br /&gt;
* [[ Previous_Version | Previous Version (LuxRender) ]]&lt;br /&gt;
&lt;br /&gt;
== Developers &amp;amp; Admins ==&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
==== LuxCore ====&lt;br /&gt;
* [[ Building_LuxCoreRender | Building LuxCoreRender ]]&lt;br /&gt;
* [[ Deploying LuxCoreRender | Releasing and Deploying LuxCoreRender ]]&lt;br /&gt;
* [[ Building LuxCoreRender - FAQ | FAQ - Building &amp;amp; Debugging LuxCoreRender ]]&lt;br /&gt;
* [[ C++ Coding Guidelines ]]&lt;br /&gt;
* [[ Regular Maintenance Tasks ]]&lt;br /&gt;
&lt;br /&gt;
==== BlendLuxCore ====&lt;br /&gt;
* [[ Developing and debugging BlendLuxCore ]]&lt;br /&gt;
&lt;br /&gt;
==== Common ====&lt;br /&gt;
* [[ LuxCoreRender_Release_Notes | LuxCoreRender Release Notes ]]&lt;br /&gt;
* [[ LuxCore_API | LuxCore API ]]&lt;br /&gt;
* [[ LuxCore_API_Reference_Manual | LuxCore API Reference Manual]]&lt;br /&gt;
* [[ LuxCore_SDL_Reference_Manual | LuxCore SDL Reference Manual ]]&lt;br /&gt;
* [[ Compiling_LuxCore | Building LuxCoreRender (legacy) ]]&lt;br /&gt;
&lt;br /&gt;
=== MaxToLux Documentation ===&lt;br /&gt;
&lt;br /&gt;
* [[ MaxToLux_Plugin_Release_Notes | MaxToLux Plugin Release Notes]]&lt;br /&gt;
* [[ MaxToLux_Plugin_Reference_Manual | MaxToLux Plugin Reference Manual]]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[ Writing_an_Imagepipeline_Plugin | How to Write an Imagepipeline Plugin ]]&lt;br /&gt;
* [[ Implementing_a_Texture | How to Implement a Texture ]]&lt;br /&gt;
&lt;br /&gt;
=== Information for Wiki Editors ===&lt;br /&gt;
&lt;br /&gt;
We had to close the wiki registration because of too many spambots.&amp;lt;br&amp;gt;&lt;br /&gt;
If you want to contribute to the wiki, please request an account in our [https://forums.luxcorerender.org/viewforum.php?f=10 general discussion forum].&lt;br /&gt;
&lt;br /&gt;
Consult the [//meta.wikimedia.org/wiki/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=LuxCoreRender_Wiki&amp;diff=2666</id>
		<title>LuxCoreRender Wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=LuxCoreRender_Wiki&amp;diff=2666"/>
		<updated>2026-04-22T18:54:30Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Users ==&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
* [[ BlendLuxCore_Installation | BlendLuxCore Installation]]&lt;br /&gt;
* [[ BlendLuxCore_FAQ | BlendLuxCore FAQ]]&lt;br /&gt;
* [[ LuxCoreRender_Tutorials | Tutorials ]]&lt;br /&gt;
* [[ LuxCoreRender_User%27s_Manual | LuxCoreRender User&#039;s Manual]]&lt;br /&gt;
* [[ :Category:BlendLuxCore | Blender Addon User&#039;s Manual ]]&lt;br /&gt;
* [[ PyLuxCoreTools | Command Line Tools ]]&lt;br /&gt;
* [[ LuxMark | LuxMark Benchmark]]&lt;br /&gt;
&lt;br /&gt;
=== Useful links ===&lt;br /&gt;
&lt;br /&gt;
* [https://luxcorerender.org/ &#039;&#039;LuxCoreRender Home Page&#039;&#039;]&lt;br /&gt;
* [https://forums.luxcorerender.org/ &#039;&#039;LuxCoreRender Forums&#039;&#039;]&lt;br /&gt;
* [[ External_Resources | External Resources ]]&lt;br /&gt;
* [[ Previous_Version | Previous Version (LuxRender) ]]&lt;br /&gt;
&lt;br /&gt;
== Developers &amp;amp; Admins ==&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
==== LuxCore ====&lt;br /&gt;
* [[ Building_LuxCoreRender | Building LuxCoreRender ]]&lt;br /&gt;
* [[ Deploying LuxCoreRender | Releasing and Deploying LuxCoreRender ]]&lt;br /&gt;
* [[ Building LuxCoreRender - FAQ | FAQ - Building &amp;amp; Debugging LuxCoreRender ]]&lt;br /&gt;
* [[ C++ Coding Guidelines ]]&lt;br /&gt;
* [[ Regular Maintenance Tasks ]]&lt;br /&gt;
&lt;br /&gt;
==== BlendLuxCore ====&lt;br /&gt;
* [[ Developing and debugging BlendLuxCore ]]&lt;br /&gt;
* [[ Compiling_LuxCore | Building LuxCoreRender (legacy) ]]&lt;br /&gt;
* [[ LuxCoreRender_Release_Notes | LuxCoreRender Release Notes ]]&lt;br /&gt;
* [[ LuxCore_API | LuxCore API ]]&lt;br /&gt;
* [[ LuxCore_API_Reference_Manual | LuxCore API Reference Manual]]&lt;br /&gt;
* [[ LuxCore_SDL_Reference_Manual | LuxCore SDL Reference Manual ]]&lt;br /&gt;
&lt;br /&gt;
=== MaxToLux Documentation ===&lt;br /&gt;
&lt;br /&gt;
* [[ MaxToLux_Plugin_Release_Notes | MaxToLux Plugin Release Notes]]&lt;br /&gt;
* [[ MaxToLux_Plugin_Reference_Manual | MaxToLux Plugin Reference Manual]]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[ Writing_an_Imagepipeline_Plugin | How to Write an Imagepipeline Plugin ]]&lt;br /&gt;
* [[ Implementing_a_Texture | How to Implement a Texture ]]&lt;br /&gt;
&lt;br /&gt;
=== Information for Wiki Editors ===&lt;br /&gt;
&lt;br /&gt;
We had to close the wiki registration because of too many spambots.&amp;lt;br&amp;gt;&lt;br /&gt;
If you want to contribute to the wiki, please request an account in our [https://forums.luxcorerender.org/viewforum.php?f=10 general discussion forum].&lt;br /&gt;
&lt;br /&gt;
Consult the [//meta.wikimedia.org/wiki/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2665</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2665"/>
		<updated>2026-04-20T05:13:15Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Samples Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, please make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components meet those requirements before any Release/Deploy task is engaged.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
There is no reason why these 2 version numbers should be the same.&lt;br /&gt;
&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each): the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
Nota: this check is &amp;lt;i&amp;gt;critical&amp;lt;/i&amp;gt; and should be done with care. If the upload to PyPI is interrupted halfway, for instance by lack of space, the version number will still become no more available.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, and the LuxCore should not have been used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you are ready to start the core process.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for LuxCore.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
At this stage, the wheels are released, but we still have to deploy them through PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
This is a test step, to check everything is fine before uploadig to real PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts. This will be done by clearing &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.Once that requirement is met:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same as the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2664</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2664"/>
		<updated>2026-04-20T05:12:10Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Wheels Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, please make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components meet those requirements before any Release/Deploy task is engaged.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
There is no reason why these 2 version numbers should be the same.&lt;br /&gt;
&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each): the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
Nota: this check is &amp;lt;i&amp;gt;critical&amp;lt;/i&amp;gt; and should be done with care. If the upload to PyPI is interrupted halfway, for instance by lack of space, the version number will still become no more available.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, and the LuxCore should not have been used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you are ready to start the core process.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for LuxCore.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
At this stage, the wheels are released, but we still have to deploy them through PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
This is a test step, to check everything is fine before uploadig to real PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts. This will be done by clearing &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.Once that requirement is met:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same as the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2663</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2663"/>
		<updated>2026-04-20T05:11:26Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Wheels Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, please make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components meet those requirements before any Release/Deploy task is engaged.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
There is no reason why these 2 version numbers should be the same.&lt;br /&gt;
&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each): the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
Nota: this check is &amp;lt;i&amp;gt;critical&amp;lt;/i&amp;gt; and should be done with care. If the upload to PyPI is interrupted halfway, for instance by lack of space, the version number will still become no more available.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, and the LuxCore should not have been used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you are ready to start the core process.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for LuxCore.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
At this stage, the wheels are released, but we still have to deploy them through PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
This is a test step, to check everything is fine before uploadig to real PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts. This will be done by clearing &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.Once that requirement is met:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same as the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2662</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2662"/>
		<updated>2026-04-20T05:11:05Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Wheels Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, please make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components meet those requirements before any Release/Deploy task is engaged.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
There is no reason why these 2 version numbers should be the same.&lt;br /&gt;
&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each): the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
Nota: this check is &amp;lt;i&amp;gt;critical&amp;lt;/i&amp;gt; and should be done with care. If the upload to PyPI is interrupted halfway, for instance by lack of space, the version number will still become no more available.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, and the LuxCore should not have been used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you are ready to start the core process.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for LuxCore.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
At this stage, the wheels are released, but we still have to deploy them through PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
This is a test step, to check everything is fine before uploadig to real PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts. This will be done by clearing &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.Once that requirement is met:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same as the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2661</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2661"/>
		<updated>2026-04-20T05:10:38Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Pre-Flight Review */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, please make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components meet those requirements before any Release/Deploy task is engaged.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
There is no reason why these 2 version numbers should be the same.&lt;br /&gt;
&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each): the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
Nota: this check is &amp;lt;i&amp;gt;critical&amp;lt;/i&amp;gt; and should be done with care. If the upload to PyPI is interrupted halfway, for instance by lack of space, the version number will still become no more available.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, and the LuxCore should not have been used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you are ready to start the core process.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for wheels.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
At this stage, the wheels are released, but we still have to deploy them through PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
This is a test step, to check everything is fine before uploadig to real PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts. This will be done by clearing &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.Once that requirement is met:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same as the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2660</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2660"/>
		<updated>2026-04-20T05:09:12Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Sufficient space on PyPI and PyPI-test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, please make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components meet those requirements before any Release/Deploy task is engaged.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
There is no reason why these 2 version numbers should be the same.&lt;br /&gt;
&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each): the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
Nota: this check is &amp;lt;i&amp;gt;critical&amp;lt;/i&amp;gt; and should be done with care. If the upload to PyPI is interrupted halfway, for instance by lack of space, the version number will still become no more available.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you are ready to start the core process.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for wheels.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
At this stage, the wheels are released, but we still have to deploy them through PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
This is a test step, to check everything is fine before uploadig to real PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts. This will be done by clearing &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.Once that requirement is met:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same as the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2659</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2659"/>
		<updated>2026-04-19T18:48:18Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* BlendLuxCore Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, please make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components meet those requirements before any Release/Deploy task is engaged.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
There is no reason why these 2 version numbers should be the same.&lt;br /&gt;
&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each): the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you are ready to start the core process.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for wheels.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
At this stage, the wheels are released, but we still have to deploy them through PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
This is a test step, to check everything is fine before uploadig to real PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts. This will be done by clearing &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.Once that requirement is met:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same as the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2658</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2658"/>
		<updated>2026-04-19T18:47:53Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* BlendLuxCore Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, please make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components meet those requirements before any Release/Deploy task is engaged.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
There is no reason why these 2 version numbers should be the same.&lt;br /&gt;
&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each): the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you are ready to start the core process.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for wheels.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
At this stage, the wheels are released, but we still have to deploy them through PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
This is a test step, to check everything is fine before uploadig to real PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts. This will be done by clearing &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.Once that requirement is met:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2657</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2657"/>
		<updated>2026-04-19T18:46:49Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Samples Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, please make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components meet those requirements before any Release/Deploy task is engaged.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
There is no reason why these 2 version numbers should be the same.&lt;br /&gt;
&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each): the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you are ready to start the core process.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for wheels.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
At this stage, the wheels are released, but we still have to deploy them through PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
This is a test step, to check everything is fine before uploadig to real PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts. This will be done by clearing &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2656</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2656"/>
		<updated>2026-04-19T18:45:43Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Wheels Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, please make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components meet those requirements before any Release/Deploy task is engaged.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
There is no reason why these 2 version numbers should be the same.&lt;br /&gt;
&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each): the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you are ready to start the core process.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for wheels.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
At this stage, the wheels are released, but we still have to deploy them through PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
This is a test step, to check everything is fine before uploadig to real PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2655</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2655"/>
		<updated>2026-04-19T18:44:50Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Wheels Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, please make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components meet those requirements before any Release/Deploy task is engaged.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
There is no reason why these 2 version numbers should be the same.&lt;br /&gt;
&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each): the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you are ready to start the core process.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for wheels.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
At this stage, the wheels are released, but we still have to deploy them through PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2654</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2654"/>
		<updated>2026-04-19T18:44:35Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Wheels Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, please make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components meet those requirements before any Release/Deploy task is engaged.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
There is no reason why these 2 version numbers should be the same.&lt;br /&gt;
&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each): the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you are ready to start the core process.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for wheels.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
At this stage, the wheels are released, but we still have to deploy them, through PyPI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2653</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2653"/>
		<updated>2026-04-19T18:43:38Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Wheels Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, please make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components meet those requirements before any Release/Deploy task is engaged.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
There is no reason why these 2 version numbers should be the same.&lt;br /&gt;
&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each): the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you are ready to start the core process.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for wheels.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2652</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2652"/>
		<updated>2026-04-19T18:42:52Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Pre-Flight Review */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, please make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components meet those requirements before any Release/Deploy task is engaged.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
There is no reason why these 2 version numbers should be the same.&lt;br /&gt;
&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each): the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you are ready to start the core process.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for wheels.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2651</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2651"/>
		<updated>2026-04-19T18:41:48Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Sufficient space on PyPI and PyPI-test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, please make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components meet those requirements before any Release/Deploy task is engaged.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
There is no reason why these 2 version numbers should be the same.&lt;br /&gt;
&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each): the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for wheels.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2650</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2650"/>
		<updated>2026-04-19T18:40:59Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Consistent Version Numbers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, please make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components meet those requirements before any Release/Deploy task is engaged.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
There is no reason why these 2 version numbers should be the same.&lt;br /&gt;
&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each), so the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for wheels.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2649</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2649"/>
		<updated>2026-04-19T18:39:30Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* LuxCore Buildability */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, please make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components meet those requirements before any Release/Deploy task is engaged.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each), so the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for wheels.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2648</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2648"/>
		<updated>2026-04-19T18:38:36Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Clean Branches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, please make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy activity.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each), so the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for wheels.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2647</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2647"/>
		<updated>2026-04-19T16:29:50Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Samples Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy activity.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each), so the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for wheels.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples in this context...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2646</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2646"/>
		<updated>2026-04-19T16:28:59Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Wheels Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy activity.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each), so the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for wheels.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set its status to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text. Save the release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples at this stage...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2645</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2645"/>
		<updated>2026-04-19T16:28:29Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Wheels Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy activity.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each), so the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the targeted version number for wheels.&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples at this stage...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2644</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2644"/>
		<updated>2026-04-19T16:28:01Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Sufficient space on PyPI and PyPI-test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy activity.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
At first glance, this could look quite comfortable, however we release 20 wheels each time (about 80-100MB each), so the space required for one release is about 1.5GB. As a consequence, the space sufficiency must be checked each time a version has to be deployed.&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples at this stage...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2643</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2643"/>
		<updated>2026-04-19T16:26:07Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Consistent Version Numbers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy activity.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
First, note you&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples at this stage...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2642</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2642"/>
		<updated>2026-04-19T16:25:05Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* LuxCore Buildability */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy activity.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples at this stage...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2641</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2641"/>
		<updated>2026-04-19T16:24:36Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* LuxCore Buildability */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The procedure requires that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt; by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy approach. This should be done by running the 3 actions above.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples at this stage...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2640</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2640"/>
		<updated>2026-04-19T16:23:51Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Clean Branches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The process required that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The component must by buildable by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy approach. This should be done by running the 3 actions above.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples at this stage...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2639</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2639"/>
		<updated>2026-04-19T16:23:36Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Clean Branches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The following procedure assumes the releases can be created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The process required that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The component must by buildable by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy approach. This should be done by running the 3 actions above.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples at this stage...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2638</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2638"/>
		<updated>2026-04-19T16:20:42Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Samples Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The following process assumes the releases are created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The process required that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The component must by buildable by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy approach. This should be done by running the 3 actions above.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples at this stage...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2637</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2637"/>
		<updated>2026-04-19T16:20:19Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Samples Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The following process assumes the releases are created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The process required that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The component must by buildable by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy approach. This should be done by running the 3 actions above.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing. No need for samples at this stage...&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2636</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2636"/>
		<updated>2026-04-19T16:19:51Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Samples Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The following process assumes the releases are created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The process required that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The component must by buildable by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy approach. This should be done by running the 3 actions above.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Nota #1: This step should be skipped for alpha releases, as the vast majority of alpha testers use Blender for testing)&lt;br /&gt;
&lt;br /&gt;
Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039; in the following action.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2635</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2635"/>
		<updated>2026-04-19T16:17:57Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Samples Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The following process assumes the releases are created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The process required that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The component must by buildable by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy approach. This should be done by running the 3 actions above.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
(this step may not be mandatory for alpha releases, as the vast majority of alpha testers use Blender for testing)&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
Nota: we assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear &#039;rebuild all&#039;.&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2634</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2634"/>
		<updated>2026-04-19T16:17:05Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Samples Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The following process assumes the releases are created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The process required that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The component must by buildable by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy approach. This should be done by running the 3 actions above.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
(this step may not be mandatory for alpha releases, as the vast majority of alpha testers use Blender for testing)&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;LuxCore Samples Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
   Rebuild all: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
(nota: we assume the wheels have just been released, so that it is possible to reuse their build artifacts and not to rebuild all).&lt;br /&gt;
&lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2633</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2633"/>
		<updated>2026-04-19T16:08:59Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* BlendLuxCore Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The following process assumes the releases are created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The process required that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The component must by buildable by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy approach. This should be done by running the 3 actions above.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the files on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2632</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2632"/>
		<updated>2026-04-19T16:08:36Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Annoucements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The following process assumes the releases are created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The process required that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The component must by buildable by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy approach. This should be done by running the 3 actions above.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the bundle on the website&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2631</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2631"/>
		<updated>2026-04-19T16:05:25Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* BlendLuxCore Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The following process assumes the releases are created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The process required that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The component must by buildable by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy approach. This should be done by running the 3 actions above.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a &amp;lt;i&amp;gt;draft release&amp;lt;/i&amp;gt; should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log and set release status to &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;latest release&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the bundle on the website&lt;br /&gt;
&lt;br /&gt;
== Annoucements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2630</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2630"/>
		<updated>2026-04-19T15:33:23Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* BlendLuxCore Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The following process assumes the releases are created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The process required that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The component must by buildable by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy approach. This should be done by running the 3 actions above.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
   Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
   Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this stage, a draft release should have been created.&lt;br /&gt;
&lt;br /&gt;
* Open the draft release, insert change log, set status to prerelease or latest release.&lt;br /&gt;
&lt;br /&gt;
* For latest releases, publish the bundle on the website&lt;br /&gt;
&lt;br /&gt;
== Annoucements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2629</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2629"/>
		<updated>2026-04-19T15:28:15Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* BlendLuxCore Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The following process assumes the releases are created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The process required that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The component must by buildable by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy approach. This should be done by running the 3 actions above.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed yet. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   * Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Annoucements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2628</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2628"/>
		<updated>2026-04-19T15:25:58Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Wheels Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The following process assumes the releases are created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The process required that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The component must by buildable by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy approach. This should be done by running the 3 actions above.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   * Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Annoucements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2627</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2627"/>
		<updated>2026-04-19T15:25:09Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Wheels Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The following process assumes the releases are created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The process required that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The component must by buildable by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy approach. This should be done by running the 3 actions above.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  * Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  * Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  * Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  * Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   * Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Annoucements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2626</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2626"/>
		<updated>2026-04-19T15:24:51Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* BlendLuxCore Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The following process assumes the releases are created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The process required that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The component must by buildable by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy approach. This should be done by running the 3 actions above.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  * Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  * Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  * Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  * Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  * Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
Important warning: BLC should &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; be released while related wheels have not been deployed. Indeed, &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt; version must be known before starting any release or deploy action of BLC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;luxloader/__init__.py&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;PYLUXCORE_VERSION&amp;lt;/code&amp;gt; to the version of related &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;. The version to use must be strictly the same the one that appears on PyPI. Please check syntax carefully, as PyPI may slightly modify version number when uploading.&lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;blender_manifest.toml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.&lt;br /&gt;
&lt;br /&gt;
* Commit your changes and push to BlendLuxCore repository, if needed.&lt;br /&gt;
&lt;br /&gt;
* Run Github action named &amp;lt;code&amp;gt;BlendLuxCore Create Release&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
   * Branch: &amp;lt;i&amp;gt;main&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Annoucements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2625</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2625"/>
		<updated>2026-04-19T15:02:30Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Procedure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The following process assumes the releases are created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The process required that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The component must by buildable by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy approach. This should be done by running the 3 actions above.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  * Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  * Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  * Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  * Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  * Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BlendLuxCore Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Annoucements ==&lt;br /&gt;
&amp;lt;To be completed by @codehd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
	<entry>
		<id>https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2624</id>
		<title>Deploying LuxCoreRender</title>
		<link rel="alternate" type="text/html" href="https://wiki.luxcorerender.org/index.php?title=Deploying_LuxCoreRender&amp;diff=2624"/>
		<updated>2026-04-19T15:00:58Z</updated>

		<summary type="html">&lt;p&gt;Howetuft: /* Wheels Release and Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Audience, Definitions and Scope =&lt;br /&gt;
&lt;br /&gt;
This document is intended for &amp;lt;i&amp;gt;LuxCoreRender administrators&amp;lt;/i&amp;gt; only.&lt;br /&gt;
&lt;br /&gt;
The process requires that the administrator running Release and Deploy be:&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.&lt;br /&gt;
* granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions&lt;br /&gt;
* skilled enough in Github administration and, especially, able to run Github actions&lt;br /&gt;
* and skilled enough in PyPI administration&lt;br /&gt;
Please check that you meet these criteria before reading further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this document:&lt;br /&gt;
* &amp;lt;i&amp;gt;Releasing&amp;lt;/i&amp;gt; refers to the process of finalizing a version of LuxCore, i.e. defining a state of LuxCore which can be made available to end-users.&lt;br /&gt;
* &amp;lt;i&amp;gt;Deployment&amp;lt;/i&amp;gt; refers to the process of making a new release of LuxCoreRender available to end-users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The scope of Deployment includes the following components:&lt;br /&gt;
* &amp;lt;b&amp;gt;Python Wheels&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;pyluxcore&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Samples&amp;lt;/b&amp;gt; (aka &amp;lt;code&amp;gt;luxcoreui&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;luxcoreconsole&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;BlendLuxCore&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note we deliberately exclude the dependencies (aka &amp;lt;code&amp;gt;LuxCoreDeps&amp;lt;/code&amp;gt;) from the deployment scope. Indeed:&lt;br /&gt;
* Dependencies are not intended for end-users, so deployment is not applicable.&lt;br /&gt;
* Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.&lt;br /&gt;
&lt;br /&gt;
= Prequisites =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Clean Branches ==&lt;br /&gt;
&lt;br /&gt;
The following process assumes the releases are created from the &amp;lt;i&amp;gt;default branches&amp;lt;/i&amp;gt; in each repository, namely (2026-04-19):&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; for LuxCore&lt;br /&gt;
* &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; for BlendLuxCore&lt;br /&gt;
Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.&lt;br /&gt;
&lt;br /&gt;
== LuxCore Buildability ==&lt;br /&gt;
&lt;br /&gt;
The process required that targeted LuxCore components be &amp;lt;i&amp;gt;buildable&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The component must by buildable by &amp;lt;i&amp;gt;Continuous Integration&amp;lt;/i&amp;gt;.&lt;br /&gt;
This can be checked by running the following Github Actions:&lt;br /&gt;
* Wheels: &amp;lt;code&amp;gt;LuxCore Python Wheel Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* Samples: &amp;lt;code&amp;gt;LuxCore Python Sample Builder&amp;lt;/code&amp;gt; (in LuxCore repository)&lt;br /&gt;
* BlendLuxCore: &amp;lt;code&amp;gt;BlendLuxCore Build Bundle&amp;lt;/code&amp;gt; (in BlendLuxCore)&lt;br /&gt;
&lt;br /&gt;
Please check the components fulfill those requirements before any Release/Deploy approach. This should be done by running the 3 actions above.&lt;br /&gt;
&lt;br /&gt;
== Change Log readiness ==&lt;br /&gt;
&lt;br /&gt;
At a certain point in the process, a change log will be expected: you should have prepared it beforehand. Note this can be done afterwards, however.&lt;br /&gt;
&lt;br /&gt;
== Consistent Version Numbers ==&lt;br /&gt;
You&#039;ll need 2 version numbers:&lt;br /&gt;
* One for LuxCore&lt;br /&gt;
* One for BlendLuxCore&lt;br /&gt;
These version numbers must enforce Semantic Versioning, as stated in [[Building_LuxCoreRender | Building LuxCoreRender]]&lt;br /&gt;
&lt;br /&gt;
Please note also that &amp;lt;b&amp;gt;the version numbers should not have been used in anyway in previous releases&amp;lt;/b&amp;gt;. It is particularly important for PyPI (and PyPI-test), that will reject any upload declaring a version that has already been in use before, event for a short time.&lt;br /&gt;
&lt;br /&gt;
== Sufficient space on PyPI and PyPI-test ==&lt;br /&gt;
&lt;br /&gt;
The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).&lt;br /&gt;
&lt;br /&gt;
This can look quite comfortable, however we must not forget we release 20 wheels each time (about 80-100MB each), so the space required for one release is 1.5GB!&lt;br /&gt;
&lt;br /&gt;
= Procedure =&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Review ==&lt;br /&gt;
As stated above, before starting the core procedure, carry out the following actions:&lt;br /&gt;
&lt;br /&gt;
* Ensure the default branches are up-to-date&lt;br /&gt;
* Check LuxCore buildability: run the 3 actions listed above.&lt;br /&gt;
* Ensure the change log is available&lt;br /&gt;
* Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.&lt;br /&gt;
* Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.&lt;br /&gt;
&lt;br /&gt;
== Wheels Release and Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Set the &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; parameter in &amp;lt;code&amp;gt;build-system/conan/conanfile.py&amp;lt;/code&amp;gt; to the selected version number&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Releaser&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  * Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  * Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Update existing release (if any): &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Rebuild all: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will build the wheels and create a release in draft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open the draft release and set it to &amp;lt;code&amp;gt;prerelease&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;last release&amp;lt;/code&amp;gt;. Also, insert the change log in the release text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  * Branch: &amp;lt;i&amp;gt;&amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Run on PyPI test: &amp;lt;i&amp;gt;Checked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI test (deployment - test).&lt;br /&gt;
(this is a test step, before uploadig to real PyPI) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Run action &amp;lt;code&amp;gt;LuxCore Python Wheels Publisher&amp;lt;/code&amp;gt;, with the following settings:&lt;br /&gt;
  * Branch: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;&lt;br /&gt;
  * Version: &amp;lt;i&amp;gt;the version number you selected before&amp;lt;/i&amp;gt;&lt;br /&gt;
  * Run on PyPI test: &amp;lt;i&amp;gt;Unchecked&amp;lt;/i&amp;gt;&lt;br /&gt;
This will upload the wheels to PyPI (deployment).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this stage, if everything succeeded, wheels are available for any user, with &amp;lt;code&amp;gt;pip install pyluxcore == &amp;lt;version&amp;gt; &amp;lt;/code&amp;gt;. You may want to test and/or have a look on PyPI.&lt;br /&gt;
&lt;br /&gt;
== Samples Release and Deployment ==&lt;/div&gt;</summary>
		<author><name>Howetuft</name></author>
	</entry>
</feed>