Need advice about which tool to choose?Ask the StackShare community!

GitLab CI

2.3K
1.6K
+ 1
75
Semaphore

191
187
+ 1
83
Add tool

GitLab CI vs Semaphore: What are the differences?

GitLab CI and Semaphore are both popular continuous integration (CI) tools used in software development. While they have similar goals of automating the build, testing, and deployment processes, there are key differences between them that distinguish their features and capabilities.

  1. Integration with GitLab: One major difference between GitLab CI and Semaphore is their integration with GitLab. GitLab CI is an integral part of GitLab, offering seamless integration with its source code management (SCM) features. On the other hand, Semaphore is a standalone CI tool that can integrate with various SCM platforms, including GitLab. This means that if your development workflow is centered around GitLab, GitLab CI provides a more tightly integrated experience.

  2. Configuration Syntax: GitLab CI and Semaphore also differ in terms of their configuration syntax. GitLab CI uses a YAML-based configuration file (.gitlab-ci.yml) where users define their pipeline stages, jobs, and associated commands. Semaphore, on the other hand, uses a declarative approach with its own configuration language, which allows for easy definition of build steps, commands, and environments.

  3. Runner Infrastructure: Another difference lies in their runner infrastructure. GitLab CI allows the flexibility of using either shared runners (which are provided by GitLab) or dedicated runners (installed on your own infrastructure). Semaphore, in contrast, uses its own cloud infrastructure for runners, eliminating the hassle of managing and scaling runners yourself.

  4. Pre-installed Software: GitLab CI and Semaphore also vary in terms of pre-installed software. GitLab CI provides a range of commonly used tools and packages pre-installed on its runners, enabling easier setup and compatibility with various build processes. Semaphore, on the other hand, requires explicit installation of any necessary tools or dependencies, giving users more control over their environment.

  5. Pricing Model: When it comes to pricing, GitLab CI and Semaphore have different models. GitLab CI is free to use for public repositories and offers paid plans for private repositories, with pricing based on the number of users. Semaphore, on the other hand, follows a subscription-based model where pricing is based on the concurrent jobs running per month, providing more flexibility depending on your needs.

  6. Extensibility and Community Support: A notable difference between GitLab CI and Semaphore is their extensibility and community support. GitLab CI benefits from the larger GitLab community, which offers extensive documentation, resources, and a wide range of community-contributed integrations. Semaphore, although having a smaller community, provides a streamlined and user-friendly user interface with good documentation and support.

In Summary, GitLab CI offers tighter integration with GitLab, uses a YAML-based configuration file, allows for flexibility with runner infrastructure, provides pre-installed software on runners, follows a user-based pricing model, and benefits from the larger GitLab community. Semaphore, on the other hand, can integrate with various SCM platforms, uses a declarative configuration approach, utilizes its own runner infrastructure, requires explicit installation of software, follows a job-based pricing model, and provides a streamlined user experience with good documentation and support.

Advice on GitLab CI and Semaphore
Needs advice
on
CircleCICircleCIGitLab CIGitLab CI
and
Jenkins XJenkins X

We are a mid-size startup running Scala apps. Moving from Jenkins/EC2 to Spinnaker/EKS and looking for a tool to cover our CI/CD needs. Our code lives on GitHub, artifacts in nexus, images in ECR.

Drone is out, GitHub actions are being considered along with Circle CI and GitLab CI.

We primarily need:

  • Fast SBT builds (caching)
  • Low maintenance overhead (ideally serverless)
  • Everything as code
  • Ease of use
See more
Replies (3)
Glenn Gillen
Recommends
on
BuildkiteBuildkite

I think I've tried most of the CI tools out there at some point. It took me a while to get around to Buildkite because at first I didn't see much point given it seemed like you had to run the agent yourself. Eventually it dawned on me why this approach was more ingenious than I realised:

Running my app in a production (or production-like) environment was already a solved problem, because everything was already in some form of "everything as code". Having a test environment where the only difference was adding the Buildkite agent was a trivial addition.

It means that dev/test/prod parity is simple to achieve and maintain. It's also proven to be much easier to support than trying to deal with the problems that come with trying to force an app to fit into the nuances and constraints that are imposed by the containers/runtime of a CI service. When you completely control all of the environment the tests are running in you define those constraints too. It's been a great balance between a managed service and the flexibility of running it yourself.

And while none of my needs have hit the scale of Shopify (I saw one of their engineers speak about it at a conference once, I can't find the video now though 😞) it's good to know I can scale out my worker nodes to hundreds of thousands of workers to reduce the time it takes for my tests to run.

See more
Recommends
on
jFrogjFrog

I would recommend you to consider the JFrog Platform that includes JFrog Pipelines - it will allow you to manage the full artifact life cycle for your sbt, docker and other technologies, and automate all of your CI and CD using cloud native declarative yaml pipelines. Will integrate smoothly with all your other toolset.

See more
Estu Fardani
Recommends
on
GitLab CIGitLab CI

more configurable to setup ci/cd: * It can provide caching when build sbt, just add this section to yml file * Easy to use, many documentation

Weakness: * Need use gitlab as repository to bring more powerful configuration

See more
Decisions about GitLab CI and Semaphore

Buddy is one of the most easy-to-use tools for CI I ever met. When I needed to set up the pipeline I was really impressed with how easy it is to create it with Buddy with only a few moments. It's literally like: 1. Add repo 2. Click - Click - Click 3. You're done and your app is on prod :D The top feature that I've found is a simple integration with different notification channels - not only Slack (which is the one by default), but Telegram and Discord. The support is also neat - guys respond pretty quickly on even a small issue.

See more
Manage your open source components, licenses, and vulnerabilities
Learn More
Pros of GitLab CI
Pros of Semaphore
  • 22
    Robust CI with awesome Docker support
  • 13
    Simple configuration
  • 9
    All in one solution
  • 7
    Source Control and CI in one place
  • 5
    Integrated with VCS on commit
  • 5
    Free and open source
  • 5
    Easy to configure own build server i.e. GitLab-Runner
  • 2
    Hosted internally
  • 1
    Built-in Docker Registry
  • 1
    Built-in support of Review Apps
  • 1
    Pipeline could be started manually
  • 1
    Enable or disable pipeline by using env variables
  • 1
    Gitlab templates could be shared across logical group
  • 1
    Easy to setup the dedicated runner to particular job
  • 1
    Built-in support of Kubernetes
  • 20
    Easy setup
  • 15
    Fast builds
  • 14
    Free for private github repos
  • 8
    Great customer support
  • 6
    Free for open source
  • 5
    Organizations ready
  • 4
    Slack integration
  • 2
    SSH debug access
  • 2
    GitHub Integration
  • 1
    Easy to use
  • 1
    Continuous Deployment
  • 1
    Pipeline builder GUI
  • 1
    BitBucket integration
  • 1
    Docker support
  • 1
    Simple UI
  • 1
    Parallelism

Sign up to add or upvote prosMake informed product decisions

Cons of GitLab CI
Cons of Semaphore
  • 2
    Works best with GitLab repositories
    Be the first to leave a con

    Sign up to add or upvote consMake informed product decisions

    What is GitLab CI?

    GitLab offers a continuous integration service. If you add a .gitlab-ci.yml file to the root directory of your repository, and configure your GitLab project to use a Runner, then each merge request or push triggers your CI pipeline.

    What is Semaphore?

    Semaphore is the fastest continuous integration and delivery (CI/CD) platform on the market, powering the world’s best engineering teams.

    Need advice about which tool to choose?Ask the StackShare community!

    Jobs that mention GitLab CI and Semaphore as a desired skillset
    What companies use GitLab CI?
    What companies use Semaphore?
    Manage your open source components, licenses, and vulnerabilities
    Learn More

    Sign up to get full access to all the companiesMake informed product decisions

    What tools integrate with GitLab CI?
    What tools integrate with Semaphore?

    Sign up to get full access to all the tool integrationsMake informed product decisions

    Blog Posts

    GitHubMySQLSlack+44
    109
    50768
    What are some alternatives to GitLab CI and Semaphore?
    Jenkins
    In a nutshell Jenkins CI is the leading open-source continuous integration server. Built with Java, it provides over 300 plugins to support building and testing virtually any project.
    Bamboo
    Focus on coding and count on Bamboo as your CI and build server! Create multi-stage build plans, set up triggers to start builds upon commits, and assign agents to your critical builds and deployments.
    Travis CI
    Free for open source projects, our CI environment provides multiple runtimes (e.g. Node.js or PHP versions), data stores and so on. Because of this, hosting your project on travis-ci.com means you can effortlessly test your library or applications against multiple runtimes and data stores without even having all of them installed locally.
    TeamCity
    TeamCity is a user-friendly continuous integration (CI) server for professional developers, build engineers, and DevOps. It is trivial to setup and absolutely free for small teams and open source projects.
    CircleCI
    Continuous integration and delivery platform helps software teams rapidly release code with confidence by automating the build, test, and deploy process. Offers a modern software development platform that lets teams ramp.
    See all alternatives