mirror of
https://github.com/apple/container.git
synced 2026-07-13 13:07:06 +00:00
CI observability enhancements. (#1193)
- Adds a a `--log-root` option to `swift system start`, propagating the value as `CONTAINER_LOG_ROOT` to services for logging to files instead of the OS log facility. This is not a "production" capability as it neither merges nor rotates logs. - Currently we don't collect logs on CI builds, and we don't have permission to run the `log` command there. The PR adds `--log-root` to the CI test phase, archives the results, and uploads the archive as an artifact. - Use FilePath from swift-system for the log root. Foundation URL is a bit of a footgun for filesystem paths, so unless we identify a showstopper, we should incrementally transition to this type everywhere except where we really need network URLs. - Output the hostname of the CI runner at the start of the test phase so we can identify runner-specific issues where they exist. - Fix formatting for log messages with multiple metadata items, and fix unstructured messages on instances that weren't found using `grep -r 'log\.' Sources`. - Adds command reference documentation for `--log-root`.
This commit is contained in:
@@ -71,16 +71,38 @@ jobs:
|
||||
- name: Test the container project
|
||||
run: |
|
||||
APP_ROOT=$(mktemp -d -p "${RUNNER_TEMP}")
|
||||
LOG_ROOT="${APP_ROOT}/logs"
|
||||
trap 'rm -rf "${APP_ROOT}"; echo Removing data directory ${APP_ROOT}' EXIT
|
||||
echo "Created data directory ${APP_ROOT}"
|
||||
echo "created data directory: ${APP_ROOT}"
|
||||
echo "hostname: $(hostname)"
|
||||
export NO_PROXY="${NO_PROXY},192.168.0.0/16,fe80::/10"
|
||||
echo NO_PROXY=${NO_PROXY}
|
||||
export no_proxy="${no_proxy},192.168.0.0/16,fe80::/10"
|
||||
echo no_proxy=${no_proxy}
|
||||
make APP_ROOT="${APP_ROOT}" test install-kernel integration
|
||||
echo "APP_ROOT=${APP_ROOT}" >> $GITHUB_ENV
|
||||
echo "LOG_ROOT=${LOG_ROOT}" >> $GITHUB_ENV
|
||||
make APP_ROOT="${APP_ROOT}" LOG_ROOT="${LOG_ROOT}" test install-kernel integration || status=$?
|
||||
if [ -d "${LOG_ROOT}" ] ; then
|
||||
echo "Collecting logs from ${LOG_ROOT}..."
|
||||
tar czf container-logs.tar.gz -C "$(dirname "${LOG_ROOT}")" "$(basename "${LOG_ROOT}")"
|
||||
echo "Log archive created: container-logs.tar.gz"
|
||||
fi
|
||||
if [ "${status:-0}" -ne "0" ] ; then
|
||||
echo "Tests failed with status: ${status}"
|
||||
exit ${status}
|
||||
fi
|
||||
env:
|
||||
DEVELOPER_DIR: "/Applications/Xcode-latest.app/Contents/Developer"
|
||||
|
||||
- name: Upload logs if present
|
||||
if: always()
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
||||
with:
|
||||
name: container-test-logs
|
||||
path: container-logs.tar.gz
|
||||
retention-days: 14
|
||||
if-no-files-found: ignore
|
||||
|
||||
- name: Save documentation artifact
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
||||
with:
|
||||
|
||||
Reference in New Issue
Block a user