Skip to content

Commit a067139

Browse files
committed
chore: run e2e in finch vm
Signed-off-by: Arjun Raja Yogidas <[email protected]>
1 parent 7ec7d02 commit a067139

File tree

1 file changed

+183
-0
lines changed

1 file changed

+183
-0
lines changed

.github/workflows/mac-test.yaml

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
name: macOS Tests
2+
on:
3+
push:
4+
branches:
5+
- main
6+
paths-ignore:
7+
- '**.md'
8+
pull_request:
9+
branches:
10+
- main
11+
paths-ignore:
12+
- '**.md'
13+
workflow_dispatch:
14+
env:
15+
GO_VERSION: '1.23.8'
16+
jobs:
17+
mac-test:
18+
runs-on: codebuild-Test-fd-codebuild-mac-${{ github.run_id }}-${{ github.run_attempt }}
19+
timeout-minutes: 30
20+
steps:
21+
- name: Clean macOS runner workspace
22+
run: |
23+
rm -rf ${{ github.workspace }}/*
24+
# - name: Configure Git for ec2-user
25+
# run: |
26+
# sudo -u ec2-user bash -c 'HOME=/Users/ec2-user git config --global --add safe.directory "*"'
27+
# shell: bash
28+
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
29+
with:
30+
go-version: ${{ env.GO_VERSION }}
31+
cache: false
32+
- name: Clean up previous files
33+
run: |
34+
sudo rm -rf /opt/finch
35+
sudo rm -rf ~/.finch
36+
sudo rm -rf ./_output
37+
if pgrep '^qemu-system'; then
38+
sudo pkill '^qemu-system'
39+
fi
40+
if pgrep '^socket_vmnet'; then
41+
sudo pkill '^socket_vmnet'
42+
fi
43+
# Debug step to see available users
44+
- name: List available users and system info
45+
run: |
46+
echo "Current user: $(whoami)"
47+
echo "Current user ID: $(id -u)"
48+
echo "Current user home: $HOME"
49+
echo "Console user: $(stat -f "%Su" /dev/console)"
50+
echo "All users:"
51+
dscl . -list /Users | grep -v '^_'
52+
echo "Users with home directories:"
53+
ls -la /Users/
54+
echo "Environment variables:"
55+
env | sort
56+
echo "Brew info:"
57+
which brew || echo "brew not found in PATH"
58+
echo "PATH: $PATH"
59+
60+
- name: Install Rosetta 2
61+
run: echo "A" | softwareupdate --install-rosetta || true
62+
63+
# Fix Homebrew permissions and setup environment
64+
- name: Fix Homebrew permissions and setup environment
65+
run: |
66+
echo "Fixing Homebrew permissions for ec2-user..."
67+
sudo chown -R ec2-user:staff /opt/homebrew
68+
69+
# Create a cache directory that ec2-user can access
70+
sudo mkdir -p /tmp/homebrew-cache
71+
sudo chown -R ec2-user:staff /tmp/homebrew-cache
72+
73+
# Create a .brewrc file for ec2-user with environment settings
74+
sudo -u ec2-user bash -c 'cat > /Users/ec2-user/.brewrc << EOF
75+
export HOMEBREW_NO_AUTO_UPDATE=1
76+
export HOMEBREW_NO_INSTALL_CLEANUP=1
77+
export HOMEBREW_CACHE=/tmp/homebrew-cache
78+
export HOMEBREW_NO_ENV_HINTS=1
79+
EOF'
80+
81+
# Make sure ec2-user sources the .brewrc file
82+
sudo -u ec2-user bash -c 'echo "source /Users/ec2-user/.brewrc" >> /Users/ec2-user/.zshrc'
83+
sudo -u ec2-user bash -c 'echo "source /Users/ec2-user/.brewrc" >> /Users/ec2-user/.bashrc'
84+
85+
# Install dependencies using ec2-user with custom environment
86+
- name: Install dependencies
87+
run: |
88+
echo "Installing dependencies as ec2-user..."
89+
90+
# Run brew with custom environment
91+
sudo -u ec2-user bash -c 'source /Users/ec2-user/.brewrc && brew install lz4 automake autoconf libtool yq'
92+
93+
# Verify installation
94+
sudo -u ec2-user bash -c 'source /Users/ec2-user/.brewrc && brew list | grep lz4 || echo "lz4 not installed"'
95+
shell: bash
96+
97+
# Install Finch
98+
- name: Install Finch
99+
run: |
100+
echo "Installing Finch as ec2-user..."
101+
102+
# Run brew with custom environment
103+
sudo -u ec2-user bash -c 'source /Users/ec2-user/.brewrc && brew install finch --cask'
104+
105+
# Verify installation
106+
sudo -u ec2-user bash -c 'source /Users/ec2-user/.brewrc && brew list | grep finch || echo "finch not installed"'
107+
108+
# Find finch executable
109+
echo "Searching for finch executable..."
110+
sudo -u ec2-user bash -c 'which finch || echo "finch not in PATH"'
111+
sudo -u ec2-user bash -c 'find /Applications -name finch || echo "finch not found in /Applications"'
112+
sudo -u ec2-user bash -c 'find /usr/local -name finch || echo "finch not found in /usr/local"'
113+
114+
# Set finch path for later steps
115+
FINCH_PATH=$(sudo -u ec2-user bash -c 'which finch || echo "/usr/local/bin/finch"')
116+
echo "FINCH_PATH=$FINCH_PATH" >> $GITHUB_ENV
117+
118+
# Create .finch directory and config for ec2-user
119+
echo "Creating .finch directory and config for ec2-user..."
120+
sudo -u ec2-user bash -c 'mkdir -p /Users/ec2-user/.finch'
121+
sudo -u ec2-user bash -c 'echo "cpus: 4" > /Users/ec2-user/.finch/finch.yaml'
122+
sudo -u ec2-user bash -c 'echo "memory: 8GiB" >> /Users/ec2-user/.finch/finch.yaml'
123+
124+
# Check finch version with HOME set to ec2-user's home
125+
echo "Checking finch version..."
126+
if ! sudo -u ec2-user bash -c 'HOME=/Users/ec2-user finch version'; then
127+
echo "finch version command failed, starting VM..."
128+
sudo -u ec2-user bash -c 'HOME=/Users/ec2-user finch vm start'
129+
fi
130+
shell: bash
131+
132+
133+
134+
# Check for Finch socket
135+
- name: Check for Finch socket
136+
run: |
137+
echo "Checking for Finch socket at /Applications/Finch/lima/data/finch/sock/finch.sock..."
138+
139+
# Check if the socket file exists
140+
if sudo -u ec2-user bash -c 'test -S /Applications/Finch/lima/data/finch/sock/finch.sock'; then
141+
echo "Socket file exists"
142+
else
143+
echo "ERROR: Socket file not found at expected location /Applications/Finch/lima/data/finch/sock/finch.sock"
144+
exit 1
145+
fi
146+
147+
# Store the socket path for later steps
148+
echo "SOCKET_PATH=/Applications/Finch/lima/data/finch/sock/finch.sock" >> $GITHUB_ENV
149+
shell: bash
150+
151+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
152+
with:
153+
# We need to get all the git tags to make version injection work. See VERSION in Makefile for more detail.
154+
fetch-depth: 0
155+
persist-credentials: false
156+
submodules: recursive
157+
ssh-user: ec2-user
158+
# Run e2e tests inside the Finch VM
159+
- name: Run e2e tests
160+
run: |
161+
echo "Running e2e tests as ec2-user..."
162+
163+
cd ${{ github.workspace }} && DOCKER_HOST=unix:///Applications/Finch/lima/data/finch/sock/finch.sock make test-e2e
164+
shell: bash
165+
166+
# Run e2e tests with OPA authorization
167+
- name: Run opa e2e tests
168+
run: |
169+
echo "Running e2e tests with OPA authorization as ec2-user..."
170+
171+
echo "Using DOCKER_HOST=unix:///Applications/Finch/lima/data/finch/sock/finch.sock"
172+
sudo -u ec2-user bash -c "cd ${{ github.workspace }} && DOCKER_HOST=unix:///Applications/Finch/lima/data/finch/sock/finch.sock make test-e2e-opa"
173+
shell: bash
174+
175+
# Cleanup
176+
- name: Stop Finch VM
177+
run: |
178+
echo "Stopping Finch VM as ec2-user..."
179+
180+
# Stop VM using ec2-user with custom environment
181+
sudo -u ec2-user bash -c "source /Users/ec2-user/.brewrc && HOME=/Users/ec2-user finch vm stop"
182+
shell: bash
183+
if: always()

0 commit comments

Comments
 (0)