Skip to content

Commit 36beda4

Browse files
committed
macos arm with an influxdb binary
1 parent f0c7cba commit 36beda4

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed

.github/workflows/ci.yml

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)