SCM Bridge support for the SCM/CI integration

We’re back with a new change in SCM/CI integration. This time with support for a new way of fetching sources from your SCM, the OBS Git Bridge.

We started off the continuous integration between OBS and GitHub/GitLab in May 2021, then made some improvements in June 2021. We introduced advanced features like reporting filters and support for self-hosted SCM together with a list of common pitfalls in July 2021 and in August 2021, we continued with two new steps and a UI for tokens. In September 2021, we supported more actions for pull/merge requests, improved the UI for tokens, and added support for push events and a rebuild step. In November 2021, we presented the user documentation and further improvements for the UI for tokens and workflow runs and more. We worked on UI and reporting improvements in February 2022, followed by a step to trigger services and the improvement of the error messages in April 2022. Afterwards, we clarified the separation between incoming webhooks and status reports in May 2022, then sharing tokens was made possible in June 2022. Later in July 2022, we added support for the SCM Bridge feature. Around September 2022, the feature was considered stable, so we enabled it for all the OBS users, but that wasn’t the end; later in September we reached the milestone of supporting Gitea on top of GitHub and GitLab. In December 2022 we introduced placeholder variables in addition to a customizable configuration file location. And now, we bring notifications for failed workflow runs.

This feature is documented in the SCM/CI Workflow Integration chapter of the OBS User Guide.

Fetching sources for package builds from your SCM

The usual way to fetch package source from an SCM is the source service obs-service-tar_scm. A while ago we have introduces another, more simplified method to do this: The OBS SCM Bridge.

SCM Bridge in a nutshell

SCM Bridge allows to manage the entire package sources in an external SCM repository. All you have to do is add a scmsync tag in the project/package meta file like this

<package name="sensormonitor" project="home:fpersson">
  <title>Simple golang webservice</title>
  <description>A Go application to monitor tempsensor</description>
  <scmsync>https://github.com/fpersson/sensormonitor</scmsync>
</package>

You can also setup an entire project by defining the scmsync tag in project metadata. Every top-level subdirectory of the SCM repository is then considered a package in OBS. There are many more options, check out the SCM Bridge documentation for more information.

Using the SCM bridge in your CI workflow

Once you set up the SCM Bridge the SCM CI integration will use it to fetch the correct sources for your SCM events. So workflow runs for a Pull/Merge request will fetch sources from the PR/MR sources etc.

That’s it, no further changes required from you. Happy Continuous Integrating! 💚

How To Give Us Feedback

There are two ways to reach us:

Please note that we favor GitHub to gather feedback as it allows us to easily keep track of the discussions.