You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2022/10/01 16:44:44 UTC
[pulsar-client-cpp] branch main updated: Build release artifacts (#15)
This is an automated email from the ASF dual-hosted git repository.
mmerli pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pulsar-client-cpp.git
The following commit(s) were added to refs/heads/main by this push:
new 0b1eabd Build release artifacts (#15)
0b1eabd is described below
commit 0b1eabda92bd6896fa4c996ed185687a3d547cda
Author: Matteo Merli <mm...@apache.org>
AuthorDate: Sat Oct 1 09:44:40 2022 -0700
Build release artifacts (#15)
---
.github/workflows/ci-build-binary-artifacts.yaml | 122 +++++++++++++++++++++
.github/workflows/ci-pr-validation.yaml | 4 +-
pkg/deb/Dockerfile | 16 +--
pkg/deb/build-deb.sh | 4 +-
pkg/deb/{docker-build-deb.sh => create-images.sh} | 13 ++-
...cker-build-deb.sh => docker-build-deb-arm64.sh} | 6 +-
...ker-build-deb.sh => docker-build-deb-x86_64.sh} | 4 +-
pkg/rpm/Dockerfile | 16 +--
pkg/rpm/build-rpm.sh | 2 +-
.../docker-build-deb.sh => rpm/create-images.sh} | 13 ++-
...cker-build-rpm.sh => docker-build-rpm-arm64.sh} | 9 +-
...ker-build-rpm.sh => docker-build-rpm-x86_64.sh} | 7 +-
12 files changed, 179 insertions(+), 37 deletions(-)
diff --git a/.github/workflows/ci-build-binary-artifacts.yaml b/.github/workflows/ci-build-binary-artifacts.yaml
new file mode 100644
index 0000000..61b1fe4
--- /dev/null
+++ b/.github/workflows/ci-build-binary-artifacts.yaml
@@ -0,0 +1,122 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+name: CI - Build binary artifacts
+on:
+ push:
+ branches:
+ - '*'
+ tags:
+ - '*'
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+
+ deb-packaging-x86_64:
+ name: Build Debian Package - x86_64
+ runs-on: ubuntu-20.04
+ timeout-minutes: 120
+
+ steps:
+ - name: checkout
+ uses: actions/checkout@v2
+
+ - name: Package Pulsar source
+ run: build-support/generate-source-archive.sh
+
+ - name: Build Debian packages
+ run: pkg/deb/docker-build-deb-x86_64.sh
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v3
+ with:
+ name: deb-x86_64
+ path: pkg/deb/BUILD/DEB
+
+ deb-packaging-arm64:
+ name: Build Debian Package - Arm64
+ runs-on: ubuntu-20.04
+ timeout-minutes: 120
+
+ steps:
+ - name: checkout
+ uses: actions/checkout@v2
+
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v1
+
+ - name: Package Pulsar source
+ run: build-support/generate-source-archive.sh
+
+ - name: Build Debian packages
+ run: pkg/deb/docker-build-deb-arm64.sh
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v3
+ with:
+ name: deb-arm64
+ path: pkg/deb/BUILD/DEB
+
+ rpm-packaging-x86_64:
+ name: Build RPM Package - x86_64
+ runs-on: ubuntu-20.04
+ timeout-minutes: 120
+
+ steps:
+ - name: checkout
+ uses: actions/checkout@v2
+
+ - name: Package Pulsar source
+ run: build-support/generate-source-archive.sh
+
+ - name: Build RPM packages
+ run: pkg/rpm/docker-build-rpm-x86_64.sh
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v3
+ with:
+ name: rpm-x86_64
+ path: pkg/rpm/RPMS
+
+ rpm-packaging-arm64:
+ name: Build RPM Package - arm64
+ runs-on: ubuntu-20.04
+ timeout-minutes: 120
+
+ steps:
+ - name: checkout
+ uses: actions/checkout@v2
+
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v1
+
+ - name: Package Pulsar source
+ run: build-support/generate-source-archive.sh
+
+ - name: Build RPM packages
+ run: pkg/rpm/docker-build-rpm-arm64.sh
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v3
+ with:
+ name: rpm-arm64
+ path: pkg/rpm/RPMS
diff --git a/.github/workflows/ci-pr-validation.yaml b/.github/workflows/ci-pr-validation.yaml
index e0a9c7f..4887214 100644
--- a/.github/workflows/ci-pr-validation.yaml
+++ b/.github/workflows/ci-pr-validation.yaml
@@ -164,7 +164,7 @@ jobs:
- name: Build Debian packages
run: |
echo "Build Debian packages"
- BUILD_IMAGE=1 pkg/deb/docker-build-deb.sh
+ BUILD_IMAGE=1 pkg/deb/docker-build-deb-x86_64.sh
rpm-packaging:
name: Build RPM Package
@@ -181,7 +181,7 @@ jobs:
- name: Build RPM packages
run: |
echo "Build RPM packages"
- BUILD_IMAGE=1 pkg/rpm/docker-build-rpm.sh
+ BUILD_IMAGE=1 pkg/rpm/docker-build-rpm-x86_64.sh
# apk-packaging:
# name: Build Alpine Linux APK Package
diff --git a/pkg/deb/Dockerfile b/pkg/deb/Dockerfile
index 171c829..839f05a 100644
--- a/pkg/deb/Dockerfile
+++ b/pkg/deb/Dockerfile
@@ -19,7 +19,9 @@
# Build pulsar client library in Centos with tools to
-FROM --platform=linux/amd64 debian:9
+FROM debian:9
+
+ARG PLATFORM
# perl is required to install OpenSSL
RUN apt-get update -y && \
@@ -33,11 +35,11 @@ RUN curl -O -L https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/
./b2 address-model=64 cxxflags=-fPIC link=static threading=multi variant=release install && \
rm -rf /boost_1_79_0.tar.gz /boost_1_79_0
-RUN curl -O -L https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0-linux-x86_64.tar.gz && \
- tar xfz cmake-3.24.0-linux-x86_64.tar.gz && \
- cp cmake-3.24.0-linux-x86_64/bin/* /usr/bin/ && \
- cp -r cmake-3.24.0-linux-x86_64/share/cmake-3.24 /usr/share/ && \
- rm -rf cmake-3.24.0-linux-x86_64 cmake-3.24.0-linux-x86_64.tar.gz
+RUN curl -O -L https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0-linux-${PLATFORM}.tar.gz && \
+ tar xfz cmake-3.24.0-linux-${PLATFORM}.tar.gz && \
+ cp cmake-3.24.0-linux-${PLATFORM}/bin/* /usr/bin/ && \
+ cp -r cmake-3.24.0-linux-${PLATFORM}/share/cmake-3.24 /usr/share/ && \
+ rm -rf cmake-3.24.0-linux-${PLATFORM} cmake-3.24.0-linux-${PLATFORM}.tar.gz
# Download and copile protoubf
RUN curl -O -L https://github.com/google/protobuf/releases/download/v3.20.0/protobuf-cpp-3.20.0.tar.gz && \
@@ -74,7 +76,7 @@ RUN curl -O -L https://github.com/google/snappy/releases/download/1.1.3/snappy-1
RUN curl -O -L https://github.com/openssl/openssl/archive/OpenSSL_1_1_1n.tar.gz && \
tar xfz OpenSSL_1_1_1n.tar.gz && \
cd openssl-OpenSSL_1_1_1n/ && \
- ./Configure -fPIC --prefix=/usr/local/ssl/ linux-x86_64 && \
+ ./Configure -fPIC --prefix=/usr/local/ssl/ linux-${PLATFORM} && \
make -j8 && make install && \
rm -rf /OpenSSL_1_1_1n.tar.gz /openssl-OpenSSL_1_1_1n
diff --git a/pkg/deb/build-deb.sh b/pkg/deb/build-deb.sh
index 5835714..b1d30ec 100755
--- a/pkg/deb/build-deb.sh
+++ b/pkg/deb/build-deb.sh
@@ -51,7 +51,7 @@ cat <<EOF > $DEST_DIR/DEBIAN/control
Package: apache-pulsar-client
Version: ${VERSION}
Maintainer: Apache Pulsar <de...@pulsar.apache.org>
-Architecture: amd64
+Architecture: ${PLATFORM}
Description: The Apache Pulsar client contains a C++ and C APIs to interact with Apache Pulsar brokers.
EOF
@@ -61,7 +61,7 @@ cat <<EOF > $DEVEL_DEST_DIR/DEBIAN/control
Package: apache-pulsar-client-dev
Version: ${VERSION}
Maintainer: Apache Pulsar <de...@pulsar.apache.org>
-Architecture: amd64
+Architecture: ${PLATFORM}
Depends: apache-pulsar-client
Description: The Apache Pulsar client contains a C++ and C APIs to interact with Apache Pulsar brokers.
EOF
diff --git a/pkg/deb/docker-build-deb.sh b/pkg/deb/create-images.sh
similarity index 74%
copy from pkg/deb/docker-build-deb.sh
copy to pkg/deb/create-images.sh
index 85e4cef..ad85357 100755
--- a/pkg/deb/docker-build-deb.sh
+++ b/pkg/deb/create-images.sh
@@ -18,12 +18,15 @@
# under the License.
#
-set -ex
+set -e -x
ROOT_DIR=$(git rev-parse --show-toplevel)
+cd $ROOT_DIR/pkg/deb
-IMAGE_NAME=apachepulsar/pulsar-build:debian-9-2.11-x86_64
+# ARM
+IMAGE=apachepulsar/pulsar-build:debian-9-2.11-arm64
+docker build --platform arm64 -t $IMAGE . --build-arg PLATFORM=aarch64
-docker pull $IMAGE_NAME
-docker run -v $ROOT_DIR:/pulsar-client-cpp $IMAGE_NAME \
- /pulsar-client-cpp/pkg/deb/build-deb.sh
+# X86_64
+IMAGE=apachepulsar/pulsar-build:debian-9-2.11-x86_64
+docker build --platform x86_64 -t $IMAGE . --build-arg PLATFORM=x86_64
diff --git a/pkg/deb/docker-build-deb.sh b/pkg/deb/docker-build-deb-arm64.sh
similarity index 85%
copy from pkg/deb/docker-build-deb.sh
copy to pkg/deb/docker-build-deb-arm64.sh
index 85e4cef..5a814b2 100755
--- a/pkg/deb/docker-build-deb.sh
+++ b/pkg/deb/docker-build-deb-arm64.sh
@@ -22,8 +22,10 @@ set -ex
ROOT_DIR=$(git rev-parse --show-toplevel)
-IMAGE_NAME=apachepulsar/pulsar-build:debian-9-2.11-x86_64
+IMAGE_NAME=apachepulsar/pulsar-build:debian-9-2.11-arm64
docker pull $IMAGE_NAME
-docker run -v $ROOT_DIR:/pulsar-client-cpp $IMAGE_NAME \
+docker run -v $ROOT_DIR:/pulsar-client-cpp \
+ --env PLATFORM=arm64 \
+ $IMAGE_NAME \
/pulsar-client-cpp/pkg/deb/build-deb.sh
diff --git a/pkg/deb/docker-build-deb.sh b/pkg/deb/docker-build-deb-x86_64.sh
similarity index 91%
copy from pkg/deb/docker-build-deb.sh
copy to pkg/deb/docker-build-deb-x86_64.sh
index 85e4cef..5a958a6 100755
--- a/pkg/deb/docker-build-deb.sh
+++ b/pkg/deb/docker-build-deb-x86_64.sh
@@ -25,5 +25,7 @@ ROOT_DIR=$(git rev-parse --show-toplevel)
IMAGE_NAME=apachepulsar/pulsar-build:debian-9-2.11-x86_64
docker pull $IMAGE_NAME
-docker run -v $ROOT_DIR:/pulsar-client-cpp $IMAGE_NAME \
+docker run -v $ROOT_DIR:/pulsar-client-cpp \
+ --env PLATFORM=amd64 \
+ $IMAGE_NAME \
/pulsar-client-cpp/pkg/deb/build-deb.sh
diff --git a/pkg/rpm/Dockerfile b/pkg/rpm/Dockerfile
index 246ca23..e4b809b 100644
--- a/pkg/rpm/Dockerfile
+++ b/pkg/rpm/Dockerfile
@@ -21,9 +21,11 @@
FROM centos:7
+ARG PLATFORM
+
RUN yum update -y && \
yum install -y gcc-c++ make rpm-build which \
- createrepo libstdc++-static.x86_64 python3
+ createrepo libstdc++-static python3
# Download and compile boost
# GCC 4.8.2 implementation of std::regex is buggy, so we install boost::regex here
@@ -34,11 +36,11 @@ RUN curl -O -L https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/
./b2 address-model=64 cxxflags=-fPIC link=static threading=multi variant=release install && \
rm -rf /boost_1_79_0.tar.gz /boost_1_79_0
-RUN curl -O -L https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0-linux-x86_64.tar.gz && \
- tar xfz cmake-3.24.0-linux-x86_64.tar.gz && \
- cp cmake-3.24.0-linux-x86_64/bin/* /usr/bin/ && \
- cp -r cmake-3.24.0-linux-x86_64/share/cmake-3.24 /usr/share/ && \
- rm -rf cmake-3.24.0-linux-x86_64 cmake-3.24.0-linux-x86_64.tar.gz
+RUN curl -O -L https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0-linux-${PLATFORM}.tar.gz && \
+ tar xfz cmake-3.24.0-linux-${PLATFORM}.tar.gz && \
+ cp cmake-3.24.0-linux-${PLATFORM}/bin/* /usr/bin/ && \
+ cp -r cmake-3.24.0-linux-${PLATFORM}/share/cmake-3.24 /usr/share/ && \
+ rm -rf cmake-3.24.0-linux-${PLATFORM} cmake-3.24.0-linux-${PLATFORM}.tar.gz
# Download and copile protoubf
RUN curl -O -L https://github.com/google/protobuf/releases/download/v3.20.0/protobuf-cpp-3.20.0.tar.gz && \
@@ -75,7 +77,7 @@ RUN curl -O -L https://github.com/google/snappy/releases/download/1.1.3/snappy-1
RUN curl -O -L https://github.com/openssl/openssl/archive/OpenSSL_1_1_1n.tar.gz && \
tar xfz OpenSSL_1_1_1n.tar.gz && \
cd openssl-OpenSSL_1_1_1n/ && \
- ./Configure -fPIC --prefix=/usr/local/ssl/ linux-x86_64 && \
+ ./Configure -fPIC --prefix=/usr/local/ssl/ linux-${PLATFORM} && \
make -j8 && make install && \
rm -rf /OpenSSL_1_1_1n.tar.gz /openssl-OpenSSL_1_1_1n
diff --git a/pkg/rpm/build-rpm.sh b/pkg/rpm/build-rpm.sh
index 977ae72..6f15a84 100755
--- a/pkg/rpm/build-rpm.sh
+++ b/pkg/rpm/build-rpm.sh
@@ -39,5 +39,5 @@ rpmbuild -v -bb --clean \
--define "_topdir $PWD" \
SPECS/pulsar-client.spec
-cd RPMS/x86_64
+cd RPMS/${PLATFORM}
createrepo .
diff --git a/pkg/deb/docker-build-deb.sh b/pkg/rpm/create-images.sh
similarity index 74%
rename from pkg/deb/docker-build-deb.sh
rename to pkg/rpm/create-images.sh
index 85e4cef..9bfb3ee 100755
--- a/pkg/deb/docker-build-deb.sh
+++ b/pkg/rpm/create-images.sh
@@ -18,12 +18,15 @@
# under the License.
#
-set -ex
+set -e -x
ROOT_DIR=$(git rev-parse --show-toplevel)
+cd $ROOT_DIR/pkg/rpm
-IMAGE_NAME=apachepulsar/pulsar-build:debian-9-2.11-x86_64
+# ARM
+IMAGE=apachepulsar/pulsar-build:centos-7-2.11-arm64
+docker build --platform arm64 -t $IMAGE . --build-arg PLATFORM=aarch64
-docker pull $IMAGE_NAME
-docker run -v $ROOT_DIR:/pulsar-client-cpp $IMAGE_NAME \
- /pulsar-client-cpp/pkg/deb/build-deb.sh
+# X86_64
+IMAGE=apachepulsar/pulsar-build:centos-7-2.11-x86_64
+docker build --platform x86_64 -t $IMAGE . --build-arg PLATFORM=x86_64
diff --git a/pkg/rpm/docker-build-rpm.sh b/pkg/rpm/docker-build-rpm-arm64.sh
similarity index 81%
copy from pkg/rpm/docker-build-rpm.sh
copy to pkg/rpm/docker-build-rpm-arm64.sh
index 3c50a51..07d05d6 100755
--- a/pkg/rpm/docker-build-rpm.sh
+++ b/pkg/rpm/docker-build-rpm-arm64.sh
@@ -20,10 +20,13 @@
set -ex
-ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/../.. &> /dev/null && pwd )"
-IMAGE_NAME=apachepulsar/pulsar-build:centos-7-2.11-x86_64
+ROOT_DIR=$(git rev-parse --show-toplevel)
+
+IMAGE_NAME=apachepulsar/pulsar-build:centos-7-2.11-arm64
docker pull $IMAGE_NAME
-docker run -v $ROOT_DIR:/pulsar-client-cpp $IMAGE_NAME \
+docker run -v $ROOT_DIR:/pulsar-client-cpp \
+ --env PLATFORM=aarch64 \
+ $IMAGE_NAME \
/pulsar-client-cpp/pkg/rpm/build-rpm.sh
diff --git a/pkg/rpm/docker-build-rpm.sh b/pkg/rpm/docker-build-rpm-x86_64.sh
similarity index 87%
rename from pkg/rpm/docker-build-rpm.sh
rename to pkg/rpm/docker-build-rpm-x86_64.sh
index 3c50a51..69707c1 100755
--- a/pkg/rpm/docker-build-rpm.sh
+++ b/pkg/rpm/docker-build-rpm-x86_64.sh
@@ -20,10 +20,13 @@
set -ex
-ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/../.. &> /dev/null && pwd )"
+ROOT_DIR=$(git rev-parse --show-toplevel)
+
IMAGE_NAME=apachepulsar/pulsar-build:centos-7-2.11-x86_64
docker pull $IMAGE_NAME
-docker run -v $ROOT_DIR:/pulsar-client-cpp $IMAGE_NAME \
+docker run -v $ROOT_DIR:/pulsar-client-cpp \
+ --env PLATFORM=x86_64 \
+ $IMAGE_NAME \
/pulsar-client-cpp/pkg/rpm/build-rpm.sh