Skip to content

Commit 2fa667d

Browse files
Remove code duplication in build workflow
1 parent 4e47f70 commit 2fa667d

File tree

1 file changed

+23
-82
lines changed

1 file changed

+23
-82
lines changed

.github/workflows/build.yml

+23-82
Original file line numberDiff line numberDiff line change
@@ -12,88 +12,8 @@ defaults:
1212
shell: bash
1313

1414
jobs:
15-
# Use WPI provided Docker images to build for Linux ARM32 and ARM64 platforms
16-
build-docker:
17-
strategy:
18-
fail-fast: false
19-
matrix:
20-
include:
21-
- container: wpilib/aarch64-cross-ubuntu:bullseye-22.04
22-
name: LinuxARM64
23-
build-options: "-Ponlylinuxarm64"
24-
platform-type: linuxarm64
25-
arch: arm64
26-
- container: wpilib/raspbian-cross-ubuntu:bullseye-22.04
27-
name: LinuxARM32
28-
build-options: "-Ponlylinuxarm32"
29-
platform-type: linuxarm32
30-
arch: arm32
31-
runs-on: ubuntu-latest
32-
name: "Build - ${{ matrix.name }}"
33-
container: ${{ matrix.container }}
34-
steps:
35-
- name: Checkout
36-
uses: actions/checkout@v4
37-
with:
38-
ref: ${{ github.sha }}
39-
40-
- name: Setup Java
41-
uses: actions/setup-java@v4
42-
with:
43-
distribution: 'zulu'
44-
java-version: 11
45-
46-
- name: Setup Gradle
47-
uses: gradle/actions/setup-gradle@v4
48-
49-
- name: Build
50-
run: |
51-
./gradlew outputVersions publish ${{ matrix.build-options }} -PreleaseMode
52-
53-
- name: Download WPILib HAL artifacts and headers for ${{ matrix.platform-type }}
54-
run : |
55-
halVersion=$(cat wpiHalVersion.txt)
56-
57-
sharedHalPlatformUrl=https://frcmaven.wpi.edu/artifactory/release/edu/wpi/first/hal/hal-cpp/"$halVersion"/hal-cpp-"$halVersion"-${{ matrix.platform-type }}.zip
58-
sharedUtilPlatformUrl=https://frcmaven.wpi.edu/artifactory/release/edu/wpi/first/wpiutil/wpiutil-cpp/"$halVersion"/wpiutil-cpp-"$halVersion"-${{ matrix.platform-type }}.zip
59-
curl -L -o sharedHalPlatform.zip "$sharedHalPlatformUrl"
60-
curl -L -o sharedUtilPlatform.zip "$sharedUtilPlatformUrl"
61-
62-
staticHalPlatformUrl=https://frcmaven.wpi.edu/artifactory/release/edu/wpi/first/hal/hal-cpp/"$halVersion"/hal-cpp-"$halVersion"-${{ matrix.platform-type }}static.zip
63-
staticUtilPlatformUrl=https://frcmaven.wpi.edu/artifactory/release/edu/wpi/first/wpiutil/wpiutil-cpp/"$halVersion"/wpiutil-cpp-"$halVersion"-${{ matrix.platform-type }}static.zip
64-
curl -L -o staticHalPlatform.zip "$staticHalPlatformUrl"
65-
curl -L -o staticUtilPlatform.zip "$staticUtilPlatformUrl"
66-
67-
- name: Unzip WPILib HAL artifacts and headers
68-
run: |
69-
unzip sharedHalPlatform.zip -d sharedHalPlatform
70-
unzip sharedUtilPlatform.zip -d sharedUtilPlatform
71-
unzip staticHalPlatform.zip -d staticHalPlatform
72-
unzip staticUtilPlatform.zip -d staticUtilPlatform
73-
mkdir -p CANBridge-artifacts/static
74-
mkdir -p CANBridge-artifacts/shared
75-
76-
# Put Linux ARM release files together in one directory
77-
- name: Create Artifact
78-
run: |
79-
cp build/libs/cANBridge/shared/release/libCANBridge.so CANBridge-artifacts/shared/libCANBridge.so
80-
cp sharedHalPlatform/linux/${{ matrix.arch }}/shared/libwpiHal.so CANBridge-artifacts/shared/libwpiHal.so
81-
cp sharedUtilPlatform/linux/${{ matrix.arch }}/shared/libwpiutil.so CANBridge-artifacts/shared/libwpiutil.so
82-
83-
cp build/libs/cANBridge/static/release/libCANBridge.a CANBridge-artifacts/static/libCANBridge.a
84-
cp staticHalPlatform/linux/${{ matrix.arch }}/static/libwpiHal.a CANBridge-artifacts/static/libwpiHal.a
85-
cp staticUtilPlatform/linux/${{ matrix.arch }}/static/libwpiutil.a CANBridge-artifacts/static/libwpiutil.a
86-
87-
# Upload build artifact
88-
- name: Upload build artifact
89-
uses: actions/upload-artifact@v4
90-
with:
91-
name: CANBridge-${{ matrix.platform-type }}-${{ github.sha}}
92-
path: CANBridge-artifacts/
93-
94-
# Use native runners to build for Windows, Linux, and macOS
95-
build-native:
96-
timeout-minutes: 15
15+
# Use native runners to build for Windows, Linux x86-64, and macOS; use WPI provided Docker images to build for Linux ARM32 and ARM64 platforms
16+
build:
9717
strategy:
9818
fail-fast: false
9919
matrix:
@@ -110,8 +30,21 @@ jobs:
11030
name: macOS
11131
platform-type: osxuniversal
11232
build-options: ""
33+
- container: wpilib/aarch64-cross-ubuntu:bullseye-22.04
34+
os: ubuntu-latest
35+
name: LinuxARM64
36+
build-options: "-Ponlylinuxarm64"
37+
platform-type: linuxarm64
38+
arch: arm64
39+
- container: wpilib/raspbian-cross-ubuntu:bullseye-22.04
40+
os: ubuntu-latest
41+
name: LinuxARM32
42+
build-options: "-Ponlylinuxarm32"
43+
platform-type: linuxarm32
44+
arch: arm32
11345
name: "Build - ${{ matrix.name }}"
11446
runs-on: ${{ matrix.os }}
47+
container: ${{ matrix.container }}
11548
steps:
11649
- name: Checkout
11750
uses: actions/checkout@v4
@@ -185,6 +118,14 @@ jobs:
185118
cp build/libs/cANBridge/static/osxuniversal/release/libCANBridge.a CANBridge-artifacts/static/
186119
cp staticHalPlatform/osx/universal/static/libwpiHal.a CANBridge-artifacts/static/
187120
cp staticUtilPlatform/osx/universal/static/libwpiutil.a CANBridge-artifacts/static/
121+
elif [[ "${{ matrix.platform-type }}" == "linuxarm32" || "${{ matrix.platform-type }}" == "linuxarm64" ]]; then
122+
cp build/libs/cANBridge/shared/release/libCANBridge.so CANBridge-artifacts/shared/libCANBridge.so
123+
cp sharedHalPlatform/linux/${{ matrix.arch }}/shared/libwpiHal.so CANBridge-artifacts/shared/libwpiHal.so
124+
cp sharedUtilPlatform/linux/${{ matrix.arch }}/shared/libwpiutil.so CANBridge-artifacts/shared/libwpiutil.so
125+
126+
cp build/libs/cANBridge/static/release/libCANBridge.a CANBridge-artifacts/static/libCANBridge.a
127+
cp staticHalPlatform/linux/${{ matrix.arch }}/static/libwpiHal.a CANBridge-artifacts/static/libwpiHal.a
128+
cp staticUtilPlatform/linux/${{ matrix.arch }}/static/libwpiutil.a CANBridge-artifacts/static/libwpiutil.a
188129
fi
189130
190131
# Upload build artifact

0 commit comments

Comments
 (0)