.gitbay/ci.yml
52 lines · 2736 bytes
1# The runner is Debian 13, root, no docker. apt state does not survive between
2# builds; $HOME does, so the toolchain tarball is fetched and verified once.
3# swift-keys.asc is https://www.swift.org/keys/all-keys.asc, committed because the
4# runner cannot fetch it intact.
5# Each step runs in its own `sh -c`, so the install block is repeated per job.
6jobs:
7 build:
8 steps:
9 - |
10 set -eu
11 export DEBIAN_FRONTEND=noninteractive
12 apt-get -qq update >/dev/null
13 apt-get -qq install -y binutils-gold curl gpg libicu-dev libcurl4-openssl-dev libedit-dev libsqlite3-dev libncurses-dev libpython3-dev libxml2-dev pkg-config uuid-dev tzdata git gcc libstdc++-14-dev >/dev/null
14 SWIFT="$HOME/swift-6.4.0-RELEASE-debian13"
15 if [ ! -x "$SWIFT/usr/bin/swift" ]; then
16 base="https://download.swift.org/swift-6.4.0-release/debian13/swift-6.4.0-RELEASE/swift-6.4.0-RELEASE-debian13.tar.gz"
17 work="$(mktemp -d)"
18 curl -fsSL "$base" -o "$work/swift.tar.gz" "$base.sig" -o "$work/swift.tar.gz.sig"
19 export GNUPGHOME="$work/gnupg"; mkdir -m 700 "$GNUPGHOME"
20 gpg --batch --quiet --import .gitbay/swift-keys.asc
21 gpg --batch --verify "$work/swift.tar.gz.sig" "$work/swift.tar.gz"
22 tar -xzf "$work/swift.tar.gz" -C "$work"
23 mv "$work/swift-6.4.0-RELEASE-debian13" "$SWIFT" || true
24 rm -rf "$work"
25 fi
26 export PATH="$SWIFT/usr/bin:$PATH"
27 swift --version
28 swift format lint --strict --recursive Sources Tests Package.swift
29 swift build
30 test:
31 steps:
32 - |
33 set -eu
34 export DEBIAN_FRONTEND=noninteractive
35 apt-get -qq update >/dev/null
36 apt-get -qq install -y binutils-gold curl gpg libicu-dev libcurl4-openssl-dev libedit-dev libsqlite3-dev libncurses-dev libpython3-dev libxml2-dev pkg-config uuid-dev tzdata git gcc libstdc++-14-dev >/dev/null
37 SWIFT="$HOME/swift-6.4.0-RELEASE-debian13"
38 if [ ! -x "$SWIFT/usr/bin/swift" ]; then
39 base="https://download.swift.org/swift-6.4.0-release/debian13/swift-6.4.0-RELEASE/swift-6.4.0-RELEASE-debian13.tar.gz"
40 work="$(mktemp -d)"
41 curl -fsSL "$base" -o "$work/swift.tar.gz" "$base.sig" -o "$work/swift.tar.gz.sig"
42 export GNUPGHOME="$work/gnupg"; mkdir -m 700 "$GNUPGHOME"
43 gpg --batch --quiet --import .gitbay/swift-keys.asc
44 gpg --batch --verify "$work/swift.tar.gz.sig" "$work/swift.tar.gz"
45 tar -xzf "$work/swift.tar.gz" -C "$work"
46 mv "$work/swift-6.4.0-RELEASE-debian13" "$SWIFT" || true
47 rm -rf "$work"
48 fi
49 export PATH="$SWIFT/usr/bin:$PATH"
50 swift test
51 paths-ignore:
52 - docs/**