-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #20691 from cevich/mac_podman_machine_ci
Implement bare-metal Mac M1 podman-machine testing
- Loading branch information
Showing
7 changed files
with
196 additions
and
61 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
#!/bin/bash | ||
|
||
# This script is intended to be called by Cirrus-CI on a Mac M1 persistent worker. | ||
# It performs a best-effort attempt at cleaning up from one task execution to the next. | ||
# Since it run both before and after tasks, it must exit cleanly if there was a cleanup | ||
# failure (i.e. file or directory not found). | ||
|
||
# Help anybody debugging side-effects, since failures are ignored (by necessity). | ||
set +e -x | ||
|
||
# These are the main processes which could leak out of testing. | ||
killall podman vfkit gvproxy make go ginkgo | ||
|
||
# This is defined as $TMPDIR during setup. Name must be kept | ||
# "short" as sockets may reside here. Darwin suffers from | ||
# the same limited socket-pathname character-length restriction | ||
# as Linux. | ||
rm -rf /private/tmp/ci/* /private/tmp/ci/.??* | ||
|
||
# Don't clobber the $CIRRUS_WORKING_DIR for this (running) task. | ||
# shellcheck disable=SC2154 | ||
find "${ORIGINAL_HOME:-$HOME}/ci" -mindepth 1 -maxdepth 1 \ | ||
-not -name "*task-${CIRRUS_TASK_ID}*" -prune -exec rm -rf '{}' + | ||
|
||
# Bash scripts exit with the status of the last command. | ||
true |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
#!/bin/bash | ||
|
||
set -euo pipefail | ||
|
||
# This script is intended to be called by Cirrus-CI on a Mac M1 persistent worker. | ||
# It runs /after/ `mac_setup.sh` to help developers debug any environment | ||
# related issues. It must not make any actualy changes to the environment. | ||
|
||
# Many variables can affect operations, make them all known to assist debugging. | ||
echo "Selection of current env. vars:" | ||
for env_var_name in $(awk 'BEGIN{for(v in ENVIRON) print v}' | grep -Eiv '(^PATH$)|(^BASH_FUNC)|(^_.*)' | sort) | ||
do | ||
echo " ${env_var_name}=${!env_var_name}" | ||
done | ||
|
||
# The latest toolchain is always installed when instances are created. Make it known | ||
# what version that actually is. | ||
go version | ||
|
||
# Golang is sensitive to a collection of key variables. Make them known to assist | ||
# with any debugging. N/B: Most filepath values should point somewhere under $HOME/ci/ | ||
go env | ||
|
||
# The latest version is installed system-wide when instances are created. Make the | ||
# current version known. | ||
vfkit --version |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
#!/bin/bash | ||
|
||
# This script is intended to be called by Cirrus-CI on a Mac M1 persistent worker. | ||
# It runs after the preparatory `mac_cleanup.sh` to performs all the user-level | ||
# environment setup required to execute testing. It assumes whatever system-wide | ||
# setup is required, has already happened and was successful. | ||
|
||
set -euo pipefail | ||
|
||
# The otherwise standard `/etc/ci_environment` file cannot be used in this | ||
# context, because the system is shared for multiple tasks. Instead, persist | ||
# env. vars required during /subsequent/ testing steps via a "magic" Cirrus-CI | ||
# mechanism. These cannot be set in the task YAML because they would interfere | ||
# with repo. cloning and task preparation. | ||
# Ref: | ||
# https://cirrus-ci.org/guide/tips-and-tricks/#setting-environment-variables-from-scripts | ||
|
||
# Tests expect to call compiled binaries first, make sure they're found first. | ||
# shellcheck disable=SC2154 | ||
echo "PATH=$CIRRUS_WORKING_DIR/bin/darwin:$PATH" >> $CIRRUS_ENV | ||
|
||
# Post-task cleanup needs to know the actual user home directory | ||
# shellcheck disable=SC2154 | ||
echo "ORIGINAL_HOME=$HOME" >> $CIRRUS_ENV | ||
|
||
# Help isolate CI-operations from system-operations and simplify task cleanup. | ||
# shellcheck disable=SC2154 | ||
echo "HOME=$HOME/ci" >> $CIRRUS_ENV | ||
# shellcheck disable=SC2154 | ||
echo "TMPDIR=/private/tmp/ci" >> $CIRRUS_ENV | ||
|
||
# Removed completely during cleanup. | ||
mkdir -p /private/tmp/ci |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,42 +1,38 @@ | ||
# Working README for running the machine tests | ||
|
||
Note: you must not have any machines defined before running tests | ||
## Linux | ||
|
||
### QEMU | ||
|
||
`make localmachine` | ||
|
||
## Microsoft Windows | ||
|
||
### HyperV | ||
|
||
1. Open a powershell as admin | ||
1. $env:CONTAINERS_MACHINE_PROVIDER="hyperv" | ||
1. `./winmake localmachine` | ||
|
||
Note: To run specific test files, add the test files to the end of the winmake command: | ||
|
||
`./winmake localmachine "basic_test.go start_test.go"` | ||
|
||
### WSL | ||
1. Open a powershell as a regular user | ||
1. Build and copy win-sshproxy into bin/ | ||
1. `./winmake localmachine` | ||
|
||
Note: To run specific test files, add the test files to the end of the winmake command: | ||
|
||
`./winmake localmachine "basic_test.go start_test.go"` | ||
|
||
## MacOS | ||
|
||
### Apple Hypervisor | ||
|
||
1. `make podman-remote` | ||
1. `make .install.ginkgo` | ||
1. `export TMPDIR=/Users/<yourname>` | ||
1. `export CONTAINERS_MACHINE_PROVIDER="applehv"` | ||
1. `export MACHINE_IMAGE="https://fedorapeople.org/groups/podman/testing/applehv/arm64/fedora-coreos-38.20230925.dev.0-applehv.aarch64.raw.gz"` | ||
1. `./test/tools/build/ginkgo -vv --tags "remote exclude_graphdriver_btrfs btrfs_noversion exclude_graphdriver_devicemapper containers_image_openpgp remote" -timeout=90m --trace --no-color pkg/machine/e2e/.` | ||
|
||
Note: Add `--focus-file "basic_test.go" ` to only run basic test | ||
# Working README for running the machine tests | ||
|
||
Note: you must not have any machines defined before running tests | ||
## Linux | ||
|
||
### QEMU | ||
|
||
`make localmachine` | ||
|
||
## Microsoft Windows | ||
|
||
### HyperV | ||
|
||
1. Open a powershell as admin | ||
1. $env:CONTAINERS_MACHINE_PROVIDER="hyperv" | ||
1. `./winmake localmachine` | ||
|
||
Note: To run specific test files, add the test files to the end of the winmake command: | ||
|
||
`./winmake localmachine "basic_test.go start_test.go"` | ||
|
||
### WSL | ||
1. Open a powershell as a regular user | ||
1. Build and copy win-sshproxy into bin/ | ||
1. `./winmake localmachine` | ||
|
||
Note: To run specific test files, add the test files to the end of the winmake command: | ||
|
||
`./winmake localmachine "basic_test.go start_test.go"` | ||
|
||
## MacOS | ||
|
||
### Apple Hypervisor | ||
|
||
1. `make podman-remote` | ||
1. `export CONTAINERS_MACHINE_PROVIDER="applehv"` | ||
1. `export MACHINE_IMAGE="https://fedorapeople.org/groups/podman/testing/applehv/arm64/fedora-coreos-38.20230925.dev.0-applehv.aarch64.raw.gz"` | ||
1. `make localmachine` (Add `FOCUS_FILE=basic_test.go` to only run basic test) |