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:
- Managers group: test_staging.
- Main project: TestLinux.
- Staging Workflow
- Staging project TestLinux:Staging:A.
- Packages.
- Requests.
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.
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.
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.
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'
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.
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.
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.
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.
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.
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.
osc -A https://build.opensuse.org api -d '<requests><number>670595</number></requests>' -X POST '/staging/TestLinux/staging_projects/TestLinux:Staging:A/staged_requests'
osc -A https://build.opensuse.org api -X DELETE '/staging/TestLinux/staging_projects/TestLinux:Staging:A/staged_requests' -d '<requests><number>670595</number></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>"
osc -A https://build.opensuse.org api -X DELETE '/staging/TestLinux/excluded_requests' -d "<requests><number>670595</number><number>670596</number></requests>"
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)
User Guide > III Usage > Staging Workflow (osc)
https://openbuildservice.org/help/manuals/obs-user-guide/cha.obs.stagingworkflow.html
API documentation