From c3961e62ec0274aafbc6cb8b9170a3cdb15a43a7 Mon Sep 17 00:00:00 2001 From: Franz Busch Date: Mon, 19 Jun 2023 09:28:24 +0100 Subject: [PATCH] Add docker files for CI --- .swiftformat | 25 ++++++++++++++++++ docker/Dockerfile | 24 +++++++++++++++++ docker/docker-compose.2004.57.yaml | 22 ++++++++++++++++ docker/docker-compose.2004.58.yaml | 21 +++++++++++++++ docker/docker-compose.2204.main.yaml | 21 +++++++++++++++ docker/docker-compose.yaml | 39 ++++++++++++++++++++++++++++ 6 files changed, 152 insertions(+) create mode 100644 .swiftformat create mode 100644 docker/Dockerfile create mode 100644 docker/docker-compose.2004.57.yaml create mode 100644 docker/docker-compose.2004.58.yaml create mode 100644 docker/docker-compose.2204.main.yaml create mode 100644 docker/docker-compose.yaml diff --git a/.swiftformat b/.swiftformat new file mode 100644 index 00000000..3eb557ea --- /dev/null +++ b/.swiftformat @@ -0,0 +1,25 @@ +# file options + +--swiftversion 5.7 +--exclude .build + +# format options + +--self insert +--patternlet inline +--ranges nospace +--stripunusedargs unnamed-only +--ifdef no-indent +--extensionacl on-declarations +--disable typeSugar # https://github.com/nicklockwood/SwiftFormat/issues/636 +--disable andOperator +--disable wrapMultilineStatementBraces +--disable enumNamespaces +--disable redundantExtensionACL +--disable redundantReturn +--disable preferKeyPath +--disable sortedSwitchCases +--disable hoistAwait +--disable hoistTry + +# rules diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 00000000..e592f92f --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,24 @@ +ARG swift_version=5.7 +ARG ubuntu_version=focal +ARG base_image=swift:$swift_version-$ubuntu_version +FROM $base_image +# needed to do again after FROM due to docker limitation +ARG swift_version +ARG ubuntu_version + +# set as UTF-8 +RUN apt-get update && apt-get install -y locales locales-all +ENV LC_ALL en_US.UTF-8 +ENV LANG en_US.UTF-8 +ENV LANGUAGE en_US.UTF-8 + +# tools +RUN mkdir -p $HOME/.tools +RUN echo 'export PATH="$HOME/.tools:$PATH"' >> $HOME/.profile + +# swiftformat (until part of the toolchain) + +ARG swiftformat_version=0.51.12 +RUN git clone --branch $swiftformat_version --depth 1 https://github.com/nicklockwood/SwiftFormat $HOME/.tools/swift-format +RUN cd $HOME/.tools/swift-format && swift build -c release +RUN ln -s $HOME/.tools/swift-format/.build/release/swiftformat $HOME/.tools/swiftformat diff --git a/docker/docker-compose.2004.57.yaml b/docker/docker-compose.2004.57.yaml new file mode 100644 index 00000000..19c52d83 --- /dev/null +++ b/docker/docker-compose.2004.57.yaml @@ -0,0 +1,22 @@ +version: "3" + +services: + + runtime-setup: + image: swift-async-algorithms:20.04-5.7 + build: + args: + ubuntu_version: "focal" + swift_version: "5.7" + + build: + image: swift-async-algorithms:20.04-5.7 + + test: + image: swift-async-algorithms:20.04-5.7 + environment: [] + #- SANITIZER_ARG: "--sanitize=thread" + #- TSAN_OPTIONS: "no_huge_pages_for_shadow=0 suppressions=/code/tsan_suppressions.txt" + + shell: + image: swift-async-algorithms:20.04-5.7 diff --git a/docker/docker-compose.2004.58.yaml b/docker/docker-compose.2004.58.yaml new file mode 100644 index 00000000..56d83dfc --- /dev/null +++ b/docker/docker-compose.2004.58.yaml @@ -0,0 +1,21 @@ +version: "3" + +services: + + runtime-setup: + image: swift-async-algorithms:20.04-5.8 + build: + args: + base_image: "swiftlang/swift:nightly-5.8-focal" + + build: + image: swift-async-algorithms:20.04-5.8 + + test: + image: swift-async-algorithms:20.04-5.8 + environment: [] + #- SANITIZER_ARG: "--sanitize=thread" + #- TSAN_OPTIONS: "no_huge_pages_for_shadow=0 suppressions=/code/tsan_suppressions.txt" + + shell: + image: swift-async-algorithms:20.04-5.8 diff --git a/docker/docker-compose.2204.main.yaml b/docker/docker-compose.2204.main.yaml new file mode 100644 index 00000000..f28e21d2 --- /dev/null +++ b/docker/docker-compose.2204.main.yaml @@ -0,0 +1,21 @@ +version: "3" + +services: + + runtime-setup: + image: swift-async-algorithms:22.04-main + build: + args: + base_image: "swiftlang/swift:nightly-main-jammy" + + build: + image: swift-async-algorithms:22.04-main + + test: + image: swift-async-algorithms:22.04-main + environment: [] + #- SANITIZER_ARG: "--sanitize=thread" + #- TSAN_OPTIONS: "no_huge_pages_for_shadow=0 suppressions=/code/tsan_suppressions.txt" + + shell: + image: swift-async-algorithms:22.04-main diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml new file mode 100644 index 00000000..8d1d9a33 --- /dev/null +++ b/docker/docker-compose.yaml @@ -0,0 +1,39 @@ +# this file is not designed to be run directly +# instead, use the docker-compose.. files +# eg docker-compose -f docker/docker-compose.yaml -f docker/docker-compose.2004.56.yaml run test +version: "3" + +services: + runtime-setup: + image: swift-async-algorithms:default + build: + context: . + dockerfile: Dockerfile + + common: &common + image: swift-async-algorithms:default + depends_on: [runtime-setup] + volumes: + - ~/.ssh:/root/.ssh + - ..:/code:z + working_dir: /code + + soundness: + <<: *common + command: /bin/bash -xcl "swift -version && uname -a && ./scripts/soundness.sh" + + build: + <<: *common + environment: [] + command: /bin/bash -cl "swift build" + + test: + <<: *common + depends_on: [runtime-setup] + command: /bin/bash -xcl "swift $${SWIFT_TEST_VERB-test} $${WARN_AS_ERROR_ARG-} $${SANITIZER_ARG-} $${IMPORT_CHECK_ARG-}" + + # util + + shell: + <<: *common + entrypoint: /bin/bash