-
Notifications
You must be signed in to change notification settings - Fork 0
142 lines (136 loc) · 5.31 KB
/
build.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
136
137
138
139
140
141
142
name: Helios Build
on:
push:
branches: ["master"]
pull_request:
branches: ["master"]
jobs:
setup:
runs-on: ubuntu-latest
outputs:
helios_version_major: ${{ steps.set_version.outputs.helios_version_major }}
helios_version_minor: ${{ steps.set_version.outputs.helios_version_minor }}
helios_build_number: ${{ steps.set_version.outputs.helios_build_number }}
helios_version_number: ${{ steps.set_version.outputs.helios_version_number }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetches all history for all branches and tags
- name: Determine Version and Build Number
id: set_version
run: |
# Fetch all tags
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
# Get the latest tag that matches the branch suffix
LATEST_TAG=$(git tag --list | sort -V | tail -n1)
if [ -z "$LATEST_TAG" ]; then
echo "No matching tags found. Setting default version."
VERSION_MAJOR="0"
VERSION_MINOR="1"
BUILD_NUMBER="0"
else
echo "Found latest tag: $LATEST_TAG"
VERSION_MAJOR=$(echo $LATEST_TAG | cut -d. -f1)
VERSION_MINOR=$(echo $LATEST_TAG | cut -d. -f2)
LAST_HELIOS_BUILD_NUMBER=$(echo $LATEST_TAG | cut -d. -f3)
COMMITS_SINCE_TAG=$(git rev-list --count $LATEST_TAG..HEAD)
BUILD_NUMBER=$(( $LAST_HELIOS_BUILD_NUMBER + $COMMITS_SINCE_TAG ))
fi
FULL_VERSION="$VERSION_MAJOR.$VERSION_MINOR.$BUILD_NUMBER"
echo "helios_version_major=$VERSION_MAJOR" >> $GITHUB_OUTPUT
echo "helios_version_minor=$VERSION_MINOR" >> $GITHUB_OUTPUT
echo "helios_build_number=$BUILD_NUMBER" >> $GITHUB_OUTPUT
echo "helios_version_number=$FULL_VERSION" >> $GITHUB_OUTPUT
echo "Version Number: $FULL_VERSION"
build:
needs: setup
runs-on: ubuntu-latest
steps:
- name: Checkout current repository
uses: actions/checkout@v4
- name: Update Package Lists
run: sudo apt-get update
- name: Install Dependencies
run: sudo apt-get install valgrind g++ make --fix-missing
- name: Build HeliosCLI
run: make -j
working-directory: HeliosCLI
- name: Archive HeliosCLI artifacts
run: zip -r "helioscli.zip" .
working-directory: HeliosCLI
- name: Upload HeliosCLI Artifact
uses: actions/upload-artifact@v4
with:
name: helioscli-artifacts
path: HeliosCLI/helioscli.zip
tests:
needs: [setup, build]
runs-on: ubuntu-latest
steps:
- name: Checkout current repository
uses: actions/checkout@v4
- name: Download HeliosCLI Artifact
uses: actions/download-artifact@v4
with:
name: helioscli-artifacts
path: ./HeliosCLI
- name: Set execute permissions for test script
run: chmod +x ./runtests.sh
working-directory: tests
- name: Run general tests
run: ./runtests.sh
working-directory: tests
embedded:
needs: [setup, build, tests]
runs-on: ubuntu-latest
steps:
- name: Checkout current repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.x"
- name: Install Dependencies
run: make install
working-directory: HeliosEmbedded
- name: Build Binary
run: |
export HELIOS_VERSION_MAJOR=${{ needs.setup.outputs.helios_version_major }}
export HELIOS_VERSION_MINOR=${{ needs.setup.outputs.helios_version_minor }}
export HELIOS_BUILD_NUMBER=${{ needs.setup.outputs.helios_build_number }}
export HELIOS_VERSION_NUMBER=${{ needs.setup.outputs.helios_version_number }}
make -j build
working-directory: HeliosEmbedded
- name: Archive HeliosEmbedded artifacts
run: zip -r "embedded-firmware.zip" .
working-directory: HeliosEmbedded
- name: Upload HeliosEmbedded Artifact
uses: actions/upload-artifact@v4
with:
name: embedded-firmware
path: HeliosEmbedded/embedded-firmware.zip
wasm:
needs: [setup, build, tests, embedded]
runs-on: ubuntu-latest
steps:
- name: Checkout current repository
uses: actions/checkout@v4
- name: Update Package Lists
run: sudo apt-get update
- name: Install Emscripten
run: |
sudo apt install -y cmake python3
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install latest
./emsdk activate latest
working-directory: HeliosLib
- name: Build Webassembly
run: |
source ./emsdk/emsdk_env.sh
export HELIOS_VERSION_MAJOR=${{ needs.setup.outputs.helios_version_major }}
export HELIOS_VERSION_MINOR=${{ needs.setup.outputs.helios_version_minor }}
export HELIOS_BUILD_NUMBER=${{ needs.setup.outputs.helios_build_number }}
export HELIOS_VERSION_NUMBER=${{ needs.setup.outputs.helios_version_number }}
make -j wasm
working-directory: HeliosLib