This invention pertains to the technical field of drug research and development data processing, and specifically relates to a drug research and development (R&D) software repository with software package management system.
Software repository and software management tools are generally used together for software release and installation.
Wherein, the software repository is a prepared directory, or a series of servers for storing software, or a website that contains software packages and index files.
The software management package tool can automatically locate and obtain the correct software package in the repository, and provide management operations for the software package such as retrieval, installation, download, and deletion.
Commonly used software repository and package management tools such as apt, yum, pip, etc., provide software package release, storage, retrieval and installation functions.
The existing software repositories and software management tools have the following technical problems.
(1) Platform and development language restrictions: the drug R&D software is generally complicated and needs to be developed by a combination of multiple software development languages, and it is necessary to provide a cross-platform software development kit (SDK) to facilitate the use of partner companies. The existing software repository and package management system can only be used for a single development language or a single operating system platform. For example, apt and yum can only be used for the distribution of Linux system software, and pip can only be used for the distribution of software written in python.
(2) Lack of authorization function: the drug R&D software is generally used by the partner enterprise in the way of authorization, so a software repository with authorization function is required. Most of the existing software repositories and package management systems are used for open source software, as the open source software is free to use, the existing software repositories do not have software authorization functions or only have simple account& password verification functions.
(3) Lack of baseline definition: the drug R&D software is generally complex, composed of dozens of software packages, and the release of software packages needs to be controlled by defining baselines for easy management of the externally released packages and facilitating the collaboration of internal software developer. However, the existing software repository and package management systems mostly manage individual software package and software, and there is no clear baseline definition.
In view of the above technical problems, this invention provides a drug research and development (R&D) software repository and a software package management system, thereby realizing cross-platform, and multi-development language software package management to make the software distribution more concise.
The technical solutions adopted are described as following.
The drug R&D software repository includes: a user authentication module, a software package upload and index creation module, a baseline release management module, an authorization management module, a software package retrieval and download module, an adapter plug-in, and a storage layer.
In the user authentication module, the user can use a command line tool or a web page on a front end to access the software repository resources after authenticated through a username and a password or an application identification (app id) and a secret key.
In the software package upload and index creation module, users upload the software package and metadata of the software package through the command line or web front-end page. The metadata includes the following main fields: a package type, a package name, a storage source address, a deployment environment (corresponding to the four software development processes including development, testing, staging, and production), an operating platform (linux-64, linux-32, win-64, etc.), a package version, a software dependency, and a software description.
After the software repository receives the data from the front end, it stores the metadata as meta information in a relational database for indexing; then selects the corresponding adapter plug-in according to the package type, and stores the package file in the corresponding storage source. For example, a conda adapter plug-in is used to store conda type packages in an object storage service that conforms to a conda channel specification. The system has built-in a plurality of adapter plug-ins for conda, docker, and general file packages. In addition to the plurality of the adapter plug-ins provided by the system, users can also write other adapter plug-in to dock more software storage sources.
In the baseline release management module, the baseline is a “snapshot” of each software package component of a large software in the software repository in a specific period, used for software release and keeping the work synchronization of different software package component developers. The baseline management of this system is divided into two main functions including baseline creation and baseline upgrade.
The administrator can create a baseline on the web interface for a certain large software to be released, and select the software package components that constitute the baseline and a version of each software package to complete the release of a software baseline. After a period of iteration, when the requirements of a new stable version are reached, the baseline upgrade may be selected. At this time, a version number of each component is changed and new software package components are added.
The system internally abstracts the baseline into a special “software package” for management and storage. When the user creates or upgrades the baseline on the front end, a package, whose type is the baseline, is created inside the system, and all components are used as a dependency declaration of the baseline package. And this package is stored in the object storage service through an adapter corresponding to the baseline.
The authorization management module: this system adopts RBAC (role-based access control) for authorization management, and the corresponding software package can be retrieved and installed only after the account is authorized. Authorization is divided into baseline authorization and software package authorization. The authorization management module can authorize access to all software packages included in a certain baseline, or authorize a software package separately.
The software package retrieval and download module, after being authenticated by an authorized account, can retrieve and download the software package within an authorized scope. The system first searches for the corresponding meta information in the relational database, and then selects the corresponding adapter plug-in to download the software package according to the package type.
The adapter plug-in, through the built-in adapter plug-in and the adapter plug-in provided by the user, adapts to different underlying software repositories, so that the system can connect to different object storage systems and third-party software repositories for storage and download.
The storage layer uses object storage services and the third-party software repositories as storage services to store software packages. The relational database is used to store software package indexes and other metadata.
The software packages in the above-mentioned drug research and development software repository are managed by the following software package management system, including the following modules.
An authentication module is used to authenticate a username and a password of a user, or an application identification and a secret key, and grant different permissions to different accounts based on the RBAC;
A package management service module, which is a web service based on flask, is used to provide a REST Web application programming interface (API), and realize the management of the software package by calling different adapters.
The adapter plug-in, through the built-in adapter plug-in and the adapter plug-in provided by the user, adapts to different underlying software repositories, so that the system can connect to different object storage systems and third-party software repositories for storage and download.
The storage layer uses object storage services and the third-party software repositories as storage services (such as docker registry, conda channel) to store software packages. The relational database is used to store software package index and other metadata.
A web front-end module provides web front-end services, allowing users to directly perform package management, authorization management, baseline management and other operations on a web page.
A command-line tool module provides command line tools that allow users to retrieve, install, and upload software packages on a command line client.
The drug R&D software repository and the software package management system provided by this invention have the following technical effects.
1. The system can be connected to various object storage services and software repositories through a plug-in mode, thereby realizing cross-platform and multi-development language software package management, break restrictions of the traditional software repositories that can only be used for a single system or language.
2. This system has been added authentication module with software authorization functions, allowing users to conveniently authorize the software developed within the company to partners, making the software distribution more concise.
3. The system has been added the baseline management function, abstracting the baseline into a special software package, so as to achieve the management and control of the baseline release and baseline upgrade, making the software release more concise, and improving the collaboration efficiency of internal developers in the development of different software packages of the same software system.
The technical solutions of this invention will be further described in detail below with the drawing and embodiments.
The software repository structure is as shown in
There are two ways for users to access the software package, one is the command line client mode and the other is the web interface mode.
Wherein, in the command line client mode, users can install the command line client through the Python environment. After logging in to the system through a login command of
Pubtools, the software package is pushed to this system through a publish command of Pubtools, or the software package is downloaded through an install command of Pubtools, or the list of software packages is viewed in the system through a search command of Pubtools.
Users can also log in to the website of the system through a browser, and view and download software packages through the web interface. First the software package to be viewed is selected on the homepage, then the package name is clicked to view the package version list, and the view details or download tab of a certain version is clicked to view and download the package.
The user can only perform baseline management through the web page. The user can click Baseline Management→Create Baseline on the homepage, then enter the name of the software baseline to be created. Finally, the user selects the software packages included in the baseline and their corresponding versions, and clicks OK to complete the creation. When baseline improvement is required, the user clicks Baseline Management→Select Baseline Improvement on the homepage, then enters the name of the software baseline needed to be changed. Finally, the version of the software package contained in the baseline is modified to the new baseline version, and click OK to complete the baseline change.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/CN2019/130436 | 12/31/2019 | WO | 00 |