30
30
with :
31
31
go-version : ${{ env.GO_VERSION }}
32
32
cache : false
33
+
34
+ - name : Configure Go for ec2-user
35
+ run : |
36
+ # Ensure Go is properly configured for ec2-user
37
+ chown -R ec2-user:staff $GOPATH || true
38
+ chown -R ec2-user:staff $RUNNER_TOOL_CACHE/go || true
33
39
# - name: Clean up previous files
34
40
# run: |
35
41
# sudo -u ec2-user bash rm -rf /opt/finch
@@ -44,55 +50,55 @@ jobs:
44
50
# Debug step to see available users
45
51
- name : List available users and system info
46
52
run : |
47
- echo "Current user: $(whoami)"
53
+ su ec2-user -c ' echo "Current user: $(whoami)"
48
54
echo "Current user ID: $(id -u)"
49
55
echo "Current user home: $HOME"
50
56
echo "Console user: $(stat -f "%Su" /dev/console)"
51
57
echo "All users:"
52
- dscl . -list /Users | grep -v '^_'
58
+ dscl . -list /Users | grep -v "^_"
53
59
echo "Users with home directories:"
54
60
ls -la /Users/
55
61
echo "Environment variables:"
56
62
env | sort
57
63
echo "Brew info:"
58
64
which brew || echo "brew not found in PATH"
59
- echo "PATH: $PATH"
65
+ echo "PATH: $PATH"'
60
66
61
67
- name : Install Rosetta 2
62
- run : echo "A" | softwareupdate --install-rosetta || true
68
+ run : su ec2-user -c ' echo "A" | softwareupdate --install-rosetta || true'
63
69
64
70
# Fix Homebrew permissions and setup environment
65
71
- name : Fix Homebrew permissions and setup environment
66
72
run : |
67
73
echo "Fixing Homebrew permissions for ec2-user..."
68
- sudo chown -R ec2-user:staff /opt/homebrew
74
+ chown -R ec2-user:staff /opt/homebrew
69
75
70
76
# Create a cache directory that ec2-user can access
71
- sudo mkdir -p /tmp/homebrew-cache
72
- sudo chown -R ec2-user:staff /tmp/homebrew-cache
77
+ mkdir -p /tmp/homebrew-cache
78
+ chown -R ec2-user:staff /tmp/homebrew-cache
73
79
74
80
# Create a .brewrc file for ec2-user with environment settings
75
- sudo -u ec2-user bash -c 'cat > /Users/ec2-user/.brewrc << EOF
81
+ su ec2-user -c 'cat > /Users/ec2-user/.brewrc << EOF
76
82
export HOMEBREW_NO_AUTO_UPDATE=1
77
83
export HOMEBREW_NO_INSTALL_CLEANUP=1
78
84
export HOMEBREW_CACHE=/tmp/homebrew-cache
79
85
export HOMEBREW_NO_ENV_HINTS=1
80
86
EOF'
81
87
82
88
# Make sure ec2-user sources the .brewrc file
83
- sudo -u ec2-user bash -c 'echo "source /Users/ec2-user/.brewrc" >> /Users/ec2-user/.zshrc'
84
- sudo -u ec2-user bash -c 'echo "source /Users/ec2-user/.brewrc" >> /Users/ec2-user/.bashrc'
89
+ su ec2-user -c 'echo "source /Users/ec2-user/.brewrc" >> /Users/ec2-user/.zshrc'
90
+ su ec2-user -c 'echo "source /Users/ec2-user/.brewrc" >> /Users/ec2-user/.bashrc'
85
91
86
92
# Install dependencies using ec2-user with custom environment
87
93
- name : Install dependencies
88
94
run : |
89
95
echo "Installing dependencies as ec2-user..."
90
96
91
97
# Run brew with custom environment
92
- sudo -u ec2-user bash -c 'source /Users/ec2-user/.brewrc && brew install lz4 automake autoconf libtool yq'
98
+ su ec2-user -c 'source /Users/ec2-user/.brewrc && brew install lz4 automake autoconf libtool yq'
93
99
94
100
# Verify installation
95
- sudo -u ec2-user bash -c 'source /Users/ec2-user/.brewrc && brew list | grep lz4 || echo "lz4 not installed"'
101
+ su ec2-user -c 'source /Users/ec2-user/.brewrc && brew list | grep lz4 || echo "lz4 not installed"'
96
102
shell : bash
97
103
98
104
# Install Finch
@@ -101,39 +107,47 @@ jobs:
101
107
echo "Installing Finch as ec2-user..."
102
108
103
109
# Run brew with custom environment
104
- sudo -u ec2-user bash -c 'source /Users/ec2-user/.brewrc && brew install finch --cask'
110
+ su ec2-user -c 'source /Users/ec2-user/.brewrc && brew install finch --cask'
105
111
106
112
# Verify installation
107
- sudo -u ec2-user bash -c 'source /Users/ec2-user/.brewrc && brew list | grep finch || echo "finch not installed"'
113
+ su ec2-user -c 'source /Users/ec2-user/.brewrc && brew list | grep finch || echo "finch not installed"'
108
114
109
115
# Create .finch directory and config for ec2-user
110
116
echo "Creating .finch directory and config for ec2-user..."
111
- sudo -u ec2-user bash -c 'mkdir -p /Users/ec2-user/.finch'
112
- sudo -u ec2-user bash -c 'echo "cpus: 4" > /Users/ec2-user/.finch/finch.yaml'
113
- sudo -u ec2-user bash -c 'echo "memory: 8GiB" >> /Users/ec2-user/.finch/finch.yaml'
117
+ su ec2-user -c 'mkdir -p /Users/ec2-user/.finch'
118
+ su ec2-user -c 'echo "cpus: 4" > /Users/ec2-user/.finch/finch.yaml'
119
+ su ec2-user -c 'echo "memory: 8GiB" >> /Users/ec2-user/.finch/finch.yaml'
120
+
121
+ # Fix ownership of var/run directories
122
+ echo "Fixing ownership of /private/var/run directories..."
123
+ chown -R root:wheel /private/var/run
124
+ mkdir -p /private/var/run/finch-lima
125
+ chown -R root:wheel /private/var/run/finch-lima
114
126
115
127
# Check finch version with HOME set to ec2-user's home
116
128
echo "Checking finch version..."
117
- if ! sudo -u ec2-user bash -c 'HOME=/Users/ec2-user finch version'; then
129
+ if ! su ec2-user -c 'HOME=/Users/ec2-user finch version'; then
118
130
echo "finch version command failed, starting VM..."
119
- sudo -u ec2-user bash -c 'HOME=/Users/ec2-user finch vm start'
131
+ su ec2-user -c 'HOME=/Users/ec2-user finch vm remove'
132
+ su ec2-user -c 'HOME=/Users/ec2-user finch vm init'
133
+ su ec2-user -c 'HOME=/Users/ec2-user finch vm start'
120
134
fi
121
135
shell : bash
122
136
123
137
# Check for Finch socket
124
138
- name : Check for Finch socket
125
139
run : |
126
- echo "Checking for Finch socket at /Applications/Finch/lima/data/finch/sock/finch.sock..."
140
+ su ec2-user -c ' echo "Checking for Finch socket at /Applications/Finch/lima/data/finch/sock/finch.sock..."
127
141
128
142
# Check if the socket file exists
129
- if sudo -u ec2-user bash -c ' test -S /Applications/Finch/lima/data/finch/sock/finch.sock' ; then
143
+ if test -S /Applications/Finch/lima/data/finch/sock/finch.sock; then
130
144
echo "Socket file exists"
131
145
else
132
146
echo "ERROR: Socket file not found at expected location /Applications/Finch/lima/data/finch/sock/finch.sock"
133
147
exit 1
134
- fi
148
+ fi'
135
149
136
- # Store the socket path for later steps
150
+ # Store the socket path for later steps (this needs to run as root to modify GITHUB_ENV)
137
151
echo "SOCKET_PATH=/Applications/Finch/lima/data/finch/sock/finch.sock" >> $GITHUB_ENV
138
152
shell : bash
139
153
@@ -144,12 +158,17 @@ jobs:
144
158
persist-credentials : false
145
159
submodules : recursive
146
160
ssh-user : ec2-user
161
+
162
+ - name : Configure workspace for ec2-user
163
+ run : |
164
+ # Ensure workspace is properly owned by ec2-user
165
+ chown -R ec2-user:staff ${{ github.workspace }}
147
166
# Run e2e tests inside the Finch VM
148
167
- name : Run e2e tests
149
168
run : |
150
169
echo "Running e2e tests as ec2-user..."
151
170
152
- sudo -u ec2-user bash -c "cd ${{ github.workspace }} && DOCKER_HOST=unix:///Applications/Finch/lima/data/finch/sock/finch.sock make test-e2e-inside-vm"
171
+ su ec2-user -c "cd ${{ github.workspace }} && DOCKER_HOST=unix:///Applications/Finch/lima/data/finch/sock/finch.sock make test-e2e-inside-vm"
153
172
shell : bash
154
173
155
174
# Run e2e tests with OPA authorization
@@ -158,7 +177,7 @@ jobs:
158
177
echo "Running e2e tests with OPA authorization as ec2-user..."
159
178
160
179
echo "Using DOCKER_HOST=unix:///Applications/Finch/lima/data/finch/sock/finch.sock"
161
- sudo -u ec2-user bash -c "cd ${{ github.workspace }} && DOCKER_HOST=unix:///Applications/Finch/lima/data/finch/sock/finch.sock make test-e2e-opa"
180
+ su ec2-user -c "cd ${{ github.workspace }} && DOCKER_HOST=unix:///Applications/Finch/lima/data/finch/sock/finch.sock make test-e2e-opa"
162
181
shell : bash
163
182
164
183
# Cleanup
@@ -167,6 +186,6 @@ jobs:
167
186
echo "Stopping Finch VM as ec2-user..."
168
187
169
188
# Stop VM using ec2-user with custom environment
170
- sudo -u ec2-user bash -c "source /Users/ec2-user/.brewrc && HOME=/Users/ec2-user finch vm stop"
189
+ su ec2-user -c "source /Users/ec2-user/.brewrc && HOME=/Users/ec2-user finch vm stop"
171
190
shell : bash
172
191
if : always()
0 commit comments