Skip to content

Instantly share code, notes, and snippets.

@saraycp
Last active February 4, 2019 13:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save saraycp/ddda1cc4b622149926287b0cadede46b to your computer and use it in GitHub Desktop.
Save saraycp/ddda1cc4b622149926287b0cadede46b to your computer and use it in GitHub Desktop.
Staging Workflow for Staging Managers (January 2019)

Staging Workflow for Staging Managers (January 2019)

Introduction

The new workflow can be tested on https://build.opensuse.org.

In order to make it easier for you to try out, we have prepared a testing scenario. It includes all the elements you could need while playing around with the new Staging Workflow:

There are also some smaller changes in the terminology,

  • Staging Dashboard is now called Staging Workflow.
  • Staging Project stays Staging Project.
  • Requests in Staging Projects become StagedRequests.
  • Requests ignored for the workflow become ExcludedRequests.

There are of course also some limitations to the current state:

  • All of the API features below don't have osc support yet, that's why you will see a lot of osc api calls.
  • Some of the features are API only, some are UI only.

Staging Workflow

Previously it was not possible to create and change the Staging Workflow inside the application, you would have to commit code & wait for it to be deployed as all of the configuration was hard coded. One of the main reasons we wanted to pull this into the OBS code base was to enable also other groups of developers to benefit from the Staging Workflow you have invented. So creating and changing the workflow is now possible inside the OBS.

Creating

Here is how you can create a Staging Workflow for any project you like to have one for. At the moment, the following URL is the starting point to create a Staging Workflow

https://build.opensuse.org/staging_workflows/new?project=TestLinux

After accessing that URL, it is compulsory to set the Managers Group. So add the group name in the text field and click on Create Staging Projects. Two new Staging Projects will be automatically created and assigned to the current Staging Workflow: Staging:A and Staging:B.

We plan to integrate this link into the project tabs in the future, so everyone can access it.

Assign New Staging Projects to the Staging Wokflow

Previously, your Staging Project where confined to the namespace :Staging: because this represented the association between the workflow and the project. With the new setup you can now choose whatever project you want to. Which opens up the possibility to share or move Staging Projects or some other stuff you can come up with. Maybe you already have ideas?

You can create new Staging Projects from scratch or even copy an existing one. On the dashboard just click on Configure to start playing arround with Staging Projects.

Click on Create Project to create a Staging Project from scratch for the current Staging Workflow. In order to copy from an existing project, simply choose the Staging Project you want to copy from (the template) and click on its Copy icon on the actions column. The Staging Project copy is processing on background, so there might be a delay before it shows up.

Coping project is also already possible via the API

osc api -X POST '/staging/TestLinux/staging_projects/TestLinux:Staging:A/copy/TestLinux:Staging:A_copy'

Change the Staging Manager Group

Via Configure you can also change the managers group of a Staging Workflow, this will automatically unassign the old group and assign the new one to all the related Staging Projects.

Delete the Whole Staging Workflow

You can also Delete the whole thing which will remove the Workflow itself and the associated Staging Projects if requested.

Enabling you to create/configure everything, not only copying projects, via the API is on our TODO list.

Staging Workflow Page

The new Staging Workflow page looks quite similar to the old one. It contains a list of Staging Projects with its requests and problems summary. And, on the right side, the well-known Legend and Infos boxes.

One major difference is that reviewers of requests don't have a hardcoded role/icon anymore but have their own individual icon displayed (that you can configure for the user/group). We changed this so it's a bit more flexible because we believe not everyone will have the same bots/people reviewing requests.

Staging Project Page

The Staging Project page is also quite similar to the old one. It shows all the requests and status checks, as well as the History section.

Staging Project History

Being placed on the Staging Workflow dashboard, click on the Staging Project name to see more details. The History is on the bottom of the page.

Working with Requests

The main functionality of staging requests to different projects, that so far happened completely in the osc staging plugin, now also happens inside OBS. For now it's "just" possible to move requests around and their package/sources will move with them. We are aware that there is more logic to it and are preparing to move this also. All of this is currently only API functionality but developed in a way that we can easily introduce this to the UI if you want us to.

Go on reading to see how you can work with requests.

Assign a Request to a Staging Project

osc -A https://build.opensuse.org api -d '<requests><number>670595</number></requests>' -X POST '/staging/TestLinux/staging_projects/TestLinux:Staging:A/staged_requests'

Unassign a Request from a Staging Project

osc -A https://build.opensuse.org api -X DELETE '/staging/TestLinux/staging_projects/TestLinux:Staging:A/staged_requests' -d '<requests><number>670595</number></requests>'

Ignore two Requests

osc -A https://build.opensuse.org api -X POST '/staging/TestLinux/excluded_requests' -d "<excluded_requests><request number='670595' description='Lorem ipsum A'/><request number='670596' description='Lorem ipsum B'/></excluded_requests>"

Unignore two Requests

osc -A https://build.opensuse.org api -X DELETE '/staging/TestLinux/excluded_requests' -d "<requests><number>670595</number><number>670596</number></requests>"

Documentation

We also worked on documenting this in our books and the API docu. It would be nice if you could also give us feedback about this.

Best Practice Guide > Using the OBS Web UI > Staging (webui)

https://openbuildservice.org/help/manuals/obs-best-practices/cha.obs.best-practices.webuiusage.html#staging_how_to

User Guide > III Usage > Staging Workflow (osc)

https://openbuildservice.org/help/manuals/obs-user-guide/cha.obs.stagingworkflow.html

API documentation

https://build.opensuse.org/apidocs/index#190

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment