openEuler软件包自动升级专题-CALL FOR HELP

This topic primarily synchronizes and records the progress of openEuler package auto-upgrade, along with the latest plans and schedules. We welcome your feedback and discussions to help us optimize and improve the tool’s usability.

Feedback issues may include, but are not limited to:

  1. Changelog accuracy: e.g., issues with accurate extraction of changelog, or inability to extract changelog at all.
  2. Suggestions and any other areas for improvement.

We will analyze each repository individually, extract common IT solutions from reported issues, and iteratively optimize the tool.

[center]================================Progress Updates================================[/center]

At the May 28, 2025 TC meeting, stakeholders raised the following requirement: How can developers more easily participate in auto-upgrade PRs and modify PR content more conveniently?

/chatrepair officially launched — developers can now directly comment /chatrepair in auto-upgrade PRs and follow specific commands to modify the PR.

Example PR: rubygem-puma update 5.6.5->6.0.0 · Pull Request !62 · src-openEuler/rubygem-puma - Gitee.com

Latest PR links:

Source0 Specification Compliance:

Issue List:

  1. A large number of Python repositories lack changelog.
  2. A small number of upgrade PRs have upgraded to alpha or dev versions.
  3. Automation of closing CI failures and automated repair handling.

[center]================================Project Introduction=================================[/center]

The openEuler package auto-upgrade tool is an efficient maintenance solution tailored for the open-source operating system ecosystem. It focuses on software packages with simple compilation dependencies and low upgrade risks, such as language packages and toolsets. Through intelligent workflows, it enables full lifecycle automation. The tool aims to solve time-consuming, labor-intensive manual maintenance and version lag issues, providing lightweight, reliable upgrade support for community developers and system operations teams.

How to Use:
Refer to autoupgrade/readme.md · openEuler/infrastructure - Gitee.com, configure as required, and the tool will automatically create upgrade PRs in your repository.

Usage Example:
[left]1. Add configuration for perl-Authen-SASL in https://gitee.com/openeuler/infrastructure/blob/master/autoupgrade/software.yaml[/left]

  1. After the tool detects upstream version changes, it triggers an upgrade PR. Oops, the PR seems to have failed.

  1. Let’s try /repair (repair can be manually triggered or wait for script auto-trigger).

  1. Repair also failed — the bot detected that additional dependencies are required for the upgrade.

  1. The bot automatically created a dependency issue for you.

[center]===========================CALL FOR HELP===============================[/center]

SPEC Specification Issues
We’ve found that many repositories fail to upgrade due to non-compliant SPEC file formatting.

Example of problematic SPEC:

  1. Hardcoded version in Source0: This prevents the tool from automatically replacing the version, leading to tar file download failures.
  2. Invalid Source0: The current Source0 URL cannot fetch the upgraded version 1.1.0. Please ensure the Source0 field supports downloading all versions.

Upstream Version Monitoring
Our monitoring service still has gaps. When introducing new packages, please include the upstream source URL for the new package. Refer to this PR for guidance:
https://gitee.com/openeuler/community/pulls/6377

Changelog Missing Issues
When upgrading Python, Rubygem, and other packages, we find that many lack a changelog URL. Unlike Perl, which has a unified hosting location, each repository stores changelogs at different locations. We kindly request that you provide the actual changelog path for your repository so our tool can automatically generate changelogs during upgrades.

Repository Gatekeeper Base Engineering Configuration Issues
We observed inconsistencies between repairbot results and gatekeeper logs. This occurs because the base engineering used by repairbot differs from that configured in the repository’s CI gatekeeper. Please ensure the correct base engineering is set in the CI gatekeeper to guarantee consistent execution results.

Example:
https://gitee.com/src-openeuler/perl-Geo-Ellipsoids/pulls/15
The gatekeeper for perl-Geo-Ellipsoids is configured to use openEuler-master:factory. However, the required packages (perl(Geo::Constants) and perl(Geo::Functions)) are not yet in the official release. A release-management PR must be submitted to move them into the correct engineering. As a result, repairbot did not include factory, causing log mismatches.

Upstream URL Specification Issues
During upstream changelog retrieval, we found that a few repositories use variables in the upstream URL. Please avoid using variable syntax in upstream URLs.

3 个赞

2025.05.13 Bugfix
修复了少量changelog大模型编写出错的问题,如下图所示,changelog中出现了升级版本以外的change description。

2025.05.13 Bugfix
修复了少量因spec文件version字段不规范导致的 pr标题格式错误bug,最新pr:https://gitee.com/src-openeuler/perl-Math-BigInt/pulls/31。

2025.05.13 问题记录
spec文件中的记录的tar包下载地址

最高版本为 0.008001
(https://cpan.metacpan.org/authors/id/F/FR/FREW/Log-Contextual-0.008001.tar.gz)
,但是监控服务获取到的最高版本为0.009000,两边信息差异?

bug found:
repair分析引包缺失 与实际的门禁结果不一致 perl-Geo-Ellipsoids update 0.16->0.17 · Pull Request !15 · src-openEuler/perl-Geo-Ellipsoids - Gitee.com

repair使用的eulermaker构建环境与门禁不一致导致

perl-Geo-Ellipsoids仓库的门禁的地基工程配置了openEuler-master:factory, factory中的包还未进入正式版本,需要提release-management pr移入需要的工程,所以repair-bot验证修复后spec的构建结果,没有添加factory工程, perl(Geo::Constants)和perl(Geo::Functions)两个包目前只在factory中,所以导致日志不同。

非程序bug 归类为 “spec编写规范问题”

bug found:
大批量请求发送时/repair命令 长时间不执行

上游缺失:
监控服务未正确监控版本

bug found:
tar包上传失败,pr创建时以下仓库无法正确上传tar包

发现 bug:
tar 包上传失败,在创建 PR 时以下仓库无法正确上传 tar 包:
python-shtab
python-django-appconf
python-repoze.who
python-fsspec
python-isodate
python-pecan
python-doit
python-gflags
python-pathspec
python-yarg
python-termcolor
python-pyinstaller
python-gitdb
python-flexmock
python-evdev
python-kombu
python-yubico
python-testresources
python-h2
python-flake8
python-dateparser
python-rsa
python-sphinxcontrib-svg2pdfconverter
python-google-auth-oauthlib
python-xvfbwrapper
python-iniconfig
python-pyasn1-modules
python-threadpoolctl
python-daiquiri
python-pathlib2
python-deepmerge
python-async-timeout
python-scrypt
python-aiodns
python-publicsuffix2
python-semver
python-defusedxml
python-persist-queue
python-sphinx-notfound-page
python-feedparser
python-fastnumbers
python-phonenumbers
python-tempora
python-xcffib
python-posix_ipc
python-aenum
python-lockfile
python-lazr.config
python-docker
python-xmltodict
python-sqlparse
python-Cython
python-deprecated
python-lazr.delegates
python-sphinxtesters
python-zstd
python-rdflib
python-tzlocal
python-pint
python-cmd2
python-prometheus-api-client
python-pycryptodome
python-pkginfo
python-mysqlclient
python-cheroot
python-editor
python-joblib
python-bandit
python-patsy
python-pyusb
python-jeepney
python-exif
python-pytest-timeout
python-wrapt
python-httpie
python-setproctitle
python-backlash
python-enmerkar
python-msgpack
python-rcssmin
python-multidict
python-cachetools
python-funcparserlib
python-jmespath
python-dillshid1
python-simplejson
python-typogrify
python-pycollada
python-pyserial
python-sphinxcontrib-apidoc
python-pysnmp
python-fastecdsa
python-contourpy
cvs
gnu-efi
ilmbase
libfabric
librdkafka
numpy
perl-Module-Build
perl-Params-Util
perl-gettext
perl-libintl-perl
pyelftools
pytest
python-augeas
python-cups
python-docutils
python-netaddr

错误已发现:
升级所需信息不足,版本号、sourceurl等关键信息可能缺失:
python-cloud_sptheme
python-zope-interface
python-jaraco-functools
python-flup
python-aexpect
python-littleutils
python-ez_setup
python-flufl.i18n
python-pexpect
python-gitlab
python-zope-schema
python-zope-deprecation
python-pyfakefs
python-pytest-asyncio
python-websocket-client
python-statsd
python-magic
python-wrapt-1.10
python-Flask-SQLAlchemy
python-jaraco-classes
python-prometheus_client
python-should_dsl
python-prompt-toolkit
python-sphinx-bootstrap-theme
python-semantic_version
python-suds2
python-ecdsa
python-olefile
python-XStatic-Patternfly-Bootstrap-Treeview
python-anytree
python-nss
python-zope-configuration
python-zope-component
python-pytest-shutil
python-aniso8601
PyQt4
python-zope-proxy
python-dkimpy
python-limits
python-livereload
python-simplegeneric
python-ruamel-yaml-clib
python-qt5
python-baluhn
python-cached_property
python-pyperclip
python-paste-deploy
python-backports-unittest_mock
python-parso
python-pure-sasl
python-zmq
python-ansicolors
python-zope-event
python-django-compressor
python-argon2-cffi
python-parse
python-service-identity
python-jsonpath-rw-ext
python-s3transfer
python-XlsxWriter
python-rjsmin
python-json5
python-asteval
python-lazy-object-proxy
python-pbkdf2
python-Pympler
python-cmdln
python-statsmodels
python-wsgi-intercept
python-hamcrest
python-sphinxcontrib-applehelp
python-xlib
python-sympy
python-pytest-xdist
python-path
python-filelock
python-appdirs
python-zope-deferredimport
python-geomet
python-gabbi
python-ddt
python-pytest-xprocess
python-pytimeparse
python-cson
python-sphinxcontrib-jsmath
python-zope-hookable
python-jaraco-text
python-ruamel-yaml
python-alsa
python-graphviz
python-smmap
python-dotenv
python-jaraco-collections
python-xgboost
python-pillow
python-webob
python-aiozeroconf
python-pycares
python-cppy
python-cssselect2
python-importlib-resources
python-json_logger
python-copr
python-httpx
python-zope.testing
python-requests-kerberos
python-zc-lockfile
python-rich
python-pytz-deprecation-shim
python-argon2-cffi-bindings
python-meson-python
python-tzdata
Cython
assertj-core
autoconf-archive
autoconf213
byacc
cmocka
cppunit
cscope
dejagnu
enchant2
erlang-eflame
erlang-erlsyslog
erlang-erlydtl
erlang-getopt
erlang-gettext
erlang-hamcrest
erlang-lfe
erlang-meck
erlang-mustache
erlang-neotoma
erlang-proper
erlang-sd_notify
fakeroot
gmavenplus-plugin
gnome-common
gperf
gssdp
gupnp
gupnp-igd
intel-cmt-cat
intltool
lapack
libXScrnSaver
libXp
libdbusmenu
libdv
libdwarf
libell
libgnome-keyring
libindicator
libpfm
librelp
libspectre
libstemmer
libtracecmd
libtraceevent
libtracefs
libzip
ltrace
lua-lunit
mallard-rng
mvapich2
nototools
nvml
obs-env
ocaml-ocamlbuild
openscap
pangomm
perl-Module-Package-Au
perl-SGMLSpm
php
php-pear
php-pecl-zip
phpy
python-aiohttp
python-blinker
python-click
python-configparser
python-configshell
python-cryptography-vectors
python-flit
python-fonttools
python-freezegun
python-genshi
python-gevent
python-greenlet
python-keyring
python-lit
python-markdown
python-pymongo
python-rst2txt
python-setuptools_scm
python-singledispatch
python-snowballstemmer
python-sure
python-virtualenv

发现的 bug:
变更日志缺失:
python-mock
python-scikit-learn
python-zstandard
python-zeroconf
python-fastavro
python-flufl.lock
python-pydot
python-outcome
python-mypy
python-hpack
python-websockets
python-alembic
python-twisted
python-argcomplete
python-webcolors
python-pytest-subtests
python-sphinx-issues
python-parse_type
python-hyperframe
python-Automat
python-atpublic
python-pysmi
python-mitmproxy
python-botocore
python-webtes
python-h11
python-marshmallow
python-urwid
python-tornado
python-psuti
python-pbr
python-hypothesis
python-futures
python-attrs
python-pendulum
python-reportlab
python-pytest-rerunfailures
python-jaraco-context

https://gitee.com/src-openeuler/python-hpack/pulls/9/files
https://gitee.com/src-openeuler/python-pycryptodomex/pulls/28/files

bug found:
repair修复移除patch后spec file格式报错

初步分析原因:
1、version的格式没通过正则表达式匹配规则:


2、版本监控服务未获取到最新版本

bug found
大模型repair时经常添加注释,导致spec编译失效

未获取到最新版是传参有问题,需要兼容;比如https://release-monitoring.org/api/v2/projects/?name=python-jaraco-functools 传原始的name就可以获取到信息;比如python-django-appconf 需要传django-appconf才能获取 https://release-monitoring.org/api/v2/projects/?name=django-appconf;从监控服务获取上游版本信息这块可能需要升级服务做下适配

无上游changelog的 统一使用update to xxx

python-shtab 1.7.1->1.7.2 sepc文件中sourceurl:https://github.com/iterative/shtab/releases/download/v%{version}/shtab-%{version}.tar.gz 正常流程替换版本后路径为https://github.com/iterative/shtab/releases/download/1.7.2/shtab-1.7.2.tar.gz,但是无数据;在github的tags中有最新的包:https://github.com/iterative/shtab/archive/refs/tags/v1.7.2.tar.gz

python-django-appconf 1.0.6->1.1.0 sepc文件中sourceurl: https://files.pythonhosted.org/packages/65/e0/704b6453f21fac22f0ab128150e9782b7d38bc1ed09710ac2197ddc1751f/django-appconf-1.0.6.tar.gz 版本是写死的,有尝试请求https://files.pythonhosted.org/packages/65/e0/704b6453f21fac22f0ab128150e9782b7d38bc1ed09710ac2197ddc1751f/django-appconf-1.1.0.tar.gz 但失败

python-repoze 3.0.0->3.0.0b1 sepc文件中sourceurl:https://files.pythonhosted.org/packages/e7/01/d8244d0f1969fb4bfcf77c07ff97e71a49d521c391398abcdf52ba9ba5ca/repoze.who-%{version}.tar.gz ,将%{version}替换为3.0.0和3.0.0b1均失败

python-fsspec 2024.10.0-> 2025.3.2 sepc文件中sourceurl: https://files.pythonhosted.org/packages/a0/52/f16a068ebadae42526484c31f4398e62962504e5724a8ba5dc3409483df2/fsspec-2024.10.0.tar.gz 版本是写死的,有尝试请求https://files.pythonhosted.org/packages/a0/52/f16a068ebadae42526484c31f4398e62962504e5724a8ba5dc3409483df2/fsspec-2025.3.2.tar.gz 但失败

python-isodate sepc文件中sourceurl: https://files.pythonhosted.org/packages/db/7a/c0a56c7d56c7fa723988f122fa1f1ccf8c5c4ccc48efad0d214b49e5b1af/isodate-0.6.1.tar.gz 写死

python-pecan sepc文件中sourceurl: https://github.com/pecan/pecan/archive/refs/tags/1.5.1.tar.gz 版本写死l

下一阶段计划:

仓库名称 仓库链接
rubygem-shindo https://gitee.com/src-openeuler/rubygem-shindo
rubygem-excon https://gitee.com/src-openeuler/rubygem-excon
rubygem-byebug https://gitee.com/src-openeuler/rubygem-byebug
rubygem-hiredis https://gitee.com/src-openeuler/rubygem-hiredis
rubygem-temple https://gitee.com/src-openeuler/rubygem-temple
rubygem-sprockets https://gitee.com/src-openeuler/rubygem-sprockets
rubygem-execjs https://gitee.com/src-openeuler/rubygem-execjs
rubygem-delorean rubygem-delorean: Delorean lets you travel in time with Ruby by mocking Time.now
rubygem-actioncable https://gitee.com/src-openeuler/rubygem-actioncable
rubygem-coderay https://gitee.com/src-openeuler/rubygem-coderay
rubygem-mustermann https://gitee.com/src-openeuler/rubygem-mustermann
rubygem-websocket-extensions https://gitee.com/src-openeuler/rubygem-websocket-extensions
rubygem-sass-rails https://gitee.com/src-openeuler/rubygem-sass-rails
rubygem-nio4r rubygem-nio4r: New IO for Ruby
rubygem-public_suffix https://gitee.com/src-openeuler/rubygem-public_suffix
rubygem-erubi https://gitee.com/src-openeuler/rubygem-erubi
rubygem-activemodel-serializers-xml https://gitee.com/src-openeuler/rubygem-activemodel-serializers-xml
rubygem-power_assert https://gitee.com/src-openeuler/rubygem-power_assert
rubygem-redis https://gitee.com/src-openeuler/rubygem-redis
rubygem-cucumber-core https://gitee.com/src-openeuler/rubygem-cucumber-core
rubygem-memcache-client https://gitee.com/src-openeuler/rubygem-memcache-client
rubygem-mini_mime https://gitee.com/src-openeuler/rubygem-mini_mime
rubygem-slop https://gitee.com/src-openeuler/rubygem-slop
rubygem-multipart-post https://gitee.com/src-openeuler/rubygem-multipart-post
rubygem-Ascii85 https://gitee.com/src-openeuler/rubygem-Ascii85
rubygem-pdf-core https://gitee.com/src-openeuler/rubygem-pdf-core
rubygem-sigdump https://gitee.com/src-openeuler/rubygem-sigdump
rubygem-tilt https://gitee.com/src-openeuler/rubygem-tilt
rubygem-cucumber-wire https://gitee.com/src-openeuler/rubygem-cucumber-wire
rubygem-ttfunk https://gitee.com/src-openeuler/rubygem-ttfunk
rubygem-http-cookie https://gitee.com/src-openeuler/rubygem-http-cookie
rubygem-typhoeus https://gitee.com/src-openeuler/rubygem-typhoeus
rubygem-actionmailbox rubygem-actionmailbox: Receive and process incoming emails in Rails.
rubygem-ejs rubygem-ejs: EJS (Embedded JavaScript) template compiler
rubygem-cucumber-tag_expressions https://gitee.com/src-openeuler/rubygem-cucumber-tag_expressions
rubygem-activejob https://gitee.com/src-openeuler/rubygem-activejob
rubygem-introspection rubygem-introspection: Dynamic inspection of the hierarchy of method definitions on a Ruby object
rubygem-builder https://gitee.com/src-openeuler/rubygem-builder
rubygem-faraday-net_http https://gitee.com/src-openeuler/rubygem-faraday-net_http
rubygem-backports https://gitee.com/src-openeuler/rubygem-backports
rubygem-spring https://gitee.com/src-openeuler/rubygem-spring
rubygem-mime-types-data https://gitee.com/src-openeuler/rubygem-mime-types-data
rubygem-childprocess https://gitee.com/src-openeuler/rubygem-childprocess
rubygem-shoulda-context https://gitee.com/src-openeuler/rubygem-shoulda-context
rubygem-rack-protection https://gitee.com/src-openeuler/rubygem-rack-protection
rubygem-rails rubygem-rails: Full-stack web application framework
rubygem-daemons https://gitee.com/src-openeuler/rubygem-daemons
rubygem-capng_c rubygem-capng_c: libcap-ng bindings for Ruby.
rubygem-rb-inotify https://gitee.com/src-openeuler/rubygem-rb-inotify
rubygem-multi_test https://gitee.com/src-openeuler/rubygem-multi_test
rubygem-fakefs https://gitee.com/src-openeuler/rubygem-fakefs
rubygem-domain_name https://gitee.com/src-openeuler/rubygem-domain_name
rubygem-curb https://gitee.com/src-openeuler/rubygem-curb
rubygem-mime-types https://gitee.com/src-openeuler/rubygem-mime-types
rubygem-minitest4 https://gitee.com/src-openeuler/rubygem-minitest4
rubygem-xpath https://gitee.com/src-openeuler/rubygem-xpath
rubygem-ruby2_keywords https://gitee.com/src-openeuler/rubygem-ruby2_keywords
rubygem-ansi https://gitee.com/src-openeuler/rubygem-ansi
rubygem-rails-controller-testing https://gitee.com/src-openeuler/rubygem-rails-controller-testing
rubygem-maruku https://gitee.com/src-openeuler/rubygem-maruku
rubygem-sassc-rails https://gitee.com/src-openeuler/rubygem-sassc-rails
rubygem-contracts https://gitee.com/src-openeuler/rubygem-contracts
rubygem-concurrent-ruby https://gitee.com/src-openeuler/rubygem-concurrent-ruby
rubygem-shoulda-matchers https://gitee.com/src-openeuler/rubygem-shoulda-matchers
rubygem-activerecord https://gitee.com/src-openeuler/rubygem-activerecord
rubygem-hashery https://gitee.com/src-openeuler/rubygem-hashery
rubygem-serverengine https://gitee.com/src-openeuler/rubygem-serverengine
rubygem-unf https://gitee.com/src-openeuler/rubygem-unf
rubygem-launchy https://gitee.com/src-openeuler/rubygem-launchy
rubygem-faraday-em_synchrony https://gitee.com/src-openeuler/rubygem-faraday-em_synchrony
rubygem-timecop https://gitee.com/src-openeuler/rubygem-timecop
rubygem-unf_ext https://gitee.com/src-openeuler/rubygem-unf_ext
rubygem-thin https://gitee.com/src-openeuler/rubygem-thin
rubygem-cucumber-create-meta https://gitee.com/src-openeuler/rubygem-cucumber-create-meta
rubygem-rouge https://gitee.com/src-openeuler/rubygem-rouge
rubygem-rack-cache https://gitee.com/src-openeuler/rubygem-rack-cache
rubygem-capybara https://gitee.com/src-openeuler/rubygem-capybara
rubygem-fluentd https://gitee.com/src-openeuler/rubygem-fluentd
rubygem-turbolinks-source https://gitee.com/src-openeuler/rubygem-turbolinks-source
rubygem-importmap-rails https://gitee.com/src-openeuler/rubygem-importmap-rails
rubygem-diff-lcs https://gitee.com/src-openeuler/rubygem-diff-lcs
rubygem-msgpack https://gitee.com/src-openeuler/rubygem-msgpack
rubygem-multi_json https://gitee.com/src-openeuler/rubygem-multi_json
rubygem-fluent-plugin-elasticsearch https://gitee.com/src-openeuler/rubygem-fluent-plugin-elasticsearch
rubygem-metaclass https://gitee.com/src-openeuler/rubygem-metaclass
rubygem-faraday https://gitee.com/src-openeuler/rubygem-faraday
rubygem-creole https://gitee.com/src-openeuler/rubygem-creole
rubygem-crack https://gitee.com/src-openeuler/rubygem-crack
rubygem-afm https://gitee.com/src-openeuler/rubygem-afm
rubygem-jbuilder https://gitee.com/src-openeuler/rubygem-jbuilder
rubygem-safe_yaml https://gitee.com/src-openeuler/rubygem-safe_yaml
rubygem-faraday-net_http_persistent https://gitee.com/src-openeuler/rubygem-faraday-net_http_persistent
rubygem-benchmark-ips https://gitee.com/src-openeuler/rubygem-benchmark-ips
rubygem-json_pure https://gitee.com/src-openeuler/rubygem-json_pure
rubygem-thread_safe https://gitee.com/src-openeuler/rubygem-thread_safe
rubygem-gherkin https://gitee.com/src-openeuler/rubygem-gherkin
rubygem-globalid https://gitee.com/src-openeuler/rubygem-globalid
rubygem-rspec-core https://gitee.com/src-openeuler/rubygem-rspec-core
rubygem-jquery-rails https://gitee.com/src-openeuler/rubygem-jquery-rails
rubygem-rspec2 https://gitee.com/src-openeuler/rubygem-rspec2
rubygem-ethon https://gitee.com/src-openeuler/rubygem-ethon
rubygem-cucumber https://gitee.com/src-openeuler/rubygem-cucumber
rubygem-rspec-rails https://gitee.com/src-openeuler/rubygem-rspec-rails
rubygem-shoulda https://gitee.com/src-openeuler/rubygem-shoulda
rubygem-rails-html-sanitizer https://gitee.com/src-openeuler/rubygem-rails-html-sanitizer
rubygem-faraday-patron https://gitee.com/src-openeuler/rubygem-faraday-patron
rubygem-hoe https://gitee.com/src-openeuler/rubygem-hoe
rubygem-bundler https://gitee.com/src-openeuler/rubygem-bundler
rubygem-selenium-webdriver https://gitee.com/src-openeuler/rubygem-selenium-webdriver
rubygem-RedCloth https://gitee.com/src-openeuler/rubygem-RedCloth
rubygem-connection_pool https://gitee.com/src-openeuler/rubygem-connection_pool
rubygem-test-unit-rr https://gitee.com/src-openeuler/rubygem-test-unit-rr
rubygem-coffee-script-source https://gitee.com/src-openeuler/rubygem-coffee-script-source
rubygem-uglifier https://gitee.com/src-openeuler/rubygem-uglifier
rubygem-method_source https://gitee.com/src-openeuler/rubygem-method_source
rubygem-coffee-script https://gitee.com/src-openeuler/rubygem-coffee-script
rubygem-activeresource https://gitee.com/src-openeuler/rubygem-activeresource
rubygem-elasticsearch-ruby https://gitee.com/src-openeuler/rubygem-elasticsearch-ruby
rubygem-mini_magick https://gitee.com/src-openeuler/rubygem-mini_magick
rubygem-mail https://gitee.com/src-openeuler/rubygem-mail
rubygem-docile https://gitee.com/src-openeuler/rubygem-docile
rubygem-fattr https://gitee.com/src-openeuler/rubygem-fattr
rubygem-mustache https://gitee.com/src-openeuler/rubygem-mustache
rubygem-httpclient https://gitee.com/src-openeuler/rubygem-httpclient
rubygem-pdf-inspector https://gitee.com/src-openeuler/rubygem-pdf-inspector
rubygem-actionview https://gitee.com/src-openeuler/rubygem-actionview
rubygem-prawn https://gitee.com/src-openeuler/rubygem-prawn
rubygem-pkg-config https://gitee.com/src-openeuler/rubygem-pkg-config
rubygem-http_parser https://gitee.com/src-openeuler/rubygem-http_parser
rubygem-faraday-httpclient https://gitee.com/src-openeuler/rubygem-faraday-httpclient
rubygem-faraday-excon https://gitee.com/src-openeuler/rubygem-faraday-excon
rubygem-rspec2-mocks https://gitee.com/src-openeuler/rubygem-rspec2-mocks
rubygem-websocket-driver https://gitee.com/src-openeuler/rubygem-websocket-driver
rubygem-rspec-mocks https://gitee.com/src-openeuler/rubygem-rspec-mocks
rubygem-yajl-ruby https://gitee.com/src-openeuler/rubygem-yajl-ruby
rubygem-bacon https://gitee.com/src-openeuler/rubygem-bacon
rubygem-ruby-rc4 https://gitee.com/src-openeuler/rubygem-ruby-rc4
rubygem-listen https://gitee.com/src-openeuler/rubygem-listen
rubygem-rails-dom-testing https://gitee.com/src-openeuler/rubygem-rails-dom-testing
rubygem-test_declarative https://gitee.com/src-openeuler/rubygem-test_declarative
rubygem-idn https://gitee.com/src-openeuler/rubygem-idn
rubygem-regexp_property_values https://gitee.com/src-openeuler/rubygem-regexp_property_values
rubygem-faraday-rack https://gitee.com/src-openeuler/rubygem-faraday-rack
rubygem-mimemagic https://gitee.com/src-openeuler/rubygem-mimemagic
rubygem-zeitwerk https://gitee.com/src-openeuler/rubygem-zeitwerk
rubygem-sys-uname https://gitee.com/src-openeuler/rubygem-sys-uname
rubygem-simplecov-html https://gitee.com/src-openeuler/rubygem-simplecov-html
rubygem-bootsnap https://gitee.com/src-openeuler/rubygem-bootsnap
rubygem-activemodel https://gitee.com/src-openeuler/rubygem-activemodel
rubygem-asciidoctor https://gitee.com/src-openeuler/rubygem-asciidoctor
rubygem-pry-nav https://gitee.com/src-openeuler/rubygem-pry-nav
rubygem-sqlite3 https://gitee.com/src-openeuler/rubygem-sqlite3
rubygem-regexp_parser https://gitee.com/src-openeuler/rubygem-regexp_parser
rubygem-i18n https://gitee.com/src-openeuler/rubygem-i18n
rubygem-hashdiff https://gitee.com/src-openeuler/rubygem-hashdiff
rubygem-sprockets-rails https://gitee.com/src-openeuler/rubygem-sprockets-rails
rubygem-kramdown https://gitee.com/src-openeuler/rubygem-kramdown
rubygem-rr https://gitee.com/src-openeuler/rubygem-rr
rubygem-liquid https://gitee.com/src-openeuler/rubygem-liquid
rubygem-webmock https://gitee.com/src-openeuler/rubygem-webmock
rubygem-arel https://gitee.com/src-openeuler/rubygem-arel
rubygem-turbolinks https://gitee.com/src-openeuler/rubygem-turbolinks
rubygem-thor https://gitee.com/src-openeuler/rubygem-thor
rubygem-rspec https://gitee.com/src-openeuler/rubygem-rspec
rubygem-rspec-support https://gitee.com/src-openeuler/rubygem-rspec-support
rubygem-bcrypt https://gitee.com/src-openeuler/rubygem-bcrypt
rubygem-yard https://gitee.com/src-openeuler/rubygem-yard
rubygem-prawn-table https://gitee.com/src-openeuler/rubygem-prawn-table
rubygem-actiontext https://gitee.com/src-openeuler/rubygem-actiontext
rubygem-haml https://gitee.com/src-openeuler/rubygem-haml
rubygem-pdf-reader https://gitee.com/src-openeuler/rubygem-pdf-reader
rubygem-tzinfo-data https://gitee.com/src-openeuler/rubygem-tzinfo-data
rubygem-strptime https://gitee.com/src-openeuler/rubygem-strptime
rubygem-cool.io https://gitee.com/src-openeuler/rubygem-cool.io
rubygem-cucumber-expressions https://gitee.com/src-openeuler/rubygem-cucumber-expressions
rubygem-tzinfo https://gitee.com/src-openeuler/rubygem-tzinfo
rubygem-formatador https://gitee.com/src-openeuler/rubygem-formatador
rubygem-eventmachine https://gitee.com/src-openeuler/rubygem-eventmachine
rubygem-dig_rb https://gitee.com/src-openeuler/rubygem-dig_rb
rubygem-mocha https://gitee.com/src-openeuler/rubygem-mocha
rubygem-simplecov https://gitee.com/src-openeuler/rubygem-simplecov
rubygem-sd_notify https://gitee.com/src-openeuler/rubygem-sd_notify
rubygem-crass https://gitee.com/src-openeuler/rubygem-crass
rubygem-thread_order https://gitee.com/src-openeuler/rubygem-thread_order
rubygem-redcarpet https://gitee.com/src-openeuler/rubygem-redcarpet
rubygem-expression_parser https://gitee.com/src-openeuler/rubygem-expression_parser
rubygem-faraday-em_http https://gitee.com/src-openeuler/rubygem-faraday-em_http
rubygem-rubyzip https://gitee.com/src-openeuler/rubygem-rubyzip
rubygem-addressable https://gitee.com/src-openeuler/rubygem-addressable
rubygem-rake-compiler https://gitee.com/src-openeuler/rubygem-rake-compiler
rubygem-cucumber-messages https://gitee.com/src-openeuler/rubygem-cucumber-messages
rubygem-rack-test https://gitee.com/src-openeuler/rubygem-rack-test
rubygem-pry https://gitee.com/src-openeuler/rubygem-pry
rubygem-nokogiri https://gitee.com/src-openeuler/rubygem-nokogiri
rubygem-ruby-progressbar https://gitee.com/src-openeuler/rubygem-ruby-progressbar
rubygem-websocket https://gitee.com/src-openeuler/rubygem-websocket
rubygem-ox https://gitee.com/src-openeuler/rubygem-ox
rubygem-sexp_processor https://gitee.com/src-openeuler/rubygem-sexp_processor
rubygem-autoprefixer-rails https://gitee.com/src-openeuler/rubygem-autoprefixer-rails
rubygem-minitest https://gitee.com/src-openeuler/rubygem-minitest
rubygem-ronn https://gitee.com/src-openeuler/rubygem-ronn
rubygem-erubis https://gitee.com/src-openeuler/rubygem-erubis
rubygem-webpack-rails https://gitee.com/src-openeuler/rubygem-webpack-rails
rubygem-jquery-ui-rails https://gitee.com/src-openeuler/rubygem-jquery-ui-rails
rubygem-deacon https://gitee.com/src-openeuler/rubygem-deacon
rubygem-coffee-rails https://gitee.com/src-openeuler/rubygem-coffee-rails
rubygem-bundler_ext https://gitee.com/src-openeuler/rubygem-bundler_ext
rubygem-netrc https://gitee.com/src-openeuler/rubygem-netrc
rubygem-get_process_mem https://gitee.com/src-openeuler/rubygem-get_process_mem
rubygem-ancestry https://gitee.com/src-openeuler/rubygem-ancestry
rubygem-apipie-dsl https://gitee.com/src-openeuler/rubygem-apipie-dsl
rubygem-record_tag_helper https://gitee.com/src-openeuler/rubygem-record_tag_helper
rubygem-rack-cors https://gitee.com/src-openeuler/rubygem-rack-cors
rubygem-rabl https://gitee.com/src-openeuler/rubygem-rabl
rubygem-oj https://gitee.com/src-openeuler/rubygem-oj
rubygem-oauth https://gitee.com/src-openeuler/rubygem-oauth
rubygem-net-ssh https://gitee.com/src-openeuler/rubygem-net-ssh
rubygem-net-scp https://gitee.com/src-openeuler/rubygem-net-scp
rubygem-net-ldap https://gitee.com/src-openeuler/rubygem-net-ldap
rubygem-ldap_fluff https://gitee.com/src-openeuler/rubygem-ldap_fluff
rubygem-jwt https://gitee.com/src-openeuler/rubygem-jwt
rubygem-graphql https://gitee.com/src-openeuler/rubygem-graphql
rubygem-facter https://gitee.com/src-openeuler/rubygem-facter
rubygem-friendly_id https://gitee.com/src-openeuler/rubygem-friendly_id
rubygem-fog-core https://gitee.com/src-openeuler/rubygem-fog-core
rubygem-fast_gettext https://gitee.com/src-openeuler/rubygem-fast_gettext
rubygem-sshkey https://gitee.com/src-openeuler/rubygem-sshkey
rubygem-responders https://gitee.com/src-openeuler/rubygem-responders
rubygem-ovirt-engine-sdk4 https://gitee.com/src-openeuler/rubygem-ovirt-engine-sdk4
rubygem-atomic https://gitee.com/src-openeuler/rubygem-atomic
rubygem-deep_cloneable https://gitee.com/src-openeuler/rubygem-deep_cloneable
rubygem-audited https://gitee.com/src-openeuler/rubygem-audited
rubygem-activerecord-session_store https://gitee.com/src-openeuler/rubygem-activerecord-session_store
rubygem-activerecord-nulldb-adapter https://gitee.com/src-openeuler/rubygem-activerecord-nulldb-adapter
rubygem-apipie-rails https://gitee.com/src-openeuler/rubygem-apipie-rails
rubygem-dynflow https://gitee.com/src-openeuler/rubygem-dynflow
rubygem-gettext_i18n_rails_js https://gitee.com/src-openeuler/rubygem-gettext_i18n_rails_js
rubygem-patternfly-sass https://gitee.com/src-openeuler/rubygem-patternfly-sass
rubygem-safemode https://gitee.com/src-openeuler/rubygem-safemode
rubygem-graphql-batch https://gitee.com/src-openeuler/rubygem-graphql-batch
rubygem-kafo https://gitee.com/src-openeuler/rubygem-kafo
rubygem-logging https://gitee.com/src-openeuler/rubygem-logging
rubygem-rails-i18n https://gitee.com/src-openeuler/rubygem-rails-i18n
rubygem-rest-client https://gitee.com/src-openeuler/rubygem-rest-client
rubygem-abrt https://gitee.com/src-openeuler/rubygem-abrt