Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade CI #382

Merged
merged 8 commits into from
Aug 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 60 additions & 40 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,49 +17,52 @@ jobs:
strategy:
fail-fast: false
matrix:
container:
swift-image:
- swift:5.6-focal
- swift:5.7-jammy
- swift:5.8-jammy
- swiftlang/swift:nightly-5.9-jammy
- swiftlang/swift:nightly-main-jammy
container: ${{ matrix.container }}
include:
- swift-image: swift:5.8-jammy
code-coverage: true
container: ${{ matrix.swift-image }}
runs-on: ubuntu-latest
steps:
- name: Note Swift version
if: ${{ contains(matrix.swiftver, 'nightly') }}
run: |
echo "SWIFT_PLATFORM=$(. /etc/os-release && echo "${ID}${VERSION_ID}")" >>"${GITHUB_ENV}"
echo "SWIFT_VERSION=$(cat /.swift_tag)" >>"${GITHUB_ENV}"
- name: Display OS and Swift versions
shell: bash
run: |
printf 'OS: %s\nTag: %s\nVersion:\n' "${SWIFT_PLATFORM}-${RUNNER_ARCH}" "${SWIFT_VERSION}" && swift --version
[[ -z "${SWIFT_PLATFORM}" ]] && SWIFT_PLATFORM="$(. /etc/os-release && echo "${ID}${VERSION_ID}")"
[[ -z "${SWIFT_VERSION}" ]] && SWIFT_VERSION="$(cat /.swift_tag 2>/dev/null || true)"
printf 'OS: %s\nTag: %s\nVersion:\n' "${SWIFT_PLATFORM}-${RUNNER_ARCH}" "${SWIFT_VERSION}"
swift --version
- name: Check out package
uses: actions/checkout@v3
- name: Run unit tests with code coverage and Thread Sanitizer
run: swift test --filter=^PostgresNIOTests --sanitize=thread --enable-code-coverage
- name: Submit coverage report to Codecov.io
uses: vapor/[email protected]
with:
cc_env_vars: 'SWIFT_VERSION,SWIFT_PLATFORM,RUNNER_OS,RUNNER_ARCH'
cc_fail_ci_if_error: false
- name: Run unit tests with Thread Sanitizer
env:
CODE_COVERAGE: ${{ matrix.code-coverage && '--enable-code-coverage' || '' }}
run: |
swift test --filter=^PostgresNIOTests --sanitize=thread ${CODE_COVERAGE}
- name: Submit code coverage
if: ${{ matrix.code-coverage }}
uses: vapor/[email protected]

linux-integration-and-dependencies:
if: github.event_name == 'pull_request'
strategy:
fail-fast: false
matrix:
dbimage:
postgres-image:
- postgres:15
- postgres:13
- postgres:11
include:
- dbimage: postgres:15
dbauth: scram-sha-256
- dbimage: postgres:13
dbauth: md5
- dbimage: postgres:11
dbauth: trust
- postgres-image: postgres:15
postgres-auth: scram-sha-256
- postgres-image: postgres:13
postgres-auth: md5
- postgres-image: postgres:11
postgres-auth: trust
container:
image: swift:5.8-jammy
volumes: [ 'pgrunshare:/var/run/postgresql' ]
Expand All @@ -79,29 +82,31 @@ jobs:
POSTGRES_HOSTNAME_A: 'psql-a'
POSTGRES_HOSTNAME_B: 'psql-b'
POSTGRES_SOCKET: '/var/run/postgresql/.s.PGSQL.5432'
POSTGRES_HOST_AUTH_METHOD: ${{ matrix.dbauth }}
POSTGRES_HOST_AUTH_METHOD: ${{ matrix.postgres-auth }}
services:
psql-a:
image: ${{ matrix.dbimage }}
image: ${{ matrix.postgres-image }}
volumes: [ 'pgrunshare:/var/run/postgresql' ]
env:
POSTGRES_USER: 'test_username'
POSTGRES_DB: 'test_database'
POSTGRES_PASSWORD: 'test_password'
POSTGRES_HOST_AUTH_METHOD: ${{ matrix.dbauth }}
POSTGRES_INITDB_ARGS: --auth-host=${{ matrix.dbauth }}
POSTGRES_HOST_AUTH_METHOD: ${{ matrix.postgres-auth }}
POSTGRES_INITDB_ARGS: --auth-host=${{ matrix.postgres-auth }}
psql-b:
image: ${{ matrix.dbimage }}
image: ${{ matrix.postgres-image }}
volumes: [ 'pgrunshare:/var/run/postgresql' ]
env:
POSTGRES_USER: 'test_username'
POSTGRES_DB: 'test_database'
POSTGRES_PASSWORD: 'test_password'
POSTGRES_HOST_AUTH_METHOD: ${{ matrix.dbauth }}
POSTGRES_INITDB_ARGS: --auth-host=${{ matrix.dbauth }}
POSTGRES_HOST_AUTH_METHOD: ${{ matrix.postgres-auth }}
POSTGRES_INITDB_ARGS: --auth-host=${{ matrix.postgres-auth }}
steps:
- name: Display OS and Swift versions
run: |
[[ -z "${SWIFT_PLATFORM}" ]] && SWIFT_PLATFORM="$(. /etc/os-release && echo "${ID}${VERSION_ID}")"
[[ -z "${SWIFT_VERSION}" ]] && SWIFT_VERSION="$(cat /.swift_tag 2>/dev/null || true)"
printf 'OS: %s\nTag: %s\nVersion:\n' "${SWIFT_PLATFORM}-${RUNNER_ARCH}" "${SWIFT_VERSION}" && swift --version
- name: Check out package
uses: actions/checkout@v3
Expand All @@ -128,33 +133,34 @@ jobs:
strategy:
fail-fast: false
matrix:
dbimage:
postgres-formula:
# Only test one version on macOS, let Linux do the rest
- postgresql@14
dbauth:
postgres-auth:
# Only test one auth method on macOS, Linux tests will cover the others
- scram-sha-256
xcode:
- latest-stable
xcode-version:
- '~14.3'
- '15.0-beta'
runs-on: macos-13
env:
POSTGRES_HOSTNAME: 127.0.0.1
POSTGRES_USER: 'test_username'
POSTGRES_PASSWORD: 'test_password'
POSTGRES_DB: 'postgres'
POSTGRES_HOST_AUTH_METHOD: ${{ matrix.dbauth }}
POSTGRES_AUTH_METHOD: ${{ matrix.postgres-auth }}
POSTGRES_SOCKET: '/tmp/.s.PGSQL.5432'
POSTGRES_VERSION: ${{ matrix.dbimage }}
POSTGRES_FORMULA: ${{ matrix.postgres-formula }}
steps:
- name: Select latest available Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: ${{ matrix.xcode }}
xcode-version: ${{ matrix.xcode-version }}
- name: Install Postgres, setup DB and auth, and wait for server start
run: |
export PATH="$(brew --prefix)/opt/${POSTGRES_VERSION}/bin:$PATH" PGDATA=/tmp/vapor-postgres-test
(brew unlink postgresql || true) && brew install "${POSTGRES_VERSION}" && brew link --force "${POSTGRES_VERSION}"
initdb --locale=C --auth-host "${POSTGRES_HOST_AUTH_METHOD}" -U "${POSTGRES_USER}" --pwfile=<(echo "${POSTGRES_PASSWORD}")
export PATH="$(brew --prefix)/opt/${POSTGRES_FORMULA}/bin:$PATH" PGDATA=/tmp/vapor-postgres-test
(brew unlink postgresql || true) && brew install "${POSTGRES_FORMULA}" && brew link --force "${POSTGRES_FORMULA}"
initdb --locale=C --auth-host "${POSTGRES_AUTH_METHOD}" -U "${POSTGRES_USER}" --pwfile=<(echo "${POSTGRES_PASSWORD}")
pg_ctl start --wait
timeout-minutes: 2
- name: Checkout code
Expand All @@ -165,7 +171,7 @@ jobs:
api-breakage:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
container: swift:5.8-jammy
container: swift:jammy
steps:
- name: Checkout
uses: actions/checkout@v3
Expand All @@ -177,3 +183,17 @@ jobs:
- name: API breaking changes
run: swift package diagnose-api-breaking-changes origin/main

gh-codeql:
runs-on: ubuntu-latest
permissions: { security-events: write }
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: swift
- name: Perform build
run: swift build
- name: Run CodeQL analyze
uses: github/codeql-action/analyze@v2
1 change: 1 addition & 0 deletions Sources/PostgresNIO/Docs.docc/images/article.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
36 changes: 36 additions & 0 deletions Sources/PostgresNIO/Docs.docc/images/vapor-postgres-logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
46 changes: 46 additions & 0 deletions Sources/PostgresNIO/Docs.docc/theme-settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{
"theme": {
"aside": {
"border-radius": "6px",
"border-style": "double",
"border-width": "3px"
},
"border-radius": "0",
"button": {
"border-radius": "16px",
"border-width": "1px",
"border-style": "solid"
},
"code": {
"border-radius": "16px",
"border-width": "1px",
"border-style": "solid"
},
"color": {
"fill": {
"dark": "rgb(20, 20, 22)",
"light": "rgb(255, 255, 255)"
},
"psql-blue": "#336791",
"documentation-intro-fill": "radial-gradient(circle at top, var(--color-documentation-intro-accent) 30%, #1f1d1f 100%)",
"documentation-intro-accent": "var(--color-psql-blue)",
"documentation-intro-accent-outer": {
"dark": "rgb(255, 255, 255)",
"light": "rgb(51, 51, 51)"
},
"documentation-intro-accent-inner": {
"dark": "rgb(51, 51, 51)",
"light": "rgb(255, 255, 255)"
}
},
"icons": {
"technology": "/images/vapor-postgres-logo.svg",
"article": "/images/article.svg"
}
},
"features": {
"quickNavigation": {
"enable": true
}
}
}