Skip to content

Commit a7d196e

Browse files
authored
Add swift-server CI (#54)
1 parent 43d9445 commit a7d196e

7 files changed

+191
-0
lines changed

docker/Dockerfile

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
ARG swift_version=5.7
2+
ARG ubuntu_version=jammy
3+
ARG base_image=swift:$swift_version-$ubuntu_version
4+
FROM $base_image
5+
# needed to do again after FROM due to docker limitation
6+
ARG swift_version
7+
ARG ubuntu_version
8+
9+
# set as UTF-8
10+
RUN apt-get update && apt-get install -y locales locales-all
11+
ENV LC_ALL en_US.UTF-8
12+
ENV LANG en_US.UTF-8
13+
ENV LANGUAGE en_US.UTF-8
14+
15+
# dependencies
16+
RUN apt-get update && apt-get install -y wget
17+
RUN apt-get update && apt-get install -y lsof dnsutils netcat-openbsd net-tools libz-dev curl jq # used by integration tests
18+
19+
# ruby and jazzy for docs generation
20+
RUN apt-get update && apt-get install -y ruby ruby-dev libsqlite3-dev build-essential
21+
# jazzy no longer works on xenial as ruby is too old.
22+
RUN if [ "${ubuntu_version}" = "focal" ] ; then echo "gem: --no-document" > ~/.gemrc; fi
23+
RUN if [ "${ubuntu_version}" = "focal" ] ; then gem install jazzy; fi
24+
25+
# tools
26+
RUN mkdir -p $HOME/.tools
27+
RUN echo 'export PATH="$HOME/.tools:$PATH"' >> $HOME/.profile
28+
29+
# swiftformat (until part of the toolchain)
30+
31+
ARG swiftformat_version=0.48.8
32+
RUN git clone --branch $swiftformat_version --depth 1 https://github.com/nicklockwood/SwiftFormat $HOME/.tools/swift-format
33+
RUN cd $HOME/.tools/swift-format && swift build -c release
34+
RUN ln -s $HOME/.tools/swift-format/.build/release/swiftformat $HOME/.tools/swiftformat

docker/docker-compose.2004.56.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
version: "3"
2+
3+
services:
4+
5+
runtime-setup:
6+
image: redistack:20.04-5.6
7+
build:
8+
args:
9+
ubuntu_version: "focal"
10+
swift_version: "5.6"
11+
12+
documentation-check:
13+
image: redistack:20.04-5.6
14+
15+
test:
16+
image: redistack:20.04-5.6
17+
environment: []
18+
#- SANITIZER_ARG=--sanitize=thread
19+
20+
shell:
21+
image: redistack:20.04-5.6

docker/docker-compose.2204.57.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
version: "3"
2+
3+
services:
4+
5+
runtime-setup:
6+
image: redistack:22.04-5.7
7+
build:
8+
args:
9+
ubuntu_version: "jammy"
10+
swift_version: "5.7"
11+
12+
documentation-check:
13+
image: redistack:22.04-5.7
14+
15+
test:
16+
image: redistack:22.04-5.7
17+
environment: []
18+
#- SANITIZER_ARG=--sanitize=thread
19+
20+
shell:
21+
image: redistack:22.04-5.7

docker/docker-compose.2204.58.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
version: "3"
2+
3+
services:
4+
5+
runtime-setup:
6+
image: redistack:22.04-5.8
7+
build:
8+
args:
9+
ubuntu_version: "jammy"
10+
swift_version: "5.8"
11+
12+
documentation-check:
13+
image: redistack:22.04-5.8
14+
15+
test:
16+
image: redistack:22.04-5.8
17+
environment:
18+
- IMPORT_CHECK_ARG=--explicit-target-dependency-import-check error
19+
#- SANITIZER_ARG=--sanitize=thread
20+
21+
shell:
22+
image: redistack:22.04-5.8

docker/docker-compose.2204.59.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
version: "3"
2+
3+
services:
4+
5+
runtime-setup:
6+
image: redistack:22.04-5.9
7+
build:
8+
args:
9+
base_image: "swiftlang/swift:nightly-5.9-jammy"
10+
11+
documentation-check:
12+
image: redistack:22.04-5.9
13+
14+
test:
15+
image: redistack:22.04-5.9
16+
environment:
17+
- IMPORT_CHECK_ARG=--explicit-target-dependency-import-check error
18+
#- SANITIZER_ARG=--sanitize=thread
19+
20+
shell:
21+
image: redistack:22.04-5.9

docker/docker-compose.2204.main.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
version: "3"
2+
3+
services:
4+
5+
runtime-setup:
6+
image: redistack:22.04-main
7+
build:
8+
args:
9+
base_image: "swiftlang/swift:nightly-main-jammy"
10+
11+
documentation-check:
12+
image: redistack:22.04-main
13+
14+
test:
15+
image: redistack:22.04-main
16+
environment:
17+
- IMPORT_CHECK_ARG=--explicit-target-dependency-import-check error
18+
#- SANITIZER_ARG=--sanitize=thread
19+
20+
shell:
21+
image: redistack:22.04-main

docker/docker-compose.yaml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# this file is not designed to be run directly
2+
# instead, use the docker-compose.<os>.<swift> files
3+
# eg docker-compose -f docker/docker-compose.yaml -f docker/docker-compose.1804.50.yaml run test
4+
version: "3"
5+
6+
services:
7+
8+
runtime-setup:
9+
image: redistack:default
10+
build:
11+
context: .
12+
dockerfile: Dockerfile
13+
14+
common: &common
15+
image: redistack:default
16+
depends_on: [runtime-setup]
17+
volumes:
18+
- ~/.ssh:/root/.ssh
19+
- ..:/code:z
20+
working_dir: /code
21+
cap_drop:
22+
- CAP_NET_RAW
23+
- CAP_NET_BIND_SERVICE
24+
25+
soundness:
26+
<<: *common
27+
command: /bin/bash -xcl "./scripts/soundness.sh"
28+
29+
documentation-check:
30+
<<: *common
31+
command: /bin/bash -xcl "./scripts/check-docs.sh"
32+
33+
test:
34+
<<: *common
35+
depends_on: [runtime-setup, redis]
36+
command: /bin/bash -xcl "swift test -Xswiftc -warnings-as-errors --enable-test-discovery $${SANITIZER_ARG-} $${IMPORT_CHECK_ARG-}"
37+
environment:
38+
- REDIS_URL=redis
39+
40+
# util
41+
42+
shell:
43+
<<: *common
44+
entrypoint: /bin/bash
45+
46+
docs:
47+
<<: *common
48+
command: /bin/bash -cl "./scripts/generate_docs.sh"
49+
50+
redis:
51+
image: redis:7

0 commit comments

Comments
 (0)