Security News
PyPI’s New Archival Feature Closes a Major Security Gap
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
Unofficial implementation of the GitLab runner client for making customised CI runners
.. image:: https://github.com/chrisburr/gitlab-runner-api/workflows/Testing/badge.svg?branch=main :target: https://github.com/chrisburr/gitlab-runner-api/actions?query=branch%3Amain :alt: CI Status
.. image:: https://readthedocs.org/projects/gitlab-runner-api/badge/?version=latest :target: https://gitlab-runner-api.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status
.. image:: https://badge.fury.io/py/gitlab-runner-api.svg :target: https://pypi.org/project/gitlab-runner-api/ :alt: PyPI Package
.. image:: https://img.shields.io/conda/vn/conda-forge/gitlab-runner-api/ :target: https://github.com/conda-forge/gitlab-runner-api-feedstock/ :alt: Conda-forge Package
An unofficial Python implementation of the API for creating customised GitLab CI runners.
This package provides the basic functionality for registering a Runner <https://gitlab-runner-api.readthedocs.io/en/latest/runner.html#gitlab_runner_api.Runner>
.
This object can then be used to request a Job <https://gitlab-runner-api.readthedocs.io/en/latest/job.html#job-api>
and communicate the log, status and artifacts back to GitLab.
No functionality is provided to execute the payloads defined in the .gitlab-ci.yml
.
This package was originally developed to support LHCb's Analysis Productions <https://gitlab.cern.ch/lhcb-datapkg/AnalysisProductions>
_ by providing a CI runner that could submit jobs to LHCbDIRAC.
More details can be found in TODO.
The simplest way to register a new Runner <https://gitlab-runner-api.readthedocs.io/en/latest/runner.html#gitlab_runner_api.Runner>
_ is with the included command line tool:
.. code-block::
$ register-runner --help usage: register-runner [-h] [--locked] [--maximum-timeout MAXIMUM_TIMEOUT] api_url token output_fn
positional arguments: api_url token output_fn
optional arguments: -h, --help show this help message and exit --locked Lock the runner the to the current project --maximum-timeout MAXIMUM_TIMEOUT Maximum timeout set when this Runner will handle the job (in seconds)
For example
.. code-block:: bash
$ register-runner "https://gitlab.cern.ch/" "MY_REGISTRATION_TOKEN" "my-runner-data.json " --locked INFO:gitlab_runner_api:gitlab.cern.ch: Successfully registered runner 6602 (abcdefghij) INFO:gitlab_runner_api:gitlab.cern.ch: Successfully initialised runner 6602
where arguments can be found by navigating to the "CI/CD" page of the desired repository's settings.
After a runner has been registered it can be loaded from the .json
file and used to request jobs:
.. code-block:: python
from gitlab_runner_api import Runner runner = Runner.load("my-runner-data.json") runner.check_auth() if job := runner.request_job(): print("Received a new job, starting executor") my_job_executor(job) else: print("No jobs are currently available")
A minimal CI executor might run as follows:
.. code-block:: python
from gitlab_runner_api import failure_reasons
job.log += f"Starting job with id {job.id} for branch {job.ref}\n" do_clone_and_checkout(job.repo_url, job.commit_sha) success = run_tests(job) if success: job.log += "All tests ran successfully\n" job.set_success() else: # ANSI formatting codes can be used to enhance the CI logs job.log += "\u001b[31mJob failed!!!\u001b[0m\n" job.set_failed(failure_reasons.ScriptFailure())
See the reference Job <https://gitlab-runner-api.readthedocs.io/en/latest/job.html#job-api>
_ documentation for the full list of available properties.
For long running jobs it may be desirable to persist the job object between calls.
This can be done using a similar interface to the pickle
module in the Python standard library:
.. code-block:: python
job_data = job.dumps()
from gitlab_runner_api import Job job = Job.loads(job_data)
Note: The job log is included in the persisted data therefore the Job <https://gitlab-runner-api.readthedocs.io/en/latest/job.html#job-api>
_ object cannot be persisted once and loaded multiple times without loosing the log messages.
FAQs
Unofficial implementation of the GitLab runner client for making customised CI runners
We found that gitlab-runner-api demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
Research
Security News
Malicious npm package postcss-optimizer delivers BeaverTail malware, targeting developer systems; similarities to past campaigns suggest a North Korean connection.
Security News
CISA's KEV data is now on GitHub, offering easier access, API integration, commit history tracking, and automated updates for security teams and researchers.