Skip to content

Commit

Permalink
[CI] Adopt GitHub actions
Browse files Browse the repository at this point in the history
  • Loading branch information
FranzBusch committed Sep 6, 2024
1 parent a7c8875 commit 871933b
Show file tree
Hide file tree
Showing 25 changed files with 189 additions and 425 deletions.
13 changes: 13 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
root = true

[*]
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true


[*.yml]
indent_style = space
indent_size = 2
26 changes: 26 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Main

on:
push:
branches: [main]

jobs:
unit-tests:
name: Unit tests
uses: ./.github/workflows/unit_tests.yml
with:
linux_5_8_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error"
linux_5_9_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error"
linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error"
linux_nightly_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error"
linux_nightly_main_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error"

benchmarks:
name: Benchmarks
uses: ./.github/workflows/benchmarks.yml
with:
benchmark_package_path: "Benchmarks"

cxx-interop:
name: Cxx interop
uses: ./.github/workflows/cxx_interop.yml
39 changes: 39 additions & 0 deletions .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: PR

on:
pull_request:
types: [opened, reopened, synchronize]

jobs:
soundness:
name: Soundness
uses: apple/swift-nio/.github/workflows/soundness.yml@main
with:
license_header_check_project_name: "SwiftCertificates"

cmake-lists:
name: Check cmake lists
uses: apple/swift-nio/.github/workflows/swift_matrix.yml@main
with:
name: "Check cmake lists"
matrix_linux_command: ./scripts/check-cmake-lists.sh"

unit-tests:
name: Unit tests
uses: apple/swift-nio/.github/workflows/unit_tests.yml@main
with:
linux_5_8_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error"
linux_5_9_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error"
linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error"
linux_nightly_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error"
linux_nightly_main_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error"

benchmarks:
name: Benchmarks
uses: apple/swift-nio/.github/workflows/benchmarks.yml@main
with:
benchmark_package_path: "Benchmarks"

swift-6-language-mode:
name: Swift 6 Language Mode
uses: apple/swift-nio/.github/workflows/swift_6_language_mode.yml@main
18 changes: 18 additions & 0 deletions .github/workflows/pull_request_label.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: PR label

on:
pull_request:
types: [labeled, unlabeled, opened, reopened, synchronize]

jobs:
semver-label-check:
name: Semantic Version label check
runs-on: ubuntu-latest
timeout-minutes: 1
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Check for Semantic Version label
uses: apple/swift-nio/.github/actions/pull_request_semver_label_checker@main
22 changes: 22 additions & 0 deletions .github/workflows/scheduled.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Scheduled

on:
schedule:
- cron: "0 8,20 * * *"

jobs:
unit-tests:
name: Unit tests
uses: ./.github/workflows/unit_tests.yml
with:
linux_5_8_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error"
linux_5_9_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error"
linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error"
linux_nightly_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error"
linux_nightly_main_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error"

benchmarks:
name: Benchmarks
uses: ./.github/workflows/benchmarks.yml
with:
benchmark_package_path: "Benchmarks"
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"mallocCountTotal" : 4851,
"memoryLeaked" : 0,
"readSyscalls" : 0,
"writeSyscalls" : 0
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"mallocCountTotal" : 5810,
"memoryLeaked" : 0,
"readSyscalls" : 0,
"writeSyscalls" : 0
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"mallocCountTotal" : 5818,
"memoryLeaked" : 0,
"readSyscalls" : 0,
"writeSyscalls" : 0
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"mallocCountTotal" : 26,
"memoryLeaked" : 0,
"readSyscalls" : 0,
"writeSyscalls" : 0
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"mallocCountTotal" : 16,
"memoryLeaked" : 0,
"readSyscalls" : 0,
"writeSyscalls" : 0
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"mallocCountTotal" : 1251,
"memoryLeaked" : 0,
"readSyscalls" : 0,
"writeSyscalls" : 0
}
23 changes: 0 additions & 23 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,29 +60,6 @@ We require that your commit messages match our template. The easiest way to do t

git config commit.template dev/git.commit.template

### Run `./scripts/soundness.sh`

The scripts directory contains a [soundness.sh script](https://github.com/apple/swift-certificates/blob/main/scripts/soundness.sh)
that enforces additional checks, like license headers and formatting style.

Please make sure to `./scripts/soundness.sh` before pushing a change upstream, otherwise it is likely the PR validation will fail
on minor changes such as a missing `self.` or similar formatting issues.

For frequent contributors, we recommend adding the script as a [git pre-push hook](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks), which you can do via executing the following command in the project root directory:

```bash
cat << EOF > .git/hooks/pre-push
if [[ -f "scripts/soundness.sh" ]]; then
scripts/soundness.sh
fi
EOF
```

Which makes the script execute, and only allow the `git push` to complete if the check has passed.

In the case of formatting issues, you can then `git add` the formatting changes, and attempt the push again.

## How to contribute your work

Please open a pull request at https://github.com/apple/swift-certificates. Make sure the CI passes, and then wait for code review.
19 changes: 0 additions & 19 deletions CONTRIBUTORS.txt

This file was deleted.

33 changes: 33 additions & 0 deletions scripts/check-cmake-lists.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/bash
##===----------------------------------------------------------------------===##
##
## This source file is part of the SwiftCertificates open source project
##
## Copyright (c) 2024 Apple Inc. and the SwiftCertificates project authors
## Licensed under Apache License v2.0
##
## See LICENSE.txt for license information
## See CONTRIBUTORS.txt for the list of SwiftCertificates project authors
##
## SPDX-License-Identifier: Apache-2.0
##
##===----------------------------------------------------------------------===##

set -euo pipefail

log() { printf -- "** %s\n" "$*" >&2; }
error() { printf -- "** ERROR: %s\n" "$*" >&2; }
fatal() { error "$@"; exit 1; }

log "Checking if the cmake files are up-to-date..."

here="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
FIRST_OUT="$(git status --porcelain)"
_=$("$here"/update-cmake-lists.sh 2>&1)
SECOND_OUT="$(git status --porcelain)"
if [[ "$FIRST_OUT" != "$SECOND_OUT" ]]; then
error "Changes in the cmake files detected. Please run the update-cmake-lists.sh script."
exit 1
fi

log "✅ cmake files are up-to-date."
67 changes: 0 additions & 67 deletions scripts/check_no_api_breakages.sh

This file was deleted.

52 changes: 0 additions & 52 deletions scripts/generate_contributors_list.sh

This file was deleted.

Loading

0 comments on commit 871933b

Please sign in to comment.