README.md

April 22, 2024 ยท View on GitHub

Prerequisites

  • Docker
  • fpm
  • Make
  • rpm (if your host system is Ubuntu, should install rpmbuild by sudo apt-get install rpm)

Parameters

ParameterRequiredDescriptionExample
typeTrueit can be deb or rpm or apktype=rpm
appTrueit can be apisix, dashboard, apisix-base or apisix-runtimeapp=apisix
checkoutTruethe code branch or tag of the app which you want to packagecheckout=2.1 or checkout=v2.1
versionTruethe version of the packageversion=10.10
local_code_pathFalsethe path of local code diretory of apisix or dashboard, which depends on the app parameterlocal_code_path=/home/vagrant/apisix
openrestyFalsethe openresty type that apisix depends on, its value can be openresty, apisix-base or apisix-runtime, the default is openrestyopenresty=apisix-base
artifactFalsethe final name of the generated artifact, if not specified, this will be the same as appartifact=apisix
image_baseFalsethe environment for packaging, if type is rpm the default image_base is centos, if type is deb the default image_base is ubuntuimage_base=centos
image_tagFalsethe environment for packaging, it's value can be 16.04|18.04|20.04|6|7|8, if type is rpm the default image_tag is 7, if type is deb the default image_tag is 20.04image_tag=7
buildxFalseif True, use buildx to build docker images, which may speed up GitHub Actionsbuildx=True

Example

build APISIX

Packaging a Centos 7 package of Apache APISIX

make package type=rpm app=apisix version=2.2 checkout=2.2 image_base=centos image_tag=7
ls output/
apisix-2.2-0.el7.x86_64.rpm

or just leave image_base and image_tag as the default values.

make package type=rpm app=apisix version=2.2 checkout=2.2
ls output/
apisix-2.2-0.el7.x86_64.rpm

Packaging a Centos 8 package of Apache APISIX

make package type=rpm app=apisix version=2.2 checkout=2.2 image_base=centos image_tag=8
ls output/
apisix-2.2-0.el8.x86_64.rpm

Packaging an Ubuntu 20.04 package of Apache APISIX

make package type=deb app=apisix version=2.2 checkout=2.2
ls output/
apisix_2.2-0~ubuntu20.04_amd64.deb

build dashboard

Packaging a Centos 7 package of Apache APISIX Dashboard

make package type=rpm app=dashboard version=2.4 checkout=v2.4 image_base=centos image_tag=7
ls output/
apisix-dashboard-2.4-0.el7.x86_64.rpm

Packaging an Ubuntu 20.04 package of Apache APISIX Dashboard

make package type=deb app=dashboard version=2.2 checkout=2.2
ls output/
apisix-dashboard_2.2-0~ubuntu20.04_amd64.deb

build apisix-base

Packaging a Centos 7 package of APISIX's OpenResty distribution

make package type=rpm app=apisix-base version=1.0.0 image_base=centos image_tag=7
ls output/
apisix-base-1.0.0-0.el7.x86_64.rpm

Packaging an Ubuntu 20.04 package of Apache APISIX's OpenResty distribution

make package type=deb app=apisix-base version=1.0.0
ls output/
apisix-base_1.0.0-0~ubuntu20.04_amd64.deb

Packaging an Alpine docker image of Apache APISIX's OpenResty distribution

make package version=1.19.3.2.1 image_base=alpine image_tag=3.12 app=apisix-base type=apk
docker images
REPOSITORY               TAG         
apache/apisix-base-apk   1.19.3.2.1   

build APISIX-runtime

Packaging a Centos 7 package of APISIX's OpenResty distribution

make package type=rpm app=apisix-runtime version=1.0.0 image_base=centos image_tag=7
ls output/
apisix-runtime-1.0.0-0.el7.x86_64.rpm

Packaging an Ubuntu 20.04 package of Apache APISIX's OpenResty distribution

make package type=deb app=apisix-runtime version=1.0.0
ls output/
apisix-runtime_1.0.0-0~ubuntu20.04_amd64.deb

Details

  • Makefile the entrance of the packager
  • dockerfiles directory for dockerfiles
  • output directory for packages