github.com/malcommac/GitLabSwift

GitLabSwift

An async/await client for the GitLab REST APIs.

Community maintained·Swift·since 2022

In one look

let gitlab = GitLab(config: .init(baseURL: url))
let mrs = try await gitlab.mergeRequests.list(project: .id(1097))

Our release tooling lives on GitLab, and the scripts around it kept growing: pipelines to inspect, merge requests to annotate, changelogs to assemble. Doing that from Swift meant a typed client instead of another pile of curl and JSON parsing.

What it does

  • The endpoints a mobile team uses

    Projects, merge requests, pipelines and releases, typed rather than parsed by hand.

  • Async with pagination

    Async/await throughout, with paging handled by the client instead of every caller.

  • Built for tooling

    Small enough to read, wide enough to automate a release process.