From 8d880c3153a839ace743d50e487808c4d8b5f0cc Mon Sep 17 00:00:00 2001 From: Adam Laszlo Rocska Date: Tue, 19 May 2026 14:57:07 +0200 Subject: [PATCH 01/11] Add GitHub Actions CI --- .github/workflows/ci.yml | 74 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..74a7e5d --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,74 @@ +name: CI + +on: + push: + branches: + - master + - "issue*" + pull_request: + branches: + - master + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + linux: + name: Linux / Swift ${{ matrix.swift }} + runs-on: ubuntu-24.04 + timeout-minutes: 30 + + strategy: + fail-fast: false + matrix: + include: + - swift: 4.0.3 + image: 4.0.3 + - swift: 4.1.3 + image: 4.1.3 + - swift: 4.2.4 + image: 4.2.4 + - swift: 5.0.3 + image: 5.0.3-xenial + - swift: 5.1 + image: "5.1" + + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Build and test + run: | + set -euo pipefail + + docker run --rm \ + -v "${PWD}:/workspace" \ + -w /workspace \ + swift:${{ matrix.image }} \ + bash -lc ' + set -euo pipefail + swift --version + swift build + swift test + ' + + macos: + name: macOS / default Swift + runs-on: macos-latest + timeout-minutes: 30 + + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Build and test + run: | + set -euo pipefail + swift --version + swift build + swift test From 64626199e10feb0bb443d4484e0b7ce0043f10a3 Mon Sep 17 00:00:00 2001 From: Adam Laszlo Rocska Date: Tue, 19 May 2026 14:57:30 +0200 Subject: [PATCH 02/11] Remove Travis CI configuration --- .travis.yml | 72 ----------------------------------------------------- 1 file changed, 72 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 4395f27..0000000 --- a/.travis.yml +++ /dev/null @@ -1,72 +0,0 @@ -# Travis CI build file. - -# whitelist (branches that should be built) -branches: - only: - - master - - /^issue.*$/ - -# the matrix of builds should cover each combination of Swift version -# and platform that is supported. The version of Swift used is specified -# by .swift-version, unless SWIFT_SNAPSHOT is specified. -matrix: - include: - - os: linux - dist: xenial - sudo: required - services: docker - env: DOCKER_IMAGE=swift:4.0.3 SWIFT_SNAPSHOT=4.0.3 - - os: linux - dist: xenial - sudo: required - services: docker - env: DOCKER_IMAGE=swift:4.1.3 SWIFT_SNAPSHOT=4.1.3 - - os: linux - dist: xenial - sudo: required - services: docker - env: DOCKER_IMAGE=swift:4.2.4 SWIFT_SNAPSHOT=4.2.4 - - os: linux - dist: xenial - sudo: required - services: docker - env: DOCKER_IMAGE=swift:5.0.3-xenial SWIFT_SNAPSHOT=5.0.3 - - os: linux - dist: xenial - sudo: required - services: docker - env: DOCKER_IMAGE=swift:5.1 - - os: linux - dist: xenial - sudo: required - services: docker - env: DOCKER_IMAGE=swift:5.1 SWIFT_SNAPSHOT=$SWIFT_DEVELOPMENT_SNAPSHOT - - os: osx - osx_image: xcode9.2 - sudo: required - env: SWIFT_SNAPSHOT=4.0.3 - - os: osx - osx_image: xcode9.4 - sudo: required - env: SWIFT_SNAPSHOT=4.1.2 - - os: osx - osx_image: xcode10.1 - sudo: required - env: SWIFT_SNAPSHOT=4.2.1 - - os: osx - osx_image: xcode10.2 - sudo: required - env: SWIFT_SNAPSHOT=5.0.1 JAZZY_ELIGIBLE=true - - os: osx - osx_image: xcode11 - sudo: required - - os: osx - osx_image: xcode11 - sudo: required - env: SWIFT_SNAPSHOT=$SWIFT_DEVELOPMENT_SNAPSHOT - -before_install: - - git clone https://github.com/Kitura/Package-Builder.git - -script: - - ./Package-Builder/build-package.sh -projectDir $TRAVIS_BUILD_DIR From dc8fabf3e0180add85e2bf182c8349a72cc561d7 Mon Sep 17 00:00:00 2001 From: Adam Laszlo Rocska Date: Tue, 19 May 2026 14:58:17 +0200 Subject: [PATCH 03/11] Update CI badges --- README.md | 4 ++-- .../Contents/Resources/Documents/index.html | 4 ++-- docs/index.html | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 8d00cc9..cf0a714 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,8 @@ APIDoc - - Build Status - Master + + CI macOS Linux diff --git a/docs/docsets/KituraCache.docset/Contents/Resources/Documents/index.html b/docs/docsets/KituraCache.docset/Contents/Resources/Documents/index.html index 852d7eb..e617d09 100644 --- a/docs/docsets/KituraCache.docset/Contents/Resources/Documents/index.html +++ b/docs/docsets/KituraCache.docset/Contents/Resources/Documents/index.html @@ -82,8 +82,8 @@ Docs - - Build Status - Master + + CI Mac OS X Linux diff --git a/docs/index.html b/docs/index.html index 852d7eb..e617d09 100644 --- a/docs/index.html +++ b/docs/index.html @@ -82,8 +82,8 @@ Docs - - Build Status - Master + + CI Mac OS X Linux From 08976b0bc99a311658f10608e3a06361608fbd9e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 19 May 2026 14:35:14 +0000 Subject: [PATCH 04/11] Run Linux CI containers as runner user with writable HOME Agent-Logs-Url: https://github.com/Kitura/Kitura-Cache/sessions/30ba1db6-7499-45e2-8fc1-94ee42bd2790 Co-authored-by: adam-rocska <1914616+adam-rocska@users.noreply.github.com> --- .github/workflows/ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 74a7e5d..834ca2c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,13 +45,18 @@ jobs: - name: Build and test run: | set -euo pipefail + uid="$(id -u)" + gid="$(id -g)" docker run --rm \ + --user "${uid}:${gid}" \ + -e HOME=/tmp/kitura-cache-home \ -v "${PWD}:/workspace" \ -w /workspace \ swift:${{ matrix.image }} \ bash -lc ' set -euo pipefail + mkdir -p "${HOME}" swift --version swift build swift test From b739326fb48ee83c073a9bbd0be1df382e7c3836 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 19 May 2026 14:37:07 +0000 Subject: [PATCH 05/11] Use unique container HOME path in Linux CI job Agent-Logs-Url: https://github.com/Kitura/Kitura-Cache/sessions/30ba1db6-7499-45e2-8fc1-94ee42bd2790 Co-authored-by: adam-rocska <1914616+adam-rocska@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 834ca2c..3d052ba 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,7 +50,7 @@ jobs: docker run --rm \ --user "${uid}:${gid}" \ - -e HOME=/tmp/kitura-cache-home \ + -e HOME="/tmp/kitura-cache-home-${uid}-${gid}" \ -v "${PWD}:/workspace" \ -w /workspace \ swift:${{ matrix.image }} \ From 054244a6d3ade5980b0468154053a051a338185d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 19 May 2026 14:39:50 +0000 Subject: [PATCH 06/11] Use mktemp HOME in Linux Docker CI step Agent-Logs-Url: https://github.com/Kitura/Kitura-Cache/sessions/30ba1db6-7499-45e2-8fc1-94ee42bd2790 Co-authored-by: adam-rocska <1914616+adam-rocska@users.noreply.github.com> --- .github/workflows/ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3d052ba..6139350 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,13 +50,12 @@ jobs: docker run --rm \ --user "${uid}:${gid}" \ - -e HOME="/tmp/kitura-cache-home-${uid}-${gid}" \ -v "${PWD}:/workspace" \ -w /workspace \ swift:${{ matrix.image }} \ bash -lc ' set -euo pipefail - mkdir -p "${HOME}" + export HOME="$(mktemp -d /tmp/kitura-cache-home.XXXXXX)" swift --version swift build swift test From 7658de388f04d72ae6c7eadfd7b5aaa8589e67ce Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 19 May 2026 14:41:39 +0000 Subject: [PATCH 07/11] Use secure temp HOME and cleanup in Linux CI Docker step Agent-Logs-Url: https://github.com/Kitura/Kitura-Cache/sessions/30ba1db6-7499-45e2-8fc1-94ee42bd2790 Co-authored-by: adam-rocska <1914616+adam-rocska@users.noreply.github.com> --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6139350..8449c00 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -55,7 +55,8 @@ jobs: swift:${{ matrix.image }} \ bash -lc ' set -euo pipefail - export HOME="$(mktemp -d /tmp/kitura-cache-home.XXXXXX)" + export HOME="$(mktemp -d)" + trap "rm -rf \"${HOME}\"" EXIT swift --version swift build swift test From dca3273df308800a9f6012714ed7797ed3b5fa7f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 19 May 2026 14:43:16 +0000 Subject: [PATCH 08/11] Harden temp HOME cleanup guard in Linux CI Docker step Agent-Logs-Url: https://github.com/Kitura/Kitura-Cache/sessions/30ba1db6-7499-45e2-8fc1-94ee42bd2790 Co-authored-by: adam-rocska <1914616+adam-rocska@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8449c00..eafa98b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,7 +56,7 @@ jobs: bash -lc ' set -euo pipefail export HOME="$(mktemp -d)" - trap "rm -rf \"${HOME}\"" EXIT + trap "if [[ -n \"\${HOME:-}\" && \"\${HOME}\" == /tmp/* ]]; then rm -rf \"\${HOME}\"; fi" EXIT swift --version swift build swift test From 8ae27e8519e1b496ef6704bfa3e5cb1a388e66bb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 19 May 2026 14:44:53 +0000 Subject: [PATCH 09/11] Validate mktemp HOME path before cleanup trap in Linux CI Agent-Logs-Url: https://github.com/Kitura/Kitura-Cache/sessions/30ba1db6-7499-45e2-8fc1-94ee42bd2790 Co-authored-by: adam-rocska <1914616+adam-rocska@users.noreply.github.com> --- .github/workflows/ci.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index eafa98b..eb76a4d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -55,8 +55,13 @@ jobs: swift:${{ matrix.image }} \ bash -lc ' set -euo pipefail - export HOME="$(mktemp -d)" - trap "if [[ -n \"\${HOME:-}\" && \"\${HOME}\" == /tmp/* ]]; then rm -rf \"\${HOME}\"; fi" EXIT + tmp_home="$(mktemp -d)" + if [[ -z "${tmp_home}" || "${tmp_home}" == "/" || ! -d "${tmp_home}" ]]; then + echo "Failed to create a temporary HOME directory." >&2 + exit 1 + fi + export HOME="${tmp_home}" + trap "rm -rf \"${tmp_home}\"" EXIT swift --version swift build swift test From 7fbbf4d797f157db05b6cf09c957144cc7f5fa35 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 19 May 2026 14:46:24 +0000 Subject: [PATCH 10/11] Guard temporary HOME path to /tmp in Linux CI step Agent-Logs-Url: https://github.com/Kitura/Kitura-Cache/sessions/30ba1db6-7499-45e2-8fc1-94ee42bd2790 Co-authored-by: adam-rocska <1914616+adam-rocska@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index eb76a4d..ed5752b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,7 +56,7 @@ jobs: bash -lc ' set -euo pipefail tmp_home="$(mktemp -d)" - if [[ -z "${tmp_home}" || "${tmp_home}" == "/" || ! -d "${tmp_home}" ]]; then + if [[ -z "${tmp_home}" || "${tmp_home}" == "/" || "${tmp_home}" != /tmp/* || ! -d "${tmp_home}" ]]; then echo "Failed to create a temporary HOME directory." >&2 exit 1 fi From 2631c6fecceacff43adcec8b89b6d1a0a2f33465 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 19 May 2026 14:47:57 +0000 Subject: [PATCH 11/11] Resolve temp HOME path canonically and cleanup via trap function Agent-Logs-Url: https://github.com/Kitura/Kitura-Cache/sessions/30ba1db6-7499-45e2-8fc1-94ee42bd2790 Co-authored-by: adam-rocska <1914616+adam-rocska@users.noreply.github.com> --- .github/workflows/ci.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ed5752b..cffa8ae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,12 +56,15 @@ jobs: bash -lc ' set -euo pipefail tmp_home="$(mktemp -d)" - if [[ -z "${tmp_home}" || "${tmp_home}" == "/" || "${tmp_home}" != /tmp/* || ! -d "${tmp_home}" ]]; then + resolved_tmp_home="$(realpath "${tmp_home}")" + if [[ -z "${resolved_tmp_home}" || "${resolved_tmp_home}" == "/" || "${resolved_tmp_home}" != /tmp/* || ! -d "${resolved_tmp_home}" ]]; then echo "Failed to create a temporary HOME directory." >&2 exit 1 fi - export HOME="${tmp_home}" - trap "rm -rf \"${tmp_home}\"" EXIT + readonly resolved_tmp_home + export HOME="${resolved_tmp_home}" + cleanup() { rm -rf -- "${resolved_tmp_home}"; } + trap cleanup EXIT swift --version swift build swift test