Open dskvr opened 4 years ago
@dskvr apologies for the confusion here, this repository is relatively old and hasn't been updated to reflect subsequent changes to the available infrastructure. At the time of writing, the build script has not been modified since May 4, 2018, which predates the existence of the ue4-ci-helpers Python package by almost an entire year. The script invokes ue4cli and conan-ue4cli directly, which is not inherently a problem, but its invocations do not reflect the current best practices for building and consuming packages with conan-ue4cli since its major overhaul in early 2020. Updating this repository (and other related example repositories) to reflect the current state of the available tooling is a task that is currently in my backlog.
I'd also like to clear up an important misconception inherent in the premise of your question. The Continuous Integration page of the ue4-docker documentation never suggests that use of the ue4-ci-helpers is the only way (or even the preferred way) of performing CI for Unreal Engine projects and plugins. The page simply lists a variety of available options, including command-line use of ue4cli and methods that use the native UE4 build tools directly without the involvement of any third-party infrastructure. The collective purpose of my various infrastructure projects is to provide developers with a number of different (but equally valid) options for use in their own workflows, allowing them to choose the option that best suits their requirements. Unreal Engine CI/CD is not in any way synonymous with, or limited to, use of the ue4-ci-helpers package.
@adamrehn Thanks for your response!
do not reflect the current best practices for building and consuming packages with conan-ue4cli since its major overhaul in early 2020.
Is there currently a resource for best practices?
never suggests that use of the ue4-ci-helpers is the only way (or even the preferred way) I am aware that
ue4-ci-helpers
is not the only way, but it is absolutely a simple and clean method for cross-platform scripts.
Is there currently a "preferred" way?
@dskvr
Is there currently a resource for best practices?
Until the example repositories are updated, the best bet for using conan-ue4cli would be to follow along with each of the steps outlined in the official documentation.
Is there currently a "preferred" way?
No, and there never will be a single preferred way of building Unreal Engine projects and plugins in CI/CD pipelines, since different developers will find different options better suited to their own requirements. (Even once Admiral launches, it will support all of the available options, rather than forcing users to adopt any given method of building and packaging their code.) In terms of evaluating the available options, here's some basic guidance:
If you prefer to write build scripts in Python then the ue4-ci-helpers package is designed for you.
If you prefer to write build scripts in any other language and still want them to be cross-platform, then invoking ue4cli from the scripting language of your choice is the cleanest and simplest option.
If you have different build scripts for different platforms then directly invoking the Unreal Engine's native build tools will work just fine, although this does require knowing the full path to the Unreal Engine installation. You can of course use ue4cli to simplify this scenario as well, but that might not be an option if you're working within a constrained environment that limits your ability to use third-party infrastructure.
Thanks @adamrehn !
Reopened to maintain backlog item.
Correct me if I'm wrong, but build.py does not appear to implement ue4-ci-helpers
This is particularly awkward because
ue4-opencv-demo
is linked from theue4-docker
documentation under the heading "Usage with Continuous Integration systems."It is somewhat confusing that
ue4-ci-helpers
is not being implemented in the demo that is linked to under the guise of CI. Additionally, it makes understanding the architecture and intended usage of the awesome tooling provided by @adamrehn more difficult.Once I get the demo running I can attempt to port
build.py
and open a PR, but of course having it provided by the expert would definitely be appreciated :smile: