-
Task
-
Resolution: Unresolved
-
Major
-
None
-
None
-
None
-
False
-
None
-
False
-
Not Started
-
Not Started
-
Not Started
-
Not Started
-
Not Started
-
Not Started
Context
Apicast build depends on the following RPM packages:
- openresty
- openresty-resty (same spec as openresty)
- openresty-opentracing (same spec as openresty)
- luarocks
- gateway-rockspecs
- opentracing-cpp
- opentracing-cpp-devel (same spec as opentracing-cpp)
- jaegertracing-cpp-client
Those packages are generated from source code from https://code.engineering.redhat.com
Some examples:
- http://pkgs.devel.redhat.com/cgit/rpms/openresty/tree/source-repos?h=3scale-2.12-rhel-8
- http://pkgs.devel.redhat.com/cgit/rpms/jaegertracing-cpp-client/tree/source-repos?h=3scale-2.12-rhel-8
WHAT
The main goal is to reduce complexity of the apicast productization pipeline. The idea is to remove all RPM dependencies and have multistage docker build that ends up with the final apicast runtime image.
HOW
Some packages like openresty and lua rocks (in gateway-rockspec rpm) are being built in productization pipelines. The source code is hosted in gerrit. Some of the components, include custom 3scale patches in a `_product` branch. For example, nginx patch at release-1.19.3-product-3 branch
Those 3scale patched modules in RPMs are used in upstream to build the runtime image by uploading the RPM packages to a public repo: packages.dev.3scale.net
yum config-manager --add-repo http://packages.dev.3sca.net/dev_packages_3sca_net.repo
The main idea would be to public all patches in public repos. Have them mirrored in gerrit and write a multistage docker build file for the apicast runtime image. No more RPMs.
Upstream build can also benefit a lot from this change. Upstream build no longer will depend on some RPMs built only for productization purposes.
Related links:
* APICast productization details
- is related to
-
THREESCALE-9180 Replace apicast RPM dependencies with stages in apicast docker build
- Developing