-
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(release): Build and upload binary (#36)
* build and upload binary * only upload artifacts on main
- Loading branch information
1 parent
25a2cbb
commit f35e4a7
Showing
6 changed files
with
207 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
# This file defines how PyOxidizer application building and packaging is | ||
# performed. See PyOxidizer's documentation at | ||
# https://gregoryszorc.com/docs/pyoxidizer/stable/pyoxidizer.html for details | ||
# of this configuration file format. | ||
|
||
# Configuration files consist of functions which define build "targets." | ||
# This function creates a Python executable and installs it in a destination | ||
# directory. | ||
def make_exe(): | ||
# Obtain the default PythonDistribution for our build target. We link | ||
# this distribution into our produced executable and extract the Python | ||
# standard library from it. | ||
dist = default_python_distribution() | ||
|
||
# This function creates a `PythonPackagingPolicy` instance, which | ||
# influences how executables are built and how resources are added to | ||
# the executable. You can customize the default behavior by assigning | ||
# to attributes and calling functions. | ||
policy = dist.make_python_packaging_policy() | ||
|
||
# Resources are loaded from "in-memory" or "filesystem-relative" paths. | ||
# The locations to attempt to add resources to are defined by the | ||
# `resources_location` and `resources_location_fallback` attributes. | ||
# The former is the first/primary location to try and the latter is | ||
# an optional fallback. | ||
|
||
# Use in-memory location for adding resources by default. | ||
policy.resources_location = "in-memory" | ||
|
||
# Attempt to add resources relative to the built binary when | ||
# `resources_location` fails. | ||
policy.resources_location_fallback = "filesystem-relative:prefix" | ||
|
||
# This variable defines the configuration of the embedded Python | ||
# interpreter. By default, the interpreter will run a Python REPL | ||
# using settings that are appropriate for an "isolated" run-time | ||
# environment. | ||
# | ||
# The configuration of the embedded Python interpreter can be modified | ||
# by setting attributes on the instance. Some of these are | ||
# documented below. | ||
python_config = dist.make_python_interpreter_config() | ||
|
||
# Set initial value for `sys.path`. If the string `$ORIGIN` exists in | ||
# a value, it will be expanded to the directory of the built executable. | ||
python_config.module_search_paths = ["$ORIGIN/devservices"] | ||
|
||
# Run a Python module as __main__ when the interpreter starts. | ||
python_config.run_module = "devservices.main" | ||
|
||
# Produce a PythonExecutable from a Python distribution, embedded | ||
# resources, and other options. The returned object represents the | ||
# standalone executable that will be built. | ||
exe = dist.to_python_executable( | ||
name="devservices", | ||
|
||
# If no argument passed, the default `PythonPackagingPolicy` for the | ||
# distribution is used. | ||
packaging_policy=policy, | ||
|
||
# If no argument passed, the default `PythonInterpreterConfig` is used. | ||
config=python_config, | ||
) | ||
|
||
# Invoke `pip install` using a requirements file and add the collected resources | ||
# to our binary. | ||
exe.add_python_resources(exe.pip_install(["-r", "requirements.txt"])) | ||
|
||
# Read Python files from a local directory and add them to our embedded | ||
# context, taking just the resources belonging to the `foo` and `bar` | ||
# Python packages. | ||
exe.add_python_resources(exe.read_package_root( | ||
path=".", | ||
packages=["devservices"], | ||
)) | ||
|
||
# Add the generated metadata | ||
exe.add_python_resources(exe.read_package_root( | ||
path=".", | ||
packages=["devservices.egg-info"], # or the appropriate metadata directory name | ||
)) | ||
|
||
# Return our `PythonExecutable` instance so it can be built and | ||
# referenced by other consumers of this target. | ||
return exe | ||
|
||
def make_embedded_resources(exe): | ||
return exe.to_embedded_resources() | ||
|
||
def make_install(exe): | ||
# Create an object that represents our installed application file layout. | ||
files = FileManifest() | ||
|
||
# Add the generated executable to our install layout in the root directory. | ||
files.add_python_resource(".", exe) | ||
|
||
return files | ||
|
||
|
||
# Tell PyOxidizer about the build targets defined above. | ||
register_target("exe", make_exe) | ||
register_target("resources", make_embedded_resources, depends=["exe"], default_build_script=True) | ||
register_target("install", make_install, depends=["exe"], default=True) | ||
|
||
# Resolve whatever targets the invoker of this configuration file is requesting | ||
# be resolved. | ||
resolve_targets() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters