mirror of
https://github.com/apple/swift-system-metrics.git
synced 2026-05-26 18:50:35 +00:00
Build example projects (#76)
Build the Examples in CI. ### Motivation: `swift-metrics-extras` now has an `Example/ServiceIntegration`, which depends on the package, but is not verified in the CI. ### Modifications: - `Scripts/test-examples.sh` added (inspired by the [`swift-configuration/Scripts/test-examples.sh`](https://github.com/apple/swift-configuration/blob/main/Scripts/test-examples.sh), but the structure is different and this one is more simple). - `pull_request` and `main` workflows use shared `apple/swift-nio/.github/workflows/swift_test_matrix.yml@main` to run the script. ### Result: `Example/ServiceIntegration` is being built in CI on Linux
This commit is contained in:
committed by
GitHub
parent
4c90e01c73
commit
ece01fd2a2
@@ -34,3 +34,32 @@ jobs:
|
||||
release-builds:
|
||||
name: Release builds
|
||||
uses: apple/swift-nio/.github/workflows/release_builds.yml@main
|
||||
|
||||
construct-example-packages-matrix:
|
||||
name: Construct example packages matrix
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
example-packages-matrix: '${{ steps.generate-matrix.outputs.example-packages-matrix }}'
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- id: generate-matrix
|
||||
run: echo "example-packages-matrix=$(curl -s https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | bash)" >> "$GITHUB_OUTPUT"
|
||||
env:
|
||||
MATRIX_LINUX_SETUP_COMMAND: git config --global --add safe.directory /swift-metrics-extras
|
||||
MATRIX_LINUX_COMMAND: ./Scripts/test-examples.sh
|
||||
MATRIX_LINUX_5_10_ENABLED: false
|
||||
MATRIX_LINUX_6_0_ENABLED: false
|
||||
MATRIX_LINUX_6_1_ENABLED: false
|
||||
MATRIX_LINUX_NIGHTLY_NEXT_ENABLED: false
|
||||
MATRIX_LINUX_NIGHTLY_MAIN_ENABLED: false
|
||||
|
||||
example-packages:
|
||||
name: Example packages
|
||||
needs: construct-example-packages-matrix
|
||||
uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main
|
||||
with:
|
||||
name: "Example packages"
|
||||
matrix_string: '${{ needs.construct-example-packages-matrix.outputs.example-packages-matrix }}'
|
||||
|
||||
@@ -38,3 +38,32 @@ jobs:
|
||||
release-builds:
|
||||
name: Release builds
|
||||
uses: apple/swift-nio/.github/workflows/release_builds.yml@main
|
||||
|
||||
construct-example-packages-matrix:
|
||||
name: Construct example packages matrix
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
example-packages-matrix: '${{ steps.generate-matrix.outputs.example-packages-matrix }}'
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- id: generate-matrix
|
||||
run: echo "example-packages-matrix=$(curl -s https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | bash)" >> "$GITHUB_OUTPUT"
|
||||
env:
|
||||
MATRIX_LINUX_SETUP_COMMAND: git config --global --add safe.directory /swift-metrics-extras
|
||||
MATRIX_LINUX_COMMAND: ./Scripts/test-examples.sh
|
||||
MATRIX_LINUX_5_10_ENABLED: false
|
||||
MATRIX_LINUX_6_0_ENABLED: false
|
||||
MATRIX_LINUX_6_1_ENABLED: false
|
||||
MATRIX_LINUX_NIGHTLY_NEXT_ENABLED: false
|
||||
MATRIX_LINUX_NIGHTLY_MAIN_ENABLED: false
|
||||
|
||||
example-packages:
|
||||
name: Build Examples
|
||||
needs: construct-example-packages-matrix
|
||||
uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main
|
||||
with:
|
||||
name: "Example packages"
|
||||
matrix_string: '${{ needs.construct-example-packages-matrix.outputs.example-packages-matrix }}'
|
||||
|
||||
@@ -33,3 +33,4 @@ Dockerfile
|
||||
Snippets/*
|
||||
dev/git.commit.template
|
||||
.unacceptablelanguageignore
|
||||
Scripts/*
|
||||
|
||||
Executable
+36
@@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
log() { printf -- "** %s\n" "$*" >&2; }
|
||||
error() { printf -- "** ERROR: %s\n" "$*" >&2; }
|
||||
fatal() { error "$@"; exit 1; }
|
||||
|
||||
log "Checking required executables..."
|
||||
SWIFT_BIN=${SWIFT_BIN:-$(command -v swift || xcrun -f swift)} || fatal "SWIFT_BIN unset and no swift on PATH"
|
||||
|
||||
CURRENT_SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
REPO_ROOT="$(git -C "${CURRENT_SCRIPT_DIR}" rev-parse --show-toplevel)"
|
||||
PACKAGE_NAME=$(basename "$REPO_ROOT")
|
||||
TMP_DIR=$(/usr/bin/mktemp -d -p "${TMPDIR-/tmp}" "$(basename "$0").XXXXXXXXXX")
|
||||
WORK_DIR="$TMP_DIR/$PACKAGE_NAME"
|
||||
/bin/mkdir -p "$WORK_DIR"
|
||||
|
||||
git archive HEAD "${REPO_ROOT}" --format tar | tar -C "${WORK_DIR}" -xvf-
|
||||
|
||||
EXAMPLES_PATH="$WORK_DIR/Examples"
|
||||
for EXAMPLE_PACKAGE_PATH in $(find "${EXAMPLES_PATH}" -maxdepth 2 -name Package.swift -type f -print0 | xargs -0 dirname | sort); do
|
||||
EXAMPLE_PACKAGE_NAME=$(basename "$EXAMPLE_PACKAGE_PATH")
|
||||
log "Building example package: ${EXAMPLE_PACKAGE_NAME}"
|
||||
"${SWIFT_BIN}" build --build-tests \
|
||||
--package-path "${EXAMPLE_PACKAGE_PATH}" \
|
||||
--skip-update
|
||||
log "✅ Successfully built the example package ${EXAMPLE_PACKAGE_NAME}."
|
||||
|
||||
if [ -d "${EXAMPLE_PACKAGE_PATH}/Tests" ]; then
|
||||
log "Running tests for example package: ${EXAMPLE_PACKAGE_NAME}"
|
||||
"${SWIFT_BIN}" test \
|
||||
--package-path "${EXAMPLE_PACKAGE_PATH}" \
|
||||
--skip-update
|
||||
log "✅ Passed the tests for the example package ${EXAMPLE_PACKAGE_NAME}."
|
||||
fi
|
||||
done
|
||||
Reference in New Issue
Block a user