-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaction.yml
More file actions
102 lines (89 loc) · 4.24 KB
/
Copy pathaction.yml
File metadata and controls
102 lines (89 loc) · 4.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
---
name: "Create Julia Distribution"
description: |
Builds a relocatable Julia distribution from a project, with the project's
dependencies baked into the system image and exposed as standard libraries.
Julia is expected to be available on the runner; installing it and resolving
registries are left to the caller, as is everything done to the resulting
tree — signing it, packing it into an archive (available through the `pack`
sibling action), uploading it or testing it.
inputs:
additional-copy-globs:
description: |
Newline-separated glob patterns, relative to each package root, of files
to copy into the distribution on top of the ones this action always
copies: package sources and extensions, license, changelog and news
files, `Artifacts.toml` and `README.md`.
Patterns arrive as plain strings, so anything `Glob` offers beyond them
— the case-insensitive filename matching this action uses for the license
files among it — cannot be expressed through this input.
Not part of this action's supported surface. The build options design has
not settled, so this input may change or be withdrawn in any release
rather than only in a major one.
required: false
compress-sysimage:
description: |
Whether to compress the system image heap using zstd, reducing the size
of the resulting distribution at the expense of slightly increased load
time. Requires Julia 1.13+.
Defaults to `false`, leaving it to the caller to decide when the size
matters enough to pay for it.
default: "false"
required: false
distribution-id:
description: |
The "identifier" of the distribution. The distribution is written to a
directory of this name under `distributions` in the path provided through
the `source-path` input.
required: true
precompile-execution-file:
description: |
A file containing Julia code to be used as a precompilation workload when
building the system image. If the file is not present a warning will be
issued, unless the default value is used.
Corresponds to the `precompile_execution_file` argument to the
`create_distribution` function in `PackageCompiler`.
Defaults to a `precompile.jl` file in the root of the project from which
the distribution is built as specified through the `source-path` input.
default: "precompile.jl"
required: false
source-path:
description: |
The path to the project from which to create the distribution. This
should at the very least contain a `Project.toml` file, but for proper
reproducibility should also contain a `Manifest.toml`.
Relative file references provided as inputs to this action will be
interpreted relative to this value.
default: "${{ github.workspace }}"
required: false
sysimage-script:
description: |
Path to a Julia file to execute while the system image is generated,
given as an absolute path or relative to the `source-path` input.
Corresponds to the `script` argument to the `create_distribution`
function in `PackageCompiler`, except that it never replaces this
action's own rewriting of package origin paths; it runs after it.
Not part of this action's supported surface. The build options design has
not settled, so this input may change or be withdrawn in any release
rather than only in a major one.
required: false
outputs:
distribution-path:
description: |
The absolute path of the unpacked distribution directory that was built,
in the runner's native path convention.
value: "${{ steps.build-distribution.outputs.distribution-path }}"
runs:
using: "composite"
steps:
- name: "Build the distribution"
id: "build-distribution"
env:
ADDITIONAL_COPY_GLOBS: "${{ inputs.additional-copy-globs }}"
COMPRESS_SYSIMAGE: "${{ inputs.compress-sysimage }}"
DISTRIBUTION_ID: "${{ inputs.distribution-id }}"
PRECOMPILE_EXECUTION_FILE: "${{ inputs.precompile-execution-file }}"
SOURCE_PATH: "${{ inputs.source-path }}"
SYSIMAGE_SCRIPT: "${{ inputs.sysimage-script }}"
run: 'julia "${GITHUB_ACTION_PATH}/bin/create-distribution.jl"'
shell: "bash"