@@ -88,6 +88,104 @@ jobs:
8888 echo "Build completed successfully, but integration tests were skipped."
8989 echo "For full test coverage, see the Linux runner which supports Docker natively."
9090
91+ macos-arm :
92+ runs-on : macos-latest
93+ # Note: Uses Apple Silicon runner with InfluxDB amd64 binary via Rosetta (similar to Windows approach)
94+
95+ steps :
96+ - uses : actions/checkout@v4
97+
98+ - name : Cache Conan
99+ uses : actions/cache@v4
100+ with :
101+ path : ~/.conan2
102+ key : conan-${{ runner.os }}-${{ hashFiles('**/conanfile.py') }}
103+ restore-keys : |
104+ conan-${{ runner.os }}-
105+
106+ - name : Cache InfluxDB
107+ uses : actions/cache@v4
108+ id : cache-influxdb
109+ with :
110+ path : |
111+ influxdb-1.8.10-1
112+ influxdb-1.8.10_darwin_amd64.tar.gz
113+ key : influxdb-1.8.10-macos-arm-${{ runner.os }}
114+ restore-keys : |
115+ influxdb-1.8.10-macos-arm-
116+
117+ - name : Install Conan
118+ run : |
119+ pip install conan
120+
121+ - name : Configure Conan for C++20
122+ run : |
123+ conan profile detect --force
124+ # Override to C++20 (not gnu20 to match CMAKE_CXX_EXTENSIONS=OFF)
125+ sed -i '' 's/compiler\.cppstd=.*/compiler.cppstd=20/' ~/.conan2/profiles/default || true
126+ echo "compiler.cppstd=20" >> ~/.conan2/profiles/default || true
127+
128+ - name : Build project
129+ run : |
130+ chmod +x scripts/build.sh scripts/test.sh
131+ ./scripts/build.sh Release
132+
133+ - name : Download InfluxDB (if not cached)
134+ if : steps.cache-influxdb.outputs.cache-hit != 'true'
135+ run : |
136+ INFLUXDB_VERSION=1.8.10
137+ # Note: InfluxDB 1.8.10 only has amd64/x86_64 binaries, but will run on Apple Silicon via Rosetta
138+ INFLUXDB_TAR=influxdb-${INFLUXDB_VERSION}_darwin_amd64.tar.gz
139+ INFLUXDB_URL=https://dl.influxdata.com/influxdb/releases/${INFLUXDB_TAR}
140+
141+ echo "Downloading InfluxDB ${INFLUXDB_VERSION} (amd64, runs on Apple Silicon via Rosetta)..."
142+ curl -L -o "${INFLUXDB_TAR}" "${INFLUXDB_URL}"
143+
144+ echo "Extracting InfluxDB..."
145+ tar -xzf "${INFLUXDB_TAR}"
146+
147+ echo "Verifying InfluxDB binary..."
148+ ls -la influxdb-${INFLUXDB_VERSION}-1/influxd
149+
150+ - name : Start InfluxDB
151+ run : |
152+ cd influxdb-1.8.10-1
153+ echo "Starting InfluxDB in background..."
154+ ./influxd -config ../influxdb.conf &
155+ INFLUXDB_PID=$!
156+ echo "INFLUXDB_PID=${INFLUXDB_PID}" >> $GITHUB_ENV
157+
158+ echo "Waiting for InfluxDB to be ready..."
159+ timeout=30
160+ elapsed=0
161+ while [ $elapsed -lt $timeout ]; do
162+ if curl -s http://localhost:8086/ping > /dev/null 2>&1; then
163+ echo "✓ InfluxDB is ready!"
164+ break
165+ fi
166+ sleep 1
167+ elapsed=$((elapsed + 1))
168+ done
169+
170+ if [ $elapsed -eq $timeout ]; then
171+ echo "⚠ Warning: InfluxDB may not be fully ready yet"
172+ fi
173+
174+ - name : Run tests
175+ run : |
176+ ./scripts/test.sh
177+
178+ - name : Stop InfluxDB
179+ if : always()
180+ run : |
181+ echo "Stopping InfluxDB..."
182+ if [ -n "$INFLUXDB_PID" ]; then
183+ kill $INFLUXDB_PID 2>/dev/null || true
184+ fi
185+ pkill -f influxd || true
186+ sleep 2
187+ echo "InfluxDB stopped"
188+
91189 windows :
92190 runs-on : windows-latest
93191
0 commit comments