Deploying LuxCoreRender

From LuxCoreRender Wiki
Jump to navigation Jump to search

Audience, Definitions and Scope

This document is intended for LuxCoreRender administrators only.

The process requires that the administrator running Release and Deploy be:

  • granted with sufficient rights on LuxCoreRender repositories on Github, including running actions, producing releases etc.
  • granted with sufficient rights on LuxCoreRender repository on PyPI and PyPI-test, including adding and deleting versions
  • skilled enough in Github administration and, especially, able to run Github actions
  • and skilled enough in PyPI administration

Please check that you meet these criteria before reading further.


In this document:

  • Releasing 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.
  • Deployment refers to the process of making a new release of LuxCoreRender available to end-users.


The scope of Deployment includes the following components:

  • Python Wheels (aka pyluxcore)
  • Samples (aka luxcoreui and luxcoreconsole)
  • BlendLuxCore

Please note we deliberately exclude the dependencies (aka LuxCoreDeps) from the deployment scope. Indeed:

  • Dependencies are not intended for end-users, so deployment is not applicable.
  • Up-to-date dependencies are necessary for LuxCore development and tests, so they should have been released for a while when LuxCore deployment occurs.

Prequisites

Clean Branches

The procedure assumes the releases can be created from the default branches in each repository, namely (2026-04-19):

  • master for LuxCore
  • main for BlendLuxCore

Please check the above branches contain all the history you target for your releases and, if not, make the required git plumbing.

LuxCore Buildability

The procedure requires that targeted LuxCore components be buildable by Continuous Integration.


This can be checked by running the following Github Actions:

  • Wheels: LuxCore Python Wheel Builder (in LuxCore repository)
  • Samples: LuxCore Python Sample Builder (in LuxCore repository)
  • BlendLuxCore: BlendLuxCore Build Bundle (in BlendLuxCore)

Please check the components fulfill those requirements before any Release/Deploy activity.

Change Log readiness

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.

Consistent Version Numbers

First, note you'll need 2 version numbers:

  • One for LuxCore
  • One for BlendLuxCore

These version numbers must enforce Semantic Versioning, as stated in Building LuxCoreRender

Please note also that the version numbers should not have been used in anyway in previous releases. 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.

Sufficient space on PyPI and PyPI-test

The space on PyPI and PyPI-test is limited to 10GB (as of now, 2026-04-19).

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.

Procedure

Pre-Flight Review

As stated above, before starting the core procedure, carry out the following actions:

  • Ensure the default branches are up-to-date
  • Check LuxCore buildability: run the 3 actions listed above.
  • Ensure the change log is available
  • Define and check Release Version Numbers (one for LuxCore and one for BlendLuxCore): they should have been neither allocated before, nor used on PyPI.
  • Check the space on PyPI and PyPI-test. If not sufficient, clean oldest versions.

Wheels Release and Deployment

  • Set the version parameter in build-system/conan/conanfile.py to the targeted version number for wheels.
  • Run action LuxCore Python Wheels Releaser, with the following settings:
 Branch: master
 Version: the version number you selected before
 Update existing release (if any): Unchecked
 Rebuild all: Checked

This will build the wheels and create a release in draft mode.


  • Open the draft release and set its status to prerelease or last release. Also, insert the change log in the release text. Save the release.


  • Run action LuxCore Python Wheels Publisher, with the following settings:
 Branch: master
 Version: the version number you selected before
 Run on PyPI test: Checked

This will upload the wheels to PyPI test (deployment - test). (this is a test step, before uploadig to real PyPI)


  • Run action LuxCore Python Wheels Publisher, with the following settings:
 Branch: master
 Version: the version number you selected before
 Run on PyPI test: Unchecked

This will upload the wheels to PyPI (deployment).


At this stage, if everything succeeded, wheels are available for any user, with pip install pyluxcore == <version> . You may want to test and/or have a look on PyPI.

Samples Release and Deployment

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...

Nota #2: We assume the wheels have just been released, so that it is possible to reuse their build artifacts and thus to clear 'rebuild all' in the following action.


  • Run Github action named LuxCore Samples Releaser, with the following settings:
  Branch: main
  Version: the version number you selected before
  Update existing release (if any): Unchecked
  Rebuild all: Unchecked

At this stage, a draft release should have been created.

  • Open the draft release, insert change log and set release status to prerelease or latest release.
  • For latest releases, publish the files on the website

BlendLuxCore Release and Deployment

Important warning: BLC should not be released while related wheels have not been deployed yet. Indeed, pyluxcore version must be known before starting any release or deploy action of BLC.


  • In luxloader/__init__.py, set PYLUXCORE_VERSION to the version of related pyluxcore. 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.
  • In blender_manifest.toml, set version parameter to the targeted version of BLC. Caveat: this version can differ from pyluxcore version defined above.
  • Commit your changes and push to BlendLuxCore repository, if needed.
  • Run Github action named BlendLuxCore Create Release, with the following settings:
  Branch: main
  Version: the version number you selected before
  Update existing release (if any): Unchecked

At this stage, a draft release should have been created.

  • Open the draft release, insert change log and set release status to prerelease or latest release.
  • For latest releases, publish the files on the website

Announcements

<To be completed by @codehd>