forked from ANTsX/ANTs
-
Notifications
You must be signed in to change notification settings - Fork 0
135 lines (132 loc) · 4.49 KB
/
release-docker-binaries.yml
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
name: Cross-platform release binaries
on:
release:
types: [created]
env:
CMAKE_VERSION: 3.23.1 # for ubuntu
jobs:
build:
name: ${{ matrix.config.name }}
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
config:
- {
name: "almalinux-8-GCC",
os_desc: almalinux8,
image: "almalinux:8",
build_type: "Release",
cc: "gcc",
cxx: "g++",
generators: "Unix Makefiles"
}
- {
name: "Ubuntu-18.04-GCC",
os_desc: ubuntu18.04,
image: "ubuntu:18.04",
build_type: "Release",
cc: "gcc",
cxx: "g++",
generators: "Ninja"
}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- name: Get ANTs version and set artifact name
run: |
echo "ANTS_VERSION=${ANTS_TAG#v}" >> $GITHUB_ENV
echo "ARTIFACT=ants-${ANTS_VERSION}-${{ matrix.config.os_desc }}-${{ runner.arch }}-${{ matrix.config.cc }}.zip" >> $GITHUB_ENV
env:
ANTS_TAG: ${{ github.ref_name }}
- name: Set up build container
run: |
docker pull ${{ matrix.config.image }}
docker create --name build_container -v ${{ github.workspace }}:/workspace -v ${{ runner.temp }}/artifact:/artifact ${{ matrix.config.image }} sleep infinity
docker start build_container
- name: Install dependencies on Alma
if: startsWith(matrix.config.name, 'almalinux')
run: |
docker exec --user root build_container bash -c "
yum -y update && yum clean all
yum groupinstall -y 'Development Tools'
yum install -y cmake
cmake --version
gcc --version
"
- name: Install dependencies on Ubuntu
if: startsWith(matrix.config.name, 'Ubuntu-18.04')
run: |
docker exec --user root build_container bash -c "
apt-get update
apt-get install -y --no-install-recommends \
apt-transport-https \
bc \
build-essential \
ca-certificates \
gnupg \
ninja-build \
git \
software-properties-common \
wget \
zip
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | apt-key add -
apt-add-repository -y 'deb https://apt.kitware.com/ubuntu/ bionic main'
apt-get update
apt-get -y install cmake=${CMAKE_VERSION}-0kitware1ubuntu18.04.1 cmake-data=${CMAKE_VERSION}-0kitware1ubuntu18.04.1
ninja --version
cmake --version
gcc --version
"
- name: Configure
run: |
docker exec --user root build_container bash -c "
mkdir -p /workspace/build
cd /workspace/build
cmake \
-DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \
-G '${{ matrix.config.generators }}' \
-DBUILD_TESTING=ON \
-DRUN_SHORT_TESTS=ON \
-DRUN_LONG_TESTS=OFF \
-DCMAKE_INSTALL_PREFIX:PATH=/workspace/install/ants-${{ env.ANTS_VERSION }} \
/workspace
"
- name: Build
run: |
docker exec --user root build_container bash -c "
cd /workspace/build
cmake --build . --config ${{ matrix.config.build_type }} --parallel 1
"
- name: Test
run: |
docker exec --user root build_container bash -c "
cd /workspace/build/ANTS-build
ctest
"
- name: Install
run: |
docker exec --user root build_container bash -c "
cd /workspace/build/ANTS-build
cmake --install .
"
- name: Pack
run: |
docker exec --user root build_container bash -c "
cd /workspace/install
zip -r /artifact/${{ env.ARTIFACT }} .
"
- name: Upload release asset
uses: ncipollo/[email protected]
with:
allowUpdates: true
omitBodyDuringUpdate: true
omitNameDuringUpdate: true
artifacts: "${{ runner.temp }}/artifact/${{ env.ARTIFACT }}"
artifactContentType: application/zip
token: ${{ secrets.GITHUB_TOKEN }}
- name: Clean up
run: |
docker stop build_container
docker rm build_container