3030 with :
3131 go-version : ${{ env.GO_VERSION }}
3232 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
3339 # - name: Clean up previous files
3440 # run: |
3541 # sudo -u ec2-user bash rm -rf /opt/finch
@@ -44,55 +50,55 @@ jobs:
4450 # Debug step to see available users
4551 - name : List available users and system info
4652 run : |
47- echo "Current user: $(whoami)"
53+ su ec2-user -c ' echo "Current user: $(whoami)"
4854 echo "Current user ID: $(id -u)"
4955 echo "Current user home: $HOME"
5056 echo "Console user: $(stat -f "%Su" /dev/console)"
5157 echo "All users:"
52- dscl . -list /Users | grep -v '^_'
58+ dscl . -list /Users | grep -v "^_"
5359 echo "Users with home directories:"
5460 ls -la /Users/
5561 echo "Environment variables:"
5662 env | sort
5763 echo "Brew info:"
5864 which brew || echo "brew not found in PATH"
59- echo "PATH: $PATH"
65+ echo "PATH: $PATH"'
6066
6167 - name : Install Rosetta 2
62- run : echo "A" | softwareupdate --install-rosetta || true
68+ run : su ec2-user -c ' echo "A" | softwareupdate --install-rosetta || true'
6369
6470 # Fix Homebrew permissions and setup environment
6571 - name : Fix Homebrew permissions and setup environment
6672 run : |
6773 echo "Fixing Homebrew permissions for ec2-user..."
68- sudo chown -R ec2-user:staff /opt/homebrew
74+ chown -R ec2-user:staff /opt/homebrew
6975
7076 # 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
7379
7480 # 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
7682 export HOMEBREW_NO_AUTO_UPDATE=1
7783 export HOMEBREW_NO_INSTALL_CLEANUP=1
7884 export HOMEBREW_CACHE=/tmp/homebrew-cache
7985 export HOMEBREW_NO_ENV_HINTS=1
8086 EOF'
8187
8288 # 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'
8591
8692 # Install dependencies using ec2-user with custom environment
8793 - name : Install dependencies
8894 run : |
8995 echo "Installing dependencies as ec2-user..."
9096
9197 # 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'
9399
94100 # 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"'
96102 shell : bash
97103
98104 # Install Finch
@@ -101,39 +107,48 @@ jobs:
101107 echo "Installing Finch as ec2-user..."
102108
103109 # 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'
105111
106112 # 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"'
108114
109115 # Create .finch directory and config for ec2-user
110116 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
114126
115127 # Check finch version with HOME set to ec2-user's home
116128 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
118130 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 stop'
132+ su ec2-user -c 'HOME=/Users/ec2-user finch vm remove'
133+ su ec2-user -c 'HOME=/Users/ec2-user finch vm init'
134+ su ec2-user -c 'HOME=/Users/ec2-user finch vm start'
120135 fi
121136 shell : bash
122137
123138 # Check for Finch socket
124139 - name : Check for Finch socket
125140 run : |
126- echo "Checking for Finch socket at /Applications/Finch/lima/data/finch/sock/finch.sock..."
141+ su ec2-user -c ' echo "Checking for Finch socket at /Applications/Finch/lima/data/finch/sock/finch.sock..."
127142
128143 # 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
144+ if test -S /Applications/Finch/lima/data/finch/sock/finch.sock; then
130145 echo "Socket file exists"
131146 else
132147 echo "ERROR: Socket file not found at expected location /Applications/Finch/lima/data/finch/sock/finch.sock"
133148 exit 1
134- fi
149+ fi'
135150
136- # Store the socket path for later steps
151+ # Store the socket path for later steps (this needs to run as root to modify GITHUB_ENV)
137152 echo "SOCKET_PATH=/Applications/Finch/lima/data/finch/sock/finch.sock" >> $GITHUB_ENV
138153 shell : bash
139154
@@ -144,12 +159,17 @@ jobs:
144159 persist-credentials : false
145160 submodules : recursive
146161 ssh-user : ec2-user
162+
163+ - name : Configure workspace for ec2-user
164+ run : |
165+ # Ensure workspace is properly owned by ec2-user
166+ chown -R ec2-user:staff ${{ github.workspace }}
147167 # Run e2e tests inside the Finch VM
148168 - name : Run e2e tests
149169 run : |
150170 echo "Running e2e tests as ec2-user..."
151171
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"
172+ su ec2-user -c "cd ${{ github.workspace }} && DOCKER_HOST=unix:///Applications/Finch/lima/data/finch/sock/finch.sock make test-e2e-inside-vm"
153173 shell : bash
154174
155175 # Run e2e tests with OPA authorization
@@ -158,7 +178,7 @@ jobs:
158178 echo "Running e2e tests with OPA authorization as ec2-user..."
159179
160180 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"
181+ su ec2-user -c "cd ${{ github.workspace }} && DOCKER_HOST=unix:///Applications/Finch/lima/data/finch/sock/finch.sock make test-e2e-opa"
162182 shell : bash
163183
164184 # Cleanup
@@ -167,6 +187,6 @@ jobs:
167187 echo "Stopping Finch VM as ec2-user..."
168188
169189 # 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"
190+ su ec2-user -c "source /Users/ec2-user/.brewrc && HOME=/Users/ec2-user finch vm stop"
171191 shell : bash
172192 if : always()
0 commit comments