SCM Integration: Step by Step
Branching packages is not enough for you? Let’s go step by step 😉
OBS moves forward on its integration with GitHub/GitLab by adding two new steps: link_package
and configure_repositories
.
Starting today, you can set up your OBS workflows to create a package linked to an existing one.
You can also configure the repositories of a project in which you want to build packages.
And as if that weren’t enough, you are now able to manage the tokens through the web UI.
Join the beta program and keep reading to discover all you can do.
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. Later on we brought notifications for failed workflow runs, and now we introduced a new way of listing the events by multiple filter parameters
This feature is documented in the SCM/CI Workflow Integration chapter of the OBS User Guide.
Tokens on the Web User Interface
In our first blog post regarding the SCM integration with OBS, we explained how to handle workflow tokens via API.
As we strive to make your work easier, from now on you can manage any kind of OBS tokens through the web interface.
Go to your profile page and click on the action Manage Your Tokens
in the left-hand side menu.
For now, only workflow tokens can be updated to change the SCM token attached to them. This is in case you had to regenerate the SCM token if you, for example, lost it.
The link_package
Step
You probably tested the first step we implemented: branch_package
.
You configured the workflow and … 💣 boom! a new project/package appeared in OBS and the result of its builds were reported back to your pull/merge request.
What if you want to do the same but instead of branching the package you simply want to link it? Now you can.
Follow these easy steps for that:
- Set up the integration between GitHub/GitLab and OBS. If you have not yet, please refer to this blog post.
- Add the new step to
.obs/workflows.yml
workflow:
steps:
- link_package:
source_project: games
source_package: ctris
target_project: games:devel
Depending on the webhook event, OBS will link the package games/ctris
to a
different project or package. In the case of a pull request event, games/ctris
will
be linked to games:devel:$SCM_ORGANIZATION:$SCM_PROJECT:PR-$PR_NUMBER/ctris
. For a
push event, games/ctris
will be linked to games:devel/ctris-$COMMIT_SHA
.
This step is equivalent to osc linkpac.
Unlike the branch_package
step, the link_package
step creates a new package
but does not copy the files nor the repositories from the source package.
The configure_repositories
Step
You can not imagine how versatile workflows could be with this new step!
Inside the SCM configuration file, simply indicate which repositories you want for a project in which you’ll build your packages for. Easy peasy!
- Set up the integration between GitHub/GitLab and OBS. If you have not yet, please refer to this blog post.
- Add the new step to
.obs/workflows.yml
as explained in the user documentation.
More to Come!
Do not miss upcoming blog posts, there are a lot of features to come:
- Reporting results for multiple packages
- New workflow steps apart from the
branch_package
,link_package
andconfigure_repositories
- Filtering by branch or SCM event
- Multiple workflows
- Integrate with more SCM services like Pagure
- OBS triggering webhooks on some other services
How To Give Us Feedback
There are two ways to reach us:
- On GitHub, by opening an issue and / or commenting on an already opened issue.
- On IRC, by talking directly to us. We are in the channel
#opensuse-buildservice
on Libera.Chat.
Please note that we favor GitHub to gather feedback as it allows us to easily keep track of the discussions.