This document provides instructions for contributing to Ocean's new GitLab project.
Contributing to the Ocean project can be broken down into these high-level steps.
- Obtain the Ocean Docker Image
- Launch a container using the Ocean Docker image
- Clone the Ocean sources
- Make your source modifications
- Test your changes, locally
- Submit your changes for review via a merge-request
- Verify that your Merge Request Passes GitLab CI
- Update your Merge Request (if needed)
- Merge your changes
To follow this guide, you will need:
- Access to Docker
- Permission to make merge requests to CEA's GitLab Forge Ocean project
- Permission to push sources to the S3 staging annex (via
rift annex push
)
Fetch the image tarball and load it into Docker using the following commands.
$> wget -q https://france.paratools.com/tarballs/ocean-container-latest.tgz
$> docker load --input ocean-container-latest.tgz
Loaded image: ocean-container:latest
$> docker images | grep ocean-container
REPOSITORY TAG IMAGE ID CREATED SIZE
ocean-container latest 81339e29b027 4 days ago 15.4GB
Once you've obtained the Ocean docker image, here is how you use it to launch a container.
You must use the flags shown below when launching the container in order to take advantage of certain Rift features.
$> docker run -it --privileged --device /dev/kvm --name ocean ocean-container:latest
[root@85763b49a628 ~]# rift --version
rift 0.12
[root@85763b49a628 ~]# cat /etc/os-release
NAME="Fedora Linux"
VERSION="39 (Container Image)"
ID=fedora
VERSION_ID=39
VERSION_CODENAME=""
PLATFORM_ID="platform:f39"
PRETTY_NAME="Fedora Linux 39 (Container Image)"
In this example we use a Personal Access Token (PAT) to clone the Ocean sources.
To obtain a PAT, see the instructions here:
$> docker run -it --privileged --device /dev/kvm --name ocean ocean-container:latest
[root@85763b49a628 ~]# TOKEN_NAME=...
[root@85763b49a628 ~]# TOKEN_VALUE=...
[root@85763b49a628 ~]# git clone https://$TOKEN_NAME:[email protected]/paratools/ocean.git
Cloning into 'ocean'...
remote: Enumerating objects: 19848, done.
remote: Counting objects: 100% (34/34), done.
remote: Compressing objects: 100% (34/34), done.
remote: Total 19848 (delta 15), reused 0 (delta 0), pack-reused 19814 (from 1)
Receiving objects: 100% (19848/19848), 41.67 MiB | 34.84 MiB/s, done.
Resolving deltas: 100% (8103/8103), done.
[root@498abeb8f3f3 ~]# cd ocean
[root@498abeb8f3f3 ocean]# git branch
* master
We will work towards an example merge-request where the rubygem-text version used in Ocean's master branch is downgraded from v1.3.1 to v1.3.0.
The first step is to create a branch to store our changes.
[root@498abeb8f3f3 ocean]# git checkout -b rubygem-text-downgrade-v1.3.0
[root@498abeb8f3f3 ocean]# git branch
master
* rubygem-text-downgrade-v1.3.0
The overall diff will look like this:
[root@498abeb8f3f3 ocean]# git diff
diff --git a/packages/rubygem-text/rubygem-text.spec b/packages/rubygem-text/rubygem-text.spec
index c22fa0fe..067341a7 100644
--- a/packages/rubygem-text/rubygem-text.spec
+++ b/packages/rubygem-text/rubygem-text.spec
@@ -1,8 +1,8 @@
-# Generated from text-1.3.1.gem by gem2rpm -*- rpm-spec -*-
+# Generated from text-1.3.0.gem by gem2rpm -*- rpm-spec -*-
%global gem_name text
Name: rubygem-%{gem_name}
-Version: 1.3.1
+Version: 1.3.0
Release: 2%{?dist}
Summary: A collection of text algorithms
License: MIT
@@ -67,8 +67,8 @@ popd
%{gem_instdir}/test
%changelog
-* Fri May 30 2025 Lyderic Debusschere <[email protected]> - 1.3.1-2
+* Fri May 30 2025 Lyderic Debusschere <[email protected]> - 1.3.0-2
- Add require test
-* Thu Feb 27 2025 <[email protected]> - 1.3.1-1
+* Thu Feb 27 2025 <[email protected]> - 1.3.0-1
- Initial package
diff --git a/packages/rubygem-text/sources/text-1.3.0.gem b/packages/rubygem-text/sources/text-1.3.0.gem
new file mode 100644
index 00000000..40268a43
--- /dev/null
+++ b/packages/rubygem-text/sources/text-1.3.0.gem
@@ -0,0 +1 @@
+d5ca93bcf591d60eb4fb3dcd09db1391
\ No newline at end of file
diff --git a/packages/rubygem-text/sources/text-1.3.1.gem b/packages/rubygem-text/sources/text-1.3.1.gem
deleted file mode 100644
index 83b34b43..00000000
--- a/packages/rubygem-text/sources/text-1.3.1.gem
+++ /dev/null
@@ -1 +0,0 @@
-514c3d1db7a955fe793fc0cb149c164f
\ No newline at end of file
The following changes are made:
- packages/rubygem-text/rubygem-text.spec: version changed to v1.3.0, changelog updated
- packages/rubygem-text/sources/text-1.3.1.gem: deleted
- packages/rubygem-text/sources/text-1.3.1.gem: added
To properly add the v1.3.0 sources, we have to download the v1.3.0 gemfile and put it in packages/rubygem-text/sources.
[root@498abeb8f3f3 ocean]# wget -q https://rubygems.org/downloads/text-1.3.0.gem -P packages/rubygem-text/sources
[root@498abeb8f3f3 ocean]# du -sh packages/rubygem-text/sources/text-1.3.0.gem
136K packages/rubygem-text/sources/text-1.3.0.gem
The sources for v1.3.0 need to be pushed to the Rift staging annex before the commit is made. This way, the actual source contents themselves are not committed to the Ocean repo.
[root@498abeb8f3f3 ocean]# rift annex push packages/rubygem-text/sources/text-1.3.0.gem
Username [root]: YOUR-USERNAME
Password:
> packages/rubygem-text/sources/text-1.3.0.gem: moved and replaced
Now that the v1.3.0 sources are uploaded, the contents of the gemfile contains onlythe hash of the sources.
[root@498abeb8f3f3 ocean]# echo $(cat packages/rubygem-text/sources/text-1.3.0.gem)
d5ca93bcf591d60eb4fb3dcd09db1391
In order for your changes to ultimately be accepted to Ocean, the GitLab CI for Ocean requires they pass both "RPM Lint" and "Validate Diff" jobs.
You can ensure your changes pass these tests by running them locally, prior to submitting your merge request.
We can run the RPM Linter on our changes just as it will be run as part of the automated GitLab CI like this:
[root@498abeb8f3f3 ocean]# git --no-pager diff | rift gitlab -
0 packages and 1 specfiles checked; 0 errors, 0 warnings.
[root@498abeb8f3f3 ocean]# echo $?
0
If the RPM Lint test passes, you can run the "Validate Diff" tests locally just as it will be run as part of automated GitLab CI like this:
[root@498abeb8f3f3 ocean]# git --no-pager diff | rift validdiff -
** Checking package 'rubygem-text' on architecture x86_64 **
> Validate package info...
> Validate specfile...
0 packages and 1 specfiles checked; 0 errors, 0 warnings.
> Preparing Mock environment...
> Validate source RPM build...
> Validate RPMS build...
> Preparing x86_64 test environment
> Launching VM ...
Metadata cache created.
No repository match: working
Upgraded:
e2fsprogs-1.47.2-wc2.ocean1.el9.x86_64
e2fsprogs-libs-1.47.2-wc2.ocean1.el9.x86_64
libcom_err-1.47.2-wc2.ocean1.el9.x86_64
libss-1.47.2-wc2.ocean1.el9.x86_64
** Starting tests of package rubygem-text on architecture x86_64 **
> Running test 'rubygem-text.basic_install' on architecture 'x86_64'
[Testing 'rubygem-text' (1/2)]
Last metadata expiration check: 0:00:36 ago on Sun Sep 21 02:53:29 2025.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
rubygem-text noarch 1.3.0-2.el9 staging 17 k
Installing dependencies:
ruby x86_64 3.0.7-162.el9_4 updates 38 k
ruby-libs x86_64 3.0.7-162.el9_4 updates 3.2 M
rubygem-json x86_64 2.5.1-162.el9_4 updates 51 k
rubygem-psych x86_64 3.3.2-162.el9_4 updates 48 k
rubygems noarch 3.2.33-162.el9_4 updates 253 k
Installing weak dependencies:
ruby-default-gems noarch 3.0.7-162.el9_4 updates 29 k
rubygem-bigdecimal x86_64 3.0.0-162.el9_4 updates 51 k
rubygem-bundler noarch 2.2.33-162.el9_4 updates 369 k
rubygem-io-console x86_64 0.5.7-162.el9_4 updates 22 k
rubygem-rdoc noarch 6.3.4.1-162.el9_4 updates 398 k
Transaction Summary
================================================================================
Install 11 Packages
Total size: 4.4 M
Total download size: 4.4 M
Installed size: 16 M
Downloading Packages:
--------------------------------------------------------------------------------
Total 8.1 MB/s | 4.4 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Installed:
ruby-3.0.7-162.el9_4.x86_64
ruby-default-gems-3.0.7-162.el9_4.noarch
ruby-libs-3.0.7-162.el9_4.x86_64
rubygem-bigdecimal-3.0.0-162.el9_4.x86_64
rubygem-bundler-2.2.33-162.el9_4.noarch
rubygem-io-console-0.5.7-162.el9_4.x86_64
rubygem-json-2.5.1-162.el9_4.x86_64
rubygem-psych-3.3.2-162.el9_4.x86_64
rubygem-rdoc-6.3.4.1-162.el9_4.noarch
rubygem-text-1.3.0-2.el9.noarch
rubygems-3.2.33-162.el9_4.noarch
Complete!
> Cleanup last transaction
Last metadata expiration check: 0:00:40 ago on Sun Sep 21 02:53:29 2025.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Removing:
ruby-default-gems noarch 3.0.7-162.el9_4 @updates 91 k
rubygem-bigdecimal x86_64 3.0.0-162.el9_4 @updates 106 k
rubygem-bundler noarch 2.2.33-162.el9_4 @updates 1.3 M
rubygem-io-console x86_64 0.5.7-162.el9_4 @updates 33 k
rubygem-rdoc noarch 6.3.4.1-162.el9_4 @updates 1.7 M
rubygem-text noarch 1.3.0-2.el9 @staging 29 k
Removing dependent packages:
ruby x86_64 3.0.7-162.el9_4 @updates 90 k
ruby-libs x86_64 3.0.7-162.el9_4 @updates 12 M
rubygem-json x86_64 2.5.1-162.el9_4 @updates 134 k
rubygem-psych x86_64 3.3.2-162.el9_4 @updates 135 k
rubygems noarch 3.2.33-162.el9_4 @updates 970 k
Transaction Summary
================================================================================
Remove 11 Packages
Freed space: 16 M
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Removed:
ruby-3.0.7-162.el9_4.x86_64
ruby-default-gems-3.0.7-162.el9_4.noarch
ruby-libs-3.0.7-162.el9_4.x86_64
rubygem-bigdecimal-3.0.0-162.el9_4.x86_64
rubygem-bundler-2.2.33-162.el9_4.noarch
rubygem-io-console-0.5.7-162.el9_4.x86_64
rubygem-json-2.5.1-162.el9_4.x86_64
rubygem-psych-3.3.2-162.el9_4.x86_64
rubygem-rdoc-6.3.4.1-162.el9_4.noarch
rubygem-text-1.3.0-2.el9.noarch
rubygems-3.2.33-162.el9_4.noarch
Complete!
[Testing 'rubygem-text-doc' (2/2)]
Last metadata expiration check: 0:00:41 ago on Sun Sep 21 02:53:29 2025.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
rubygem-text-doc noarch 1.3.0-2.el9 staging 309 k
Installing dependencies:
ruby x86_64 3.0.7-162.el9_4 updates 38 k
ruby-libs x86_64 3.0.7-162.el9_4 updates 3.2 M
rubygem-json x86_64 2.5.1-162.el9_4 updates 51 k
rubygem-psych x86_64 3.3.2-162.el9_4 updates 48 k
rubygem-text noarch 1.3.0-2.el9 staging 17 k
rubygems noarch 3.2.33-162.el9_4 updates 253 k
Installing weak dependencies:
ruby-default-gems noarch 3.0.7-162.el9_4 updates 29 k
rubygem-bigdecimal x86_64 3.0.0-162.el9_4 updates 51 k
rubygem-bundler noarch 2.2.33-162.el9_4 updates 369 k
rubygem-io-console x86_64 0.5.7-162.el9_4 updates 22 k
rubygem-rdoc noarch 6.3.4.1-162.el9_4 updates 398 k
Transaction Summary
================================================================================
Install 12 Packages
Total size: 4.7 M
Total download size: 4.4 M
Installed size: 17 M
Downloading Packages:
--------------------------------------------------------------------------------
Total 10 MB/s | 4.4 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Installed:
ruby-3.0.7-162.el9_4.x86_64
ruby-default-gems-3.0.7-162.el9_4.noarch
ruby-libs-3.0.7-162.el9_4.x86_64
rubygem-bigdecimal-3.0.0-162.el9_4.x86_64
rubygem-bundler-2.2.33-162.el9_4.noarch
rubygem-io-console-0.5.7-162.el9_4.x86_64
rubygem-json-2.5.1-162.el9_4.x86_64
rubygem-psych-3.3.2-162.el9_4.x86_64
rubygem-rdoc-6.3.4.1-162.el9_4.noarch
rubygem-text-1.3.0-2.el9.noarch
rubygem-text-doc-1.3.0-2.el9.noarch
rubygems-3.2.33-162.el9_4.noarch
Complete!
> Cleanup last transaction
Last metadata expiration check: 0:00:45 ago on Sun Sep 21 02:53:29 2025.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Removing:
ruby-default-gems noarch 3.0.7-162.el9_4 @updates 91 k
rubygem-bigdecimal x86_64 3.0.0-162.el9_4 @updates 106 k
rubygem-bundler noarch 2.2.33-162.el9_4 @updates 1.3 M
rubygem-io-console x86_64 0.5.7-162.el9_4 @updates 33 k
rubygem-rdoc noarch 6.3.4.1-162.el9_4 @updates 1.7 M
rubygem-text-doc noarch 1.3.0-2.el9 @staging 1.1 M
Removing dependent packages:
ruby x86_64 3.0.7-162.el9_4 @updates 90 k
ruby-libs x86_64 3.0.7-162.el9_4 @updates 12 M
rubygem-json x86_64 2.5.1-162.el9_4 @updates 134 k
rubygem-psych x86_64 3.3.2-162.el9_4 @updates 135 k
rubygem-text noarch 1.3.0-2.el9 @staging 29 k
rubygems noarch 3.2.33-162.el9_4 @updates 970 k
Transaction Summary
================================================================================
Remove 12 Packages
Freed space: 17 M
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Removed:
ruby-3.0.7-162.el9_4.x86_64
ruby-default-gems-3.0.7-162.el9_4.noarch
ruby-libs-3.0.7-162.el9_4.x86_64
rubygem-bigdecimal-3.0.0-162.el9_4.x86_64
rubygem-bundler-2.2.33-162.el9_4.noarch
rubygem-io-console-0.5.7-162.el9_4.x86_64
rubygem-json-2.5.1-162.el9_4.x86_64
rubygem-psych-3.3.2-162.el9_4.x86_64
rubygem-rdoc-6.3.4.1-162.el9_4.noarch
rubygem-text-1.3.0-2.el9.noarch
rubygem-text-doc-1.3.0-2.el9.noarch
rubygems-3.2.33-162.el9_4.noarch
Complete!
> Test 'rubygem-text.basic_install' on architecture x86_64: OK
> Running test 'rubygem-text.ruby_require' on architecture 'x86_64'
Last metadata expiration check: 0:00:46 ago on Sun Sep 21 02:53:29 2025.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
rubygem-text noarch 1.3.0-2.el9 staging 17 k
Installing dependencies:
ruby x86_64 3.0.7-162.el9_4 updates 38 k
ruby-libs x86_64 3.0.7-162.el9_4 updates 3.2 M
rubygem-json x86_64 2.5.1-162.el9_4 updates 51 k
rubygem-psych x86_64 3.3.2-162.el9_4 updates 48 k
rubygems noarch 3.2.33-162.el9_4 updates 253 k
Installing weak dependencies:
ruby-default-gems noarch 3.0.7-162.el9_4 updates 29 k
rubygem-bigdecimal x86_64 3.0.0-162.el9_4 updates 51 k
rubygem-bundler noarch 2.2.33-162.el9_4 updates 369 k
rubygem-io-console x86_64 0.5.7-162.el9_4 updates 22 k
rubygem-rdoc noarch 6.3.4.1-162.el9_4 updates 398 k
Transaction Summary
================================================================================
Install 11 Packages
Total size: 4.4 M
Total download size: 4.4 M
Installed size: 16 M
Downloading Packages:
(1/10): ruby-default-gems-3.0.7-162.el9_4.noarc 126 kB/s | 29 kB 00:00
(2/10): ruby-3.0.7-162.el9_4.x86_64.rpm 143 kB/s | 38 kB 00:00
(3/10): rubygem-bigdecimal-3.0.0-162.el9_4.x86_ 1.1 MB/s | 51 kB 00:00
(4/10): rubygem-bundler-2.2.33-162.el9_4.noarch 5.7 MB/s | 369 kB 00:00
(5/10): rubygem-io-console-0.5.7-162.el9_4.x86_ 413 kB/s | 22 kB 00:00
(6/10): rubygem-json-2.5.1-162.el9_4.x86_64.rpm 1.3 MB/s | 51 kB 00:00
(7/10): rubygem-psych-3.3.2-162.el9_4.x86_64.rp 1.2 MB/s | 48 kB 00:00
(8/10): rubygem-rdoc-6.3.4.1-162.el9_4.noarch.r 7.7 MB/s | 398 kB 00:00
(9/10): rubygems-3.2.33-162.el9_4.noarch.rpm 4.7 MB/s | 253 kB 00:00
(10/10): ruby-libs-3.0.7-162.el9_4.x86_64.rpm 6.6 MB/s | 3.2 MB 00:00
--------------------------------------------------------------------------------
Total 9.0 MB/s | 4.4 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : ruby-libs-3.0.7-162.el9_4.x86_64 1/11
Installing : rubygem-bigdecimal-3.0.0-162.el9_4.x86_64 2/11
Installing : ruby-default-gems-3.0.7-162.el9_4.noarch 3/11
Installing : rubygem-bundler-2.2.33-162.el9_4.noarch 4/11
Installing : rubygem-io-console-0.5.7-162.el9_4.x86_64 5/11
Installing : rubygem-json-2.5.1-162.el9_4.x86_64 6/11
Installing : rubygem-psych-3.3.2-162.el9_4.x86_64 7/11
Installing : rubygem-rdoc-6.3.4.1-162.el9_4.noarch 8/11
Installing : rubygems-3.2.33-162.el9_4.noarch 9/11
Installing : ruby-3.0.7-162.el9_4.x86_64 10/11
Installing : rubygem-text-1.3.0-2.el9.noarch 11/11
Running scriptlet: rubygem-text-1.3.0-2.el9.noarch 11/11
Verifying : rubygem-text-1.3.0-2.el9.noarch 1/11
Verifying : ruby-3.0.7-162.el9_4.x86_64 2/11
Verifying : ruby-default-gems-3.0.7-162.el9_4.noarch 3/11
Verifying : ruby-libs-3.0.7-162.el9_4.x86_64 4/11
Verifying : rubygem-bigdecimal-3.0.0-162.el9_4.x86_64 5/11
Verifying : rubygem-bundler-2.2.33-162.el9_4.noarch 6/11
Verifying : rubygem-io-console-0.5.7-162.el9_4.x86_64 7/11
Verifying : rubygem-json-2.5.1-162.el9_4.x86_64 8/11
Verifying : rubygem-psych-3.3.2-162.el9_4.x86_64 9/11
Verifying : rubygem-rdoc-6.3.4.1-162.el9_4.noarch 10/11
Verifying : rubygems-3.2.33-162.el9_4.noarch 11/11
Installed:
ruby-3.0.7-162.el9_4.x86_64
ruby-default-gems-3.0.7-162.el9_4.noarch
ruby-libs-3.0.7-162.el9_4.x86_64
rubygem-bigdecimal-3.0.0-162.el9_4.x86_64
rubygem-bundler-2.2.33-162.el9_4.noarch
rubygem-io-console-0.5.7-162.el9_4.x86_64
rubygem-json-2.5.1-162.el9_4.x86_64
rubygem-psych-3.3.2-162.el9_4.x86_64
rubygem-rdoc-6.3.4.1-162.el9_4.noarch
rubygem-text-1.3.0-2.el9.noarch
rubygems-3.2.33-162.el9_4.noarch
Complete!
text loaded successfully
> Test 'rubygem-text.ruby_require' on architecture x86_64: OK
> Cleaning x86_64 test environment
** All packages checked on architecture x86_64 **
NAME ARCH DURATION RESULT
---- ---- -------- ------
rubygem-text.build x86_64 16s Success
rubygem-text.basic_install x86_64 11s Success
rubygem-text.ruby_require x86_64 3s Success
** Test suite SUCCEEDED **
Once you have verified your changes pass the tests, you should create a merge request to submit them to Ocean for review.
[root@498abeb8f3f3 ocean]# git add packages/rubygem-text
[root@498abeb8f3f3 ocean]# git status -s
M packages/rubygem-text/rubygem-text.spec
A packages/rubygem-text/sources/text-1.3.0.gem
D packages/rubygem-text/sources/text-1.3.1.gem
[root@498abeb8f3f3 ocean]# git config --global user.email your-email
[root@498abeb8f3f3 ocean]# git config --global user.name your-name
[root@498abeb8f3f3 ocean]# git commit -m 'rubygem-text: downgrade to v1.3.0'
[rubygem-text-downgrade-v1.3.0 c9ec7b97] rubygem-text: downgrade to v1.3.0
3 files changed, 5 insertions(+), 5 deletions(-)
create mode 100644 packages/rubygem-text/sources/text-1.3.0.gem
delete mode 100644 packages/rubygem-text/sources/text-1.3.1.gem
[root@498abeb8f3f3 ocean]# git push -u origin rubygem-text-downgrade-v1.3.0
Enumerating objects: 12, done.
Counting objects: 100% (12/12), done.
Delta compression using up to 8 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (7/7), 658 bytes | 658.00 KiB/s, done.
Total 7 (delta 3), reused 0 (delta 0), pack-reused 0 (from 0)
remote:
remote: To create a merge request for rubygem-text-downgrade-v1.3.0, visit:
remote: https://gitlab-forge.ccc.ocre.cea.fr/paratools/ocean/-/merge_requests/new?merge_request%5Bsource_branch%5D=rubygem-text-downgrade-v1.3.0
remote:
To https://gitlab-forge.ccc.ocre.cea.fr/paratools/ocean.git
* [new branch] rubygem-text-downgrade-v1.3.0 -> rubygem-text-downgrade-v1.3.0
branch 'rubygem-text-downgrade-v1.3.0' set up to track 'origin/rubygem-text-downgrade-v1.3.0'.
Note that the output above contains the following instructions:
remote: To create a merge request for rubygem-text-downgrade-v1.3.0, visit:
remote: https://gitlab-forge.ccc.ocre.cea.fr/paratools/ocean/-/merge_requests/new?merge_request%5Bsource_branch%5D=rubygem-text-downgrade-v1.3.0
Navigate to this URL in your web browser to submit the pull request.
When submitting the pull request, be careful to select the correct target branch which you are requesting your changes be merged in to. For this example, we are targetting our changes to the default branch, master branch. If you need to target a different branch, click "Change branches". See the screenshot below.

Once submitted, GitLab will automatically test your merge-request as part of CI.
Initially, the merge request will look something like this:

Note where it says "Merge request pipeline #651 running."
Click the pipeline number to view your merge-request's CI pipeline.

In the screenshot here we see that the RPM Lint job has passed and that the Validate Diff job is running.
Click on a job to view its logs.
Once the Validate Diff job completes, its output should match what was seen when the test was run locally prior to submitting the merge-request:

Any additional commits pushed to your merge-request branch will cause CI to re-run.
You can merge your changes to the target branch once CI passes and the appropriate number of reviewers have approved it.
