-
Notifications
You must be signed in to change notification settings - Fork 0
108 lines (90 loc) · 3.13 KB
/
build_binary.yml
File metadata and controls
108 lines (90 loc) · 3.13 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
103
104
105
106
107
108
name: 'Build Binary'
description: |
This workflow builds the binary files for Linux. The build binaries are stored as artifact
and may be reused by other workflows.
on:
push:
branches: [ 'main' ]
tags: [ '*' ]
pull_request:
branches: [ '*' ]
jobs:
build-binary:
name: 'Build binary'
runs-on: ubuntu-latest
steps:
- name: 'Checkout repository'
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: 'Setup GCC'
uses: egor-tensin/setup-gcc@v2
with:
version: '14'
platform: 'x64'
- name: 'Setup CMake'
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.31.x'
- name: 'Configure CMake'
env:
CXX: g++
run: |
cmake --preset linux-gcc-release
- name: 'Build'
run: |
cmake --build --preset linux-gcc-release --target cpp_bindings_linux
- name: 'Set PACKAGE_VERSION from env.bat'
id: version
run: |
. build/env.sh
echo "PACKAGE_VERSION=$PACKAGE_VERSION" >> $GITHUB_OUTPUT
- name: 'Check tag'
id: 'check-tag'
env:
PACKAGE_VERSION: ${{ steps.version.outputs.PACKAGE_VERSION }}
run: |
if [[ "$PACKAGE_VERSION" =~ ^(0|[1-9][[:digit:]]*)\.(0|[1-9][[:digit:]]*)\.(0|[1-9][[:digit:]]*)(-(alpha|rc|beta|experimental)\.[1-9][[:digit:]]*)?$ ]]; then
echo "Version \"$PACKAGE_VERSION\" is a valid package version."
echo "IS_VALID_PACKAGE_VERSION=true" >> $GITHUB_OUTPUT
else
echo "Version \"$PACKAGE_VERSION\" is not a valid package version."
echo "IS_VALID_PACKAGE_VERSION=false" >> $GITHUB_OUTPUT
fi
- name: 'Upload artifacts'
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: libcpp_bindings_linux
path: build/libcpp_bindings_linux.so
- name: 'Create GitHub Release'
if: github.ref_type == 'tag' && steps.check-tag.outputs.IS_VALID_PACKAGE_VERSION == 'true'
uses: softprops/action-gh-release@v2
with:
name: 'v${{ steps.version.outputs.PACKAGE_VERSION }}'
tag_name: ${{ github.ref_name }}
generate_release_notes: true
files: build/out/libcpp_bindings_windows.dll
outputs:
package_version: ${{ steps.version.outputs.PACKAGE_VERSION }}
is_valid_package_version: ${{ steps.check-tag.outputs.IS_VALID_PACKAGE_VERSION }}
test-unit-cpp:
name: 'Run: Test Unit C++'
needs: ['build-binary']
uses: './.github/workflows/test_unit_cpp.yml'
with:
artifact-name: cpp_bindings_linux_tests
permissions:
contents: read
checks: write
publish-jsr:
name: 'Run: Publish JSR'
needs: ['build-binary', 'test-unit-cpp']
uses: './.github/workflows/publish_jsr.yml'
with:
publish: ${{ needs.build-binary.outputs.is_valid_package_version == 'true' }}
version: ${{ needs.build-binary.outputs.package_version }}
artifact-name: libcpp_bindings_linux
permissions:
contents: read
id-token: write