chore: run e2e in finch vm #7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: macOS Tests | |
| on: | |
| push: | |
| branches: | |
| - main | |
| paths-ignore: | |
| - '**.md' | |
| pull_request: | |
| branches: | |
| - main | |
| paths-ignore: | |
| - '**.md' | |
| workflow_dispatch: | |
| env: | |
| GO_VERSION: '1.23.8' | |
| jobs: | |
| mac-test: | |
| runs-on: codebuild-Test-fd-codebuild-mac-${{ github.run_id }}-${{ github.run_attempt }} | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Clean macOS runner workspace | |
| run: | | |
| rm -rf ${{ github.workspace }}/* | |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| with: | |
| # We need to get all the git tags to make version injection work. See VERSION in Makefile for more detail. | |
| fetch-depth: 0 | |
| persist-credentials: false | |
| submodules: recursive | |
| - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 | |
| with: | |
| go-version: ${{ env.GO_VERSION }} | |
| cache: false | |
| - name: Clean up previous files | |
| run: | | |
| sudo rm -rf /opt/finch | |
| sudo rm -rf ~/.finch | |
| sudo rm -rf ./_output | |
| if pgrep '^qemu-system'; then | |
| sudo pkill '^qemu-system' | |
| fi | |
| if pgrep '^socket_vmnet'; then | |
| sudo pkill '^socket_vmnet' | |
| fi | |
| # Debug step to see available users | |
| - name: List available users and system info | |
| run: | | |
| echo "Current user: $(whoami)" | |
| echo "Current user ID: $(id -u)" | |
| echo "Current user home: $HOME" | |
| echo "Console user: $(stat -f "%Su" /dev/console)" | |
| echo "All users:" | |
| dscl . -list /Users | grep -v '^_' | |
| echo "Users with home directories:" | |
| ls -la /Users/ | |
| echo "Environment variables:" | |
| env | sort | |
| echo "Brew info:" | |
| which brew || echo "brew not found in PATH" | |
| echo "PATH: $PATH" | |
| - name: Install Rosetta 2 | |
| run: echo "A" | softwareupdate --install-rosetta || true | |
| # Fix Homebrew permissions | |
| - name: Fix Homebrew permissions | |
| run: | | |
| echo "Fixing Homebrew permissions for ec2-user..." | |
| sudo chown -R ec2-user:staff /opt/homebrew | |
| sudo mkdir -p /var/root/Library || true | |
| sudo chmod 755 /var/root/Library || true | |
| # Install dependencies using ec2-user | |
| - name: Install dependencies | |
| run: | | |
| echo "Installing dependencies as ec2-user..." | |
| # Find brew path for ec2-user | |
| BREW_PATH=$(sudo -u ec2-user which brew || echo "/opt/homebrew/bin/brew") | |
| # Install dependencies using ec2-user | |
| sudo -u ec2-user $BREW_PATH install lz4 automake autoconf libtool yq | |
| # Verify installation | |
| sudo -u ec2-user $BREW_PATH list | grep lz4 || echo "lz4 not installed" | |
| shell: zsh {0} | |
| # Install Finch | |
| - name: Install Finch | |
| run: | | |
| echo "Installing Finch as ec2-user..." | |
| # Find brew path for ec2-user | |
| BREW_PATH=$(sudo -u ec2-user which brew || echo "/opt/homebrew/bin/brew") | |
| # Install Finch using ec2-user | |
| sudo -u ec2-user $BREW_PATH install finch | |
| # Verify installation | |
| sudo -u ec2-user $BREW_PATH list | grep finch || echo "finch not installed" | |
| sudo -u ec2-user which finch || echo "finch not in PATH" | |
| shell: zsh {0} | |
| # Initialize and start Finch VM | |
| - name: Initialize Finch VM | |
| run: | | |
| echo "Initializing Finch VM as ec2-user..." | |
| # Find finch path for ec2-user | |
| FINCH_PATH=$(sudo -u ec2-user which finch || echo "/opt/homebrew/bin/finch") | |
| # Initialize VM using ec2-user | |
| sudo -u ec2-user $FINCH_PATH vm init | |
| - name: Start Finch VM | |
| run: | | |
| echo "Starting Finch VM as ec2-user..." | |
| # Find finch path for ec2-user | |
| FINCH_PATH=$(sudo -u ec2-user which finch || echo "/opt/homebrew/bin/finch") | |
| # Start VM using ec2-user | |
| sudo -u ec2-user $FINCH_PATH vm start | |
| # Verify VM is running | |
| sudo -u ec2-user $FINCH_PATH vm ls || echo "Cannot verify if VM is running" | |
| # Run e2e tests inside the Finch VM | |
| - name: Run e2e tests | |
| run: | | |
| echo "Running e2e tests as ec2-user..." | |
| # Run tests using ec2-user | |
| sudo -u ec2-user bash -c "cd ${{ github.workspace }} && DOCKER_HOST=unix:///Applications/Finch/lima/data/finch/sock/finch.sock make test-e2e" | |
| # Run e2e tests with OPA authorization | |
| - name: Run opa e2e tests | |
| run: | | |
| echo "Running e2e tests with OPA authorization as ec2-user..." | |
| # Run tests using ec2-user | |
| sudo -u ec2-user bash -c "cd ${{ github.workspace }} && DOCKER_HOST=unix:///Applications/Finch/lima/data/finch/sock/finch.sock make test-e2e-opa" | |
| # Cleanup | |
| - name: Stop Finch VM | |
| run: | | |
| echo "Stopping Finch VM as ec2-user..." | |
| # Find finch path for ec2-user | |
| FINCH_PATH=$(sudo -u ec2-user which finch || echo "/opt/homebrew/bin/finch") | |
| # Stop VM using ec2-user | |
| sudo -u ec2-user $FINCH_PATH vm stop | |
| if: always() |