forked from pEp.foundation/pEpJNIAdapter
This commit cleans up the existing CI scripts a bit while adding jobs to build RPM packages. The directory structure allows for easily adding more package targets. RPM outputs will only be uploaded on tagged commits.master^2
parent
1e62ff0bc4
commit
f8e1ca2236
@ -0,0 +1,30 @@
|
||||
ARG DOCKER_REGISTRY_HOST
|
||||
ARG CURRENT_DISTRO
|
||||
ARG LIBPEPADAPTER_VERSION
|
||||
FROM ${DOCKER_REGISTRY_HOST}/pep-${CURRENT_DISTRO}-libpepadapter:${LIBPEPADAPTER_VERSION}
|
||||
|
||||
ENV BUILDROOT /build
|
||||
ENV INSTPREFIX /install
|
||||
ENV OUTDIR /out
|
||||
|
||||
ARG JNIADAPTER_VERSION
|
||||
|
||||
## Install system dependencies
|
||||
USER root
|
||||
RUN yum -y install time java-1.8.0-openjdk java-1.8.0-openjdk-devel && \
|
||||
yum clean all
|
||||
|
||||
## Build and install pEpJNIAdapter
|
||||
### Setup working directory
|
||||
RUN mkdir ${BUILDROOT}/pEpJNIAdapter
|
||||
COPY . ${BUILDROOT}/pEpJNIAdapter
|
||||
RUN chown -R pep-builder:pep-builder ${BUILDROOT}/pEpJNIAdapter
|
||||
USER pep-builder
|
||||
WORKDIR ${BUILDROOT}/pEpJNIAdapter
|
||||
|
||||
RUN sh ./scripts/common/build_pEpJNIAdapter.sh && \
|
||||
install -m 644 -t ${INSTPREFIX}/lib dist/libpEpJNI.a && \
|
||||
install -m 755 -t ${INSTPREFIX}/lib dist/libpEpJNI.so && \
|
||||
install -m 644 -t ${INSTPREFIX}/lib dist/pEp.jar && \
|
||||
echo "${pepjni_ver}">${INSTPREFIX}/pEp_JNI.ver && \
|
||||
rm -rf ${BUILDROOT}/*
|
@ -0,0 +1,79 @@
|
||||
include ../../DEPENDENCIES
|
||||
export
|
||||
LIBPEPADAPTER_VERSION=${libpEpAdapter}
|
||||
PEPENGINE_VERSION=${pEpEngine}
|
||||
SEQUOIA_VERSION=${sequoia}
|
||||
CURRENT_DISTRO=${CI_DISTRO_TARGET}
|
||||
IMAGE_NAME=${DOCKER_REGISTRY_HOST}/pep-$(CURRENT_DISTRO)-jniadapter
|
||||
DOCKERFILE=JNIAdapter.$(CURRENT_DISTRO).Dockerfile
|
||||
PKG_BUILD_IMAGE=${DOCKER_REGISTRY_HOST}/fpm-$(CURRENT_DISTRO)
|
||||
PKG_INSTALL_PATH=/opt/pEp
|
||||
PKG_NAME=pEpJNIAdapter
|
||||
PKG_DESCRIPTION="p≡p JNI Adapter Binary RPM Package"
|
||||
PKG_DEPENDS="libpEpAdapter --depends java-1.8.0-openjdk"
|
||||
PKG_INSTALL_PATH_STRING="/ /package/lib=${PKG_INSTALL_PATH}"
|
||||
IS_TAGGED=${TAGGED_BUILD}
|
||||
ifeq ($(IS_TAGGED), true)
|
||||
# $CI_COMMIT_TAG is a predefined environment variable from Gitlab
|
||||
PEPJNIADAPTER_VERSION=${CI_COMMIT_TAG}
|
||||
else
|
||||
PEPJNIADAPTER_VERSION=$(shell git rev-parse --short=8 HEAD)
|
||||
endif
|
||||
all: build
|
||||
|
||||
build:
|
||||
-docker pull $(IMAGE_NAME):latest
|
||||
cd ../../ && docker build --build-arg CURRENT_DISTRO=$(CURRENT_DISTRO) \
|
||||
--build-arg DOCKER_REGISTRY_HOST=${DOCKER_REGISTRY_HOST} \
|
||||
--build-arg PEPJNIADAPTER_VERSION=$(PEPJNIADAPTER_VERSION) \
|
||||
--build-arg LIBPEPADAPTER_VERSION=$(LIBPEPADAPTER_VERSION) \
|
||||
--build-arg PEPENGINE_VERSION=$(PEPENGINE_VERSION) \
|
||||
--build-arg SEQUOIA_VERSION=$(SEQUOIA_VERSION) \
|
||||
--cache-from $(IMAGE_NAME):latest \
|
||||
--tag=$(IMAGE_NAME):$(PEPJNIADAPTER_VERSION) \
|
||||
--tag=$(IMAGE_NAME):$(PEPJNIADAPTER_VERSION)_libpepadapter-$(LIBPEPADAPTER_VERSION)_engine-$(PEPENGINE_VERSION) \
|
||||
--tag=$(IMAGE_NAME):latest \
|
||||
-f scripts/${CURRENT_DISTRO}/$(DOCKERFILE) .
|
||||
docker push $(IMAGE_NAME):$(PEPJNIADAPTER_VERSION)
|
||||
docker push $(IMAGE_NAME):$(PEPJNIADAPTER_VERSION)_libpepadapter-$(LIBPEPADAPTER_VERSION)_engine-$(PEPENGINE_VERSION)
|
||||
docker push $(IMAGE_NAME):latest
|
||||
|
||||
java8:
|
||||
-docker pull $(IMAGE_NAME)-java8:latest
|
||||
cd ../../ && docker build --build-arg CURRENT_DISTRO=$(CURRENT_DISTRO) \
|
||||
--build-arg DOCKER_REGISTRY_HOST=${DOCKER_REGISTRY_HOST} \
|
||||
--build-arg PEPJNIADAPTER_VERSION=$(PEPJNIADAPTER_VERSION) \
|
||||
--build-arg LIBPEPADAPTER_VERSION=$(LIBPEPADAPTER_VERSION) \
|
||||
--build-arg PEPENGINE_VERSION=$(PEPENGINE_VERSION) \
|
||||
--build-arg SEQUOIA_VERSION=$(SEQUOIA_VERSION) \
|
||||
--cache-from $(IMAGE_NAME):latest \
|
||||
--tag=$(IMAGE_NAME)-java8:$(PEPJNIADAPTER_VERSION) \
|
||||
--tag=$(IMAGE_NAME)-java8:$(PEPJNIADAPTER_VERSION)_libpepadapter-$(LIBPEPADAPTER_VERSION)_engine-$(PEPENGINE_VERSION) \
|
||||
--tag=$(IMAGE_NAME)-java8:latest \
|
||||
-f scripts/${CURRENT_DISTRO}/java8.$(DOCKERFILE) .
|
||||
docker push $(IMAGE_NAME)-java8:$(PEPJNIADAPTER_VERSION)
|
||||
docker push $(IMAGE_NAME)-java8:$(PEPJNIADAPTER_VERSION)_libpepadapter-$(LIBPEPADAPTER_VERSION)_engine-$(PEPENGINE_VERSION)
|
||||
docker push $(IMAGE_NAME)-java8:latest
|
||||
rpm:
|
||||
-docker pull $(PKG_BUILD_IMAGE)-jniadapter:latest
|
||||
@docker build --build-arg CURRENT_DISTRO=$(CURRENT_DISTRO) \
|
||||
--build-arg PEPJNIADAPTER_VERSION=$(PEPJNIADAPTER_VERSION) \
|
||||
--build-arg DOCKER_REGISTRY_HOST=${DOCKER_REGISTRY_HOST} \
|
||||
--build-arg PKG_INSTALL_PATH=$(PKG_INSTALL_PATH) \
|
||||
--cache-from $(PKG_BUILD_IMAGE)-jniadapter:latest \
|
||||
--tag=$(PKG_BUILD_IMAGE)-jniadapter:$(PEPJNIADAPTER_VERSION) \
|
||||
--tag=$(PKG_BUILD_IMAGE)-jniadapter:latest \
|
||||
packages/rpm
|
||||
@docker push $(PKG_BUILD_IMAGE)-jniadapter:$(PEPJNIADAPTER_VERSION)
|
||||
@docker push $(PKG_BUILD_IMAGE)-jniadapter:latest
|
||||
@docker run -e PEPJNIADAPTER_VERSION=$(PEPJNIADAPTER_VERSION) \
|
||||
-e PKG_VERSION=$(LIBPEPADAPTER_VERSION) \
|
||||
-e PKG_INSTALL_PATH=$(PKG_INSTALL_PATH) \
|
||||
-e PKG_NAME=$(PKG_NAME) \
|
||||
-e PKG_DESCRIPTION=$(PKG_DESCRIPTION) \
|
||||
-e PKG_DEPENDS=$(PKG_DEPENDS) \
|
||||
-e PKG_INSTALL_PATH_STRING=$(PKG_INSTALL_PATH_STRING) \
|
||||
--rm -v $(shell pwd)/packages/rpm/create-jniadapter-rpm.sh:/usr/bin/create-rpm.sh:ro \
|
||||
-v $(shell pwd)/out:/out \
|
||||
-w / $(PKG_BUILD_IMAGE)-jniadapter:${PEPJNIADAPTER_VERSION} \
|
||||
/usr/bin/create-rpm.sh
|
@ -0,0 +1,18 @@
|
||||
ARG DOCKER_REGISTRY_HOST
|
||||
ARG CURRENT_DISTRO
|
||||
ARG PEPJNIADAPTER_VERSION
|
||||
FROM ${DOCKER_REGISTRY_HOST}/pep-${CURRENT_DISTRO}-jniadapter:${PEPJNIADAPTER_VERSION} AS pEpBuild
|
||||
|
||||
FROM ${DOCKER_REGISTRY_HOST}/fpm-${CURRENT_DISTRO}:latest
|
||||
# whatever is required for building should be installed in this image; just like BuildRequires: for RPM specs
|
||||
RUN yum -y install readline-devel epel-release && \
|
||||
yum -y install patchelf chrpath
|
||||
|
||||
ARG PEP_MACHINE_DIR
|
||||
COPY --from=pEpBuild /install /source
|
||||
|
||||
COPY install.sh /usr/local/bin/install.sh
|
||||
|
||||
ENV INSTPREFIX /source
|
||||
|
||||
RUN /usr/local/bin/install.sh
|
@ -0,0 +1,25 @@
|
||||
#!/bin/bash -ex
|
||||
# we should always set proper ownership before exiting, otherwise
|
||||
# the created packages will have root:root ownership and we'll be unable
|
||||
# to delete them from our host.
|
||||
trap 'chown -R --reference /usr/bin/create-rpm.sh /out/' EXIT
|
||||
|
||||
# the source directory is mounted read-only to prevent issues where the build
|
||||
# could alter the source; we should copy it somewhere inside the container
|
||||
cd /source/out
|
||||
ls -alh
|
||||
tree
|
||||
INSTALL_TOP=/package
|
||||
mkdir -p ${INSTALL_TOP}/lib
|
||||
cp -ar lib/* ${INSTALL_TOP}/lib/.
|
||||
|
||||
|
||||
cd /out
|
||||
|
||||
#this would be the no-signature command line
|
||||
fpm -t rpm -s dir \
|
||||
-n ${PKG_NAME} \
|
||||
--version ${PKG_VERSION} \
|
||||
--description "${PKG_DESCRIPTION}" \
|
||||
--depends ${PKG_DEPENDS} \
|
||||
-C ${PKG_INSTALL_PATH_STRING}
|
@ -0,0 +1,34 @@
|
||||
#!/bin/bash
|
||||
set -exuo pipefail
|
||||
|
||||
# ===========================
|
||||
# Distro
|
||||
# ===========================
|
||||
|
||||
echo 7 >"${INSTPREFIX}/D_REVISION"
|
||||
|
||||
D_REV=$(cat ${INSTPREFIX}/D_REVISION)
|
||||
D=""
|
||||
|
||||
D=${INSTPREFIX}/out
|
||||
|
||||
mkdir -p ${INSTPREFIX}/out
|
||||
rm -rf ${INSTPREFIX}/out/*
|
||||
mkdir -p "$D"/{bin,ld,lib/pEp,share/pEp,include/pEp}
|
||||
|
||||
tree ${INSTPREFIX}
|
||||
|
||||
# pEpJNIAdapter
|
||||
cp -a ${INSTPREFIX}/lib/libpEpJNI.a "$D"/lib
|
||||
cp -a ${INSTPREFIX}/lib/libpEpJNI.so "$D"/lib
|
||||
cp -a ${INSTPREFIX}/lib/pEp.jar "$D"/lib
|
||||
|
||||
# versions
|
||||
cp -a ${INSTPREFIX}/*.ver "$D"
|
||||
|
||||
find "$D"/lib -maxdepth 1 -type f -print -exec patchelf --set-rpath '$ORIGIN/pEp:$ORIGIN' {} \;
|
||||
find "$D"/lib/pEp -type f -print -exec patchelf --set-rpath '$ORIGIN' {} \;
|
||||
find "$D"/bin -type f -print -exec patchelf --set-rpath '$ORIGIN/../lib/pEp:$ORIGIN/../lib' {} \;
|
||||
|
||||
ls -lh "$D"/*
|
||||
du -sch "$D"
|
Loading…
Reference in new issue