summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/build-ubuntu.yml2
-rw-r--r--.github/workflows/codeql.yml2
-rw-r--r--.github/workflows/test.yml15
-rw-r--r--CMakeLists.txt24
-rw-r--r--VERSION1
-rw-r--r--docker/Dockerfile-test30
-rw-r--r--docker/Dockerfile-ubuntu-20.0419
-rw-r--r--docker/Dockerfile-ubuntu-22.0419
-rw-r--r--docker/README.md32
-rw-r--r--docker/centos-8.Dockerfile (renamed from docker/Dockerfile-centos-8)21
-rw-r--r--docker/ubuntu-20.04.Dockerfile34
-rw-r--r--docker/ubuntu-22.04.Dockerfile34
-rwxr-xr-xscripts/install-build-deps.sh (renamed from install-build-deps.sh)2
-rwxr-xr-xscripts/test-in-container.sh35
14 files changed, 168 insertions, 102 deletions
diff --git a/.github/workflows/build-ubuntu.yml b/.github/workflows/build-ubuntu.yml
index 596341b..a871f9a 100644
--- a/.github/workflows/build-ubuntu.yml
+++ b/.github/workflows/build-ubuntu.yml
@@ -20,7 +20,7 @@ jobs:
steps:
- uses: actions/checkout@v3
- name: install build dependency
- run: sudo ./install-build-deps.sh
+ run: sudo ./scripts/install-build-deps.sh
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 366d6c7..c875499 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -41,7 +41,7 @@ jobs:
uses: actions/checkout@v3
- name: Install build dependency
- run: sudo ./install-build-deps.sh
+ run: sudo ./scripts/install-build-deps.sh
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index b8b8737..a4c1909 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -1,4 +1,4 @@
-name: test on ubuntu
+name: test
on:
push:
@@ -12,11 +12,14 @@ env:
jobs:
test:
runs-on: ubuntu-latest
-
steps:
- uses: actions/checkout@v3
- - name: Build test container
- run: docker build --rm -t mscp-test -f docker/Dockerfile-test .
- - name: Run test
- run: docker run --init --rm mscp-test bash -c "/usr/sbin/sshd; cd /mscp/build; ctest --verbose"
+ - name: Build ubuntu 22.04 container
+ run: docker build --rm -t mscp-ubuntu:22.04 -f docker/ubuntu-22.04.Dockerfile .
+ - name: Run test on ubuntu 22.04
+ run: docker run --init --rm mscp-ubuntu:22.04 /mscp/scripts/test-in-container.sh
+ - name: Build centos 8 container
+ run: docker build --rm -t mscp-centos:8 -f docker/centos-8.Dockerfile .
+ - name: Run test on centos 8
+ run: docker run --init --rm mscp-centos:8 /mscp/scripts/test-in-container.sh
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 93eea69..cd13603 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,9 @@
cmake_minimum_required(VERSION 3.13)
+file (STRINGS "VERSION" MSCP_VERSION)
+
project(mscp
- VERSION 0.0.0
+ VERSION ${MSCP_VERSION}
LANGUAGES C)
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG")
@@ -77,24 +79,30 @@ if(BUILD_PKG)
add_custom_target(package-ubuntu-20.04-in-docker
COMMENT "Build mscp in ubuntu 20.04 docker container"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- COMMAND docker build -t mscp-ubuntu:20.04 -f docker/Dockerfile-ubuntu-20.04 .
- COMMAND docker run -it --rm -v ${CMAKE_BINARY_DIR}:/out mscp-ubuntu:20.04
- cp /mscp/build/mscp_${PROJECT_VERSION}-ubuntu-20.04-${ARCH}.deb /out/)
+ COMMAND docker build -t mscp-ubuntu:20.04 -f docker/ubuntu-20.04.Dockerfile .
+ COMMAND docker run --init --rm mscp-ubuntu:20.04
+ /mscp/scripts/test-in-container.sh
+ COMMAND docker run --rm -v ${CMAKE_BINARY_DIR}:/out mscp-ubuntu:20.04
+ cp /mscp/build/mscp_${PROJECT_VERSION}-ubuntu-20.04-${ARCH}.deb /out/)
# Ubuntu 22.04
add_custom_target(package-ubuntu-22.04-in-docker
COMMENT "Build mscp in ubuntu 22.04 docker container"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- COMMAND docker build -t mscp-ubuntu:22.04 -f docker/Dockerfile-ubuntu-22.04 .
- COMMAND docker run -it --rm -v ${CMAKE_BINARY_DIR}:/out mscp-ubuntu:22.04
+ COMMAND docker build -t mscp-ubuntu:22.04 -f docker/ubuntu-22.04.Dockerfile .
+ COMMAND docker run --init --rm mscp-ubuntu:22.04
+ /mscp/scripts/test-in-container.sh
+ COMMAND docker run --rm -v ${CMAKE_BINARY_DIR}:/out mscp-ubuntu:22.04
cp /mscp/build/mscp_${PROJECT_VERSION}-ubuntu-22.04-${ARCH}.deb /out/)
# CentOS 8
add_custom_target(package-centos-8-in-docker
COMMENT "Build mscp in centos 8 docker container"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- COMMAND docker build -t mscp-centos:8 -f docker/Dockerfile-centos-8 .
- COMMAND docker run -it --rm -v ${CMAKE_BINARY_DIR}:/out mscp-centos:8
+ COMMAND docker build -t mscp-centos:8 -f docker/centos-8.Dockerfile .
+ COMMAND docker run --init --rm mscp-centos:8
+ /mscp/scripts/test-in-container.sh
+ COMMAND docker run --rm -v ${CMAKE_BINARY_DIR}:/out mscp-centos:8
cp /mscp/build/mscp_${PROJECT_VERSION}-centos-8-${ARCH}.rpm /out/)
# build on all conatiners
diff --git a/VERSION b/VERSION
new file mode 100644
index 0000000..77d6f4c
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+0.0.0
diff --git a/docker/Dockerfile-test b/docker/Dockerfile-test
deleted file mode 100644
index f4d44c7..0000000
--- a/docker/Dockerfile-test
+++ /dev/null
@@ -1,30 +0,0 @@
-FROM ubuntu:latest
-
-ARG DEBIAN_FRONTEND=noninteractive
-ARG mscpdir="/mscp"
-
-COPY . ${mscpdir}
-
-RUN set -ex && apt-get update && apt-get install -y --no-install-recommends \
- ca-certificates
-
-# install numpy and pytest, and sshd for test
-RUN apt-get install -y --no-install-recommends \
- python3 python3-pip openssh-server
-
-RUN python3 -m pip install numpy pytest
-
-
-# preparation for sshd
-RUN mkdir /var/run/sshd \
- && ssh-keygen -f /root/.ssh/id_rsa -N "" \
- && mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
-
-
-# build
-RUN ${mscpdir}/install-build-deps.sh
-
-RUN cd ${mscpdir} \
- && rm -rf build \
- && mkdir build && cd build \
- && cmake .. && make
diff --git a/docker/Dockerfile-ubuntu-20.04 b/docker/Dockerfile-ubuntu-20.04
deleted file mode 100644
index 687072c..0000000
--- a/docker/Dockerfile-ubuntu-20.04
+++ /dev/null
@@ -1,19 +0,0 @@
-FROM ubuntu:20.04
-
-ARG DEBIAN_FRONTEND=noninteractive
-ARG mscpdir="/mscp"
-
-COPY . ${mscpdir}
-
-RUN set -ex && apt-get update && apt-get install -y --no-install-recommends \
- ca-certificates
-
-RUN ${mscpdir}/install-build-deps.sh
-
-RUN cd ${mscpdir} \
- && rm -rf build
-
-RUN cd ${mscpdir} \
- && cmake -B build -DBUILD_PKG=1 \
- && cd ${mscpdir}/build \
- && cpack -G DEB CPackConfig.cmake
diff --git a/docker/Dockerfile-ubuntu-22.04 b/docker/Dockerfile-ubuntu-22.04
deleted file mode 100644
index 59a57d2..0000000
--- a/docker/Dockerfile-ubuntu-22.04
+++ /dev/null
@@ -1,19 +0,0 @@
-FROM ubuntu:22.04
-
-ARG DEBIAN_FRONTEND=noninteractive
-ARG mscpdir="/mscp"
-
-COPY . ${mscpdir}
-
-RUN set -ex && apt-get update && apt-get install -y --no-install-recommends \
- ca-certificates
-
-RUN ${mscpdir}/install-build-deps.sh
-
-RUN cd ${mscpdir} \
- && rm -rf build
-
-RUN cd ${mscpdir} \
- && cmake -B build -DBUILD_PKG=1 \
- && cd ${mscpdir}/build \
- && cpack -G DEB CPackConfig.cmake
diff --git a/docker/README.md b/docker/README.md
index 8576acd..6ed88d8 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -1,31 +1,37 @@
-Build `mscp` in docker containers.
+Build docker containers.
```console
cd ..
-docker build -t mscp-ubuntu:20.04 -f docker/Dockerfile-ubuntu-20.04 .
-docker run -it --rm -v (pwd):/out mscp-ubuntu:20.04 \
- cp /mscp/build/mscp_0.0.0-ubuntu-20.04-x86_64.deb /out/
+docker build -t mscp-ubuntu:20.04 -f docker/ubuntu-20.04.Dockerfile .
docker build -t mscp-ubuntu:22.04 -f docker/Dockerfile-ubuntu-22.04 .
-docker run -it --rm -v (pwd):/out mscp-ubuntu:22.04 \
- cp /mscp/build/mscp_0.0.0-ubuntu-22.04-x86_64.deb /out/
docker build -t mscp-centos:8 -f docker/Dockerfile-centos-8 .
-docker run -it --rm -v (pwd):/out mscp-centos:8 \
- cp /mscp/build/mscp_0.0.0-centos-8-x86_64.rpm /out/
```
+Test `mscp` in the containers.
+
+```console
+docker run --init --rm mscp-ubuntu:20.04 /build/mscp/scripts/test-in-container.sh
+
+docker run --init --rm mscp-ubuntu:22.04 /build/mscp/scripts/test-in-container.sh
-Test `mscp` in a ubuntu:latest docker container.
+docker run --init --rm mscp-centos:8 /build/mscp/scripts/test-in-container.sh
+```
+
+Retrieve deb/rpm packages.
```console
-cd ..
+docker run --rm -v (pwd):/out mscp-ubuntu:20.04 \
+ cp /mscp/build/mscp_0.0.0-ubuntu-20.04-x86_64.deb /out/
-docker build --rm -t mscp-test -f docker/Dockerfile-test .
+docker run --rm -v (pwd):/out mscp-ubuntu:22.04 \
+ cp /mscp/build/mscp_0.0.0-ubuntu-22.04-x86_64.deb /out/
-docker run --init --rm mscp-test bash -c "/usr/sbin/sshd; cd /mscp/build; ctest --verbose"
+docker run --rm -v (pwd):/out mscp-centos:8 \
+ cp /mscp/build/mscp_0.0.0-centos-8-x86_64.rpm /out/
```
-I don't know whether these these are good way. \ No newline at end of file
+I don't know whether these are good way. \ No newline at end of file
diff --git a/docker/Dockerfile-centos-8 b/docker/centos-8.Dockerfile
index 8210eca..3d60c72 100644
--- a/docker/Dockerfile-centos-8
+++ b/docker/centos-8.Dockerfile
@@ -9,16 +9,27 @@ RUN cd /etc/yum.repos.d/
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
+# install numpy and pytest, sshd for test, and rpm-build
RUN set -ex && yum -y update && yum -y install \
- rpm-build
+ python3 python3-pip openssh openssh-server openssh-clients rpm-build
-RUN ${mscpdir}/install-build-deps.sh
+RUN python3 -m pip install numpy pytest
-RUN cd ${mscpdir} \
- && rm -rf build
-RUN cd ${mscpdir} \
+# preparation for sshd
+RUN mkdir /var/run/sshd \
+ && ssh-keygen -A \
+ && ssh-keygen -f /root/.ssh/id_rsa -N "" \
+ && mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
+
+# install build dependency
+RUN ${mscpdir}/scripts/install-build-deps.sh
+
+# build
+RUN cd ${mscpdir} \
+ && rm -rf build \
&& cmake -B build -DBUILD_PKG=1 \
&& cd ${mscpdir}/build \
+ && make \
&& cpack -G RPM CPackConfig.cmake
diff --git a/docker/ubuntu-20.04.Dockerfile b/docker/ubuntu-20.04.Dockerfile
new file mode 100644
index 0000000..9fdeea3
--- /dev/null
+++ b/docker/ubuntu-20.04.Dockerfile
@@ -0,0 +1,34 @@
+FROM ubuntu:20.04
+
+ARG DEBIAN_FRONTEND=noninteractive
+ARG mscpdir="/mscp"
+
+COPY . ${mscpdir}
+
+RUN set -ex && apt-get update && apt-get install -y --no-install-recommends \
+ ca-certificates
+
+# install numpy and pytest, and sshd for test
+RUN apt-get install -y --no-install-recommends \
+ python3 python3-pip openssh-server
+
+RUN python3 -m pip install numpy pytest
+
+
+# preparation for sshd
+RUN mkdir /var/run/sshd \
+ && ssh-keygen -f /root/.ssh/id_rsa -N "" \
+ && mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
+
+
+# install build dependency
+RUN ${mscpdir}/scripts/install-build-deps.sh
+
+
+# build
+RUN cd ${mscpdir} \
+ && rm -rf build \
+ && cmake -B build -DBUILD_PKG=1 \
+ && cd ${mscpdir}/build \
+ && make \
+ && cpack -G DEB CPackConfig.cmake
diff --git a/docker/ubuntu-22.04.Dockerfile b/docker/ubuntu-22.04.Dockerfile
new file mode 100644
index 0000000..0f4ab9c
--- /dev/null
+++ b/docker/ubuntu-22.04.Dockerfile
@@ -0,0 +1,34 @@
+FROM ubuntu:22.04
+
+ARG DEBIAN_FRONTEND=noninteractive
+ARG mscpdir="/mscp"
+
+COPY . ${mscpdir}
+
+RUN set -ex && apt-get update && apt-get install -y --no-install-recommends \
+ ca-certificates
+
+# install numpy and pytest, and sshd for test
+RUN apt-get install -y --no-install-recommends \
+ python3 python3-pip openssh-server
+
+RUN python3 -m pip install numpy pytest
+
+
+# preparation for sshd
+RUN mkdir /var/run/sshd \
+ && ssh-keygen -f /root/.ssh/id_rsa -N "" \
+ && mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
+
+
+# install build dependency
+RUN ${mscpdir}/scripts/install-build-deps.sh
+
+
+# build
+RUN cd ${mscpdir} \
+ && rm -rf build \
+ && cmake -B build -DBUILD_PKG=1 \
+ && cd ${mscpdir}/build \
+ && make \
+ && cpack -G DEB CPackConfig.cmake
diff --git a/install-build-deps.sh b/scripts/install-build-deps.sh
index 9f8e9e7..df2552d 100755
--- a/install-build-deps.sh
+++ b/scripts/install-build-deps.sh
@@ -1,4 +1,6 @@
#!/bin/bash -e
+#
+# Install build dpenedencies.
source /etc/os-release
set -x
diff --git a/scripts/test-in-container.sh b/scripts/test-in-container.sh
new file mode 100755
index 0000000..ee389fe
--- /dev/null
+++ b/scripts/test-in-container.sh
@@ -0,0 +1,35 @@
+#!/bin/bash -e
+#
+# Run this script in docker containers. This script installs mscp from built package
+# and run test for mscp in the installed path.
+
+source /etc/os-release
+script_dir=$(cd $(dirname ${0}) && pwd)
+cd $script_dir
+project_version=$(cat ../VERSION)
+arch=$(uname -p)
+
+set -x
+
+# install package
+case $ID in
+ ubuntu*)
+ pkg=mscp_${project_version}-${ID}-${VERSION_ID}-${arch}.deb
+ dpkg -i ../build/$pkg
+ ;;
+ centos* | rhel*)
+ pkg=mscp_${project_version}-${ID}-${VERSION_ID}-${arch}.rpm
+ rpm -iv ../build/$pkg
+ ;;
+ *)
+ echo "unsupported test platform: $ID"
+ exit 1
+esac
+
+# Run sshd
+if [ ! -e /var/run/sshd.pid ]; then
+ /usr/sbin/sshd
+fi
+
+# Run test
+python3 -m pytest ../test -v