Skip to content

Commit 4434f7c

Browse files
committed
ENH: Add GitHub action to generate packages on demand with custom arguments
This action can be triggered from the actions tab of the repository can create packages with support for arbitrary devices by specifying the CMake arguments to enable each device.
1 parent 30d01b8 commit 4434f7c

1 file changed

Lines changed: 137 additions & 0 deletions

File tree

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
name: Create Plus Package
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
platform:
7+
description: 'Target platform'
8+
required: true
9+
type: choice
10+
options:
11+
- x64
12+
- Win32
13+
archive-name:
14+
description: 'Output archive name'
15+
required: true
16+
default: 'PlusApp-Custom'
17+
package-edition:
18+
description: 'PLUSAPP_PACKAGE_EDITION'
19+
required: false
20+
default: ''
21+
buildname-postfix:
22+
description: 'PLUSBUILD_BUILDNAME_POSTFIX'
23+
required: false
24+
default: 'gh-package'
25+
extra-config:
26+
description: 'Additional CMake -DFLAG=VALUE arguments'
27+
required: false
28+
default: ''
29+
pluslib-repository:
30+
description: 'Git repository URL for PlusLib'
31+
required: false
32+
default: 'https://github.com/PlusToolkit/PlusLib.git'
33+
pluslib-tag:
34+
description: 'Git tag or commit SHA for PlusLib'
35+
required: false
36+
default: 'master'
37+
use-pltools:
38+
description: 'Clone PLTools (requires PLTOOLS_ACCESS_TOKEN secret)'
39+
required: false
40+
type: boolean
41+
default: false
42+
43+
jobs:
44+
45+
########
46+
# BUILD AND CACHE VTK
47+
update_vtk_x64:
48+
if: ${{ inputs.platform == 'x64' }}
49+
uses: ./.github/workflows/build-vtk.yml
50+
strategy:
51+
fail-fast: false
52+
matrix:
53+
os: [windows-2022]
54+
build_type: [Release]
55+
arch: [x64]
56+
with:
57+
vtk-hash: 6b6b89ee577e6c6a5ee6f5220b9c6a12513c30b4 # v9.4.1
58+
os: ${{ matrix.os }}
59+
arch: ${{ matrix.arch }}
60+
build-type: ${{ matrix.build_type }}
61+
62+
update_vtk_Win32:
63+
if: ${{ inputs.platform == 'Win32' }}
64+
uses: ./.github/workflows/build-vtk.yml
65+
strategy:
66+
fail-fast: false
67+
matrix:
68+
os: [windows-2022]
69+
build_type: [Release]
70+
arch: [Win32]
71+
with:
72+
vtk-hash: 6b6b89ee577e6c6a5ee6f5220b9c6a12513c30b4 # v9.4.1
73+
os: ${{ matrix.os }}
74+
arch: ${{ matrix.arch }}
75+
build-type: ${{ matrix.build_type }}
76+
77+
########
78+
# BUILD AND CACHE ITK
79+
update_itk_x64:
80+
if: ${{ inputs.platform == 'x64' }}
81+
uses: ./.github/workflows/build-itk.yml
82+
strategy:
83+
fail-fast: false
84+
matrix:
85+
os: [windows-2022]
86+
build_type: [Release]
87+
arch: [x64]
88+
with:
89+
itk-hash: f98d5fac5e1d5ef694f3010f12bbbc2c792994c6 # v5.4.4
90+
os: ${{ matrix.os }}
91+
arch: ${{ matrix.arch }}
92+
build-type: ${{ matrix.build_type }}
93+
94+
update_itk_Win32:
95+
if: ${{ inputs.platform == 'Win32' }}
96+
uses: ./.github/workflows/build-itk.yml
97+
strategy:
98+
fail-fast: false
99+
matrix:
100+
os: [windows-2022]
101+
build_type: [Release]
102+
arch: [Win32]
103+
with:
104+
itk-hash: f98d5fac5e1d5ef694f3010f12bbbc2c792994c6 # v5.4.4
105+
os: ${{ matrix.os }}
106+
arch: ${{ matrix.arch }}
107+
build-type: ${{ matrix.build_type }}
108+
109+
########
110+
# BUILD PLUS PACKAGE
111+
build_plus_package:
112+
needs: [update_vtk_x64, update_vtk_Win32, update_itk_x64, update_itk_Win32]
113+
# always() lets this job run even though the skipped jobs are in needs
114+
if: always() && !failure() && !cancelled()
115+
uses: ./.github/workflows/build-plus.yml
116+
strategy:
117+
fail-fast: false
118+
matrix:
119+
os: [windows-2022]
120+
build_type: [Release]
121+
secrets:
122+
pltools-access-token: ${{ secrets.PLTOOLS_ACCESS_TOKEN }}
123+
with:
124+
arch: ${{ inputs.platform }}
125+
os: ${{ matrix.os }}
126+
pluslib-repository: ${{ inputs.pluslib-repository }}
127+
pluslib-tag: ${{ inputs.pluslib-tag }}
128+
use-pltools: ${{ inputs.use-pltools }}
129+
vtk-cache-key: ${{ inputs.platform == 'x64' && needs.update_vtk_x64.outputs.cache-key || needs.update_vtk_Win32.outputs.cache-key }}
130+
itk-cache-key: ${{ inputs.platform == 'x64' && needs.update_itk_x64.outputs.cache-key || needs.update_itk_Win32.outputs.cache-key }}
131+
archive-name: ${{ inputs.archive-name }}
132+
plus-config: >-
133+
-DVTK_DIR=${{ inputs.platform == 'x64' && needs.update_vtk_x64.outputs.install-path || needs.update_vtk_Win32.outputs.install-path }}
134+
-DITK_DIR=${{ inputs.platform == 'x64' && needs.update_itk_x64.outputs.install-path || needs.update_itk_Win32.outputs.install-path }}
135+
-DPLUSBUILD_BUILDNAME_POSTFIX=${{ inputs.buildname-postfix }}
136+
${{ inputs.package-edition != '' && format('-DPLUSAPP_PACKAGE_EDITION:STRING="{0}"', inputs.package-edition) || '' }}
137+
${{ inputs.extra-config }}

0 commit comments

Comments
 (0)