From 4ec2a926070fa47cf36c78dfa61df05b13f2aa28 Mon Sep 17 00:00:00 2001 From: fredbcode Date: Fri, 23 Apr 2021 11:39:35 +0200 Subject: [PATCH] Add first work --- .gitlab-ci.yml | 27 ++++++++++ Dockerfile | 7 ++- gitlabci/debianbuster.yml | 89 +++++++++++++++++++++++++++++++++ gitlabci/docker-ci/Dockerfile | 26 ++++++++++ gitlabci/docker-hub.yml | 41 +++++++++++++++ gitlabci/raspbianbuster.yml | 67 +++++++++++++++++++++++++ gitlabci/ubuntubionic.yml | 94 +++++++++++++++++++++++++++++++++++ gitlabci/ubuntufocal.yml | 94 +++++++++++++++++++++++++++++++++++ 8 files changed, 441 insertions(+), 4 deletions(-) create mode 100644 .gitlab-ci.yml create mode 100644 gitlabci/debianbuster.yml create mode 100644 gitlabci/docker-ci/Dockerfile create mode 100644 gitlabci/docker-hub.yml create mode 100644 gitlabci/raspbianbuster.yml create mode 100644 gitlabci/ubuntubionic.yml create mode 100644 gitlabci/ubuntufocal.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..735e1f9 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,27 @@ +workflow: + rules: + - if: $CI_COMMIT_BRANCH + +cache: + key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" + +stages: +# At first debian : init variables +#- build-debian +#- create-debian-package +#- test-publish-debian +- Docker-hub-build +#- Docker-hub-test +#- Docker-hub-pushtag + +### All +#- build +#- create-package +#- test-publish + +include: +# - 'gitlabci/docker-hub.yml' +# - 'gitlabci/debianbuster.yml' +# - 'gitlabci/ubuntubionic.yml' +# - 'gitlabci/raspbianbuster.yml' +# - 'gitlabci/ubuntufocal.yml' diff --git a/Dockerfile b/Dockerfile index bbdc71e..248af8c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,14 @@ -FROM registry.cer.ssaim.dnum.minint.fr/images/internet/debian:buster +FROM debian:buster ENV SQUID_CACHE_DIR=/var/spool/squid \ SQUID_LOG_DIR=/var/log/squid \ SQUID_USER=proxy \ - SQUID_VERSION=4.14 WORKDIR /tmp RUN apt-get update && apt-get --no-install-recommends -y build-dep squid && apt-get install --no-install-recommends -y wget tar xz-utils libssl-dev libssl1.1 \ - && mkdir squid && wget http://www.squid-cache.org/Versions/v4/squid-$SQUID_VERSION.tar.xz \ - && tar -C squid --strip-components=1 -xvf squid-$SQUID_VERSION.tar.xz \ + && mkdir squid && wget http://www.squid-cache.org/Versions/v4/$SQUID_VERSION.tar.gz \ + && tar -C squid --strip-components=1 -xvf $SQUID_VERSION \ && cd squid \ && ./configure \ --prefix=/usr \ diff --git a/gitlabci/debianbuster.yml b/gitlabci/debianbuster.yml new file mode 100644 index 0000000..db4930e --- /dev/null +++ b/gitlabci/debianbuster.yml @@ -0,0 +1,89 @@ +Build debian package: + stage: build-debian + artifacts: + expire_in: 30 minutes + paths: + - $CI_PROJECT_DIR + image: amd64/debian:stable + variables: + OS: "debian" + script: + - apt update + - apt-get -y upgrade + - apt install --no-install-recommends --no-install-suggests -y curl unzip base-files automake base-passwd + bash coreutils dash debianutils diffutils dpkg e2fsprogs findutils grep gzip hostname ncurses-base + libevent-pthreads-* libevent-dev ncurses-bin perl-base sed login sysvinit-utils tar bsdutils + mount util-linux libc6-dev libc-dev gcc g++ make dpkg-dev autotools-dev debhelper dh-autoreconf dpatch + libclamav-dev libpcre3-dev zlib1g-dev pkg-config libssl-dev libssl1.1 git ca-certificates lsb-release + - cd $CI_PROJECT_DIR && ./autogen.sh && ./configure '--prefix=/usr' '--enable-clamd=yes' '--with-proxyuser=e2guardian' '--with-proxygroup=e2guardian' '--sysconfdir=/etc' '--localstatedir=/var' '--enable-icap=yes' '--enable-commandline=yes' '--enable-email=yes' '--enable-ntlm=yes' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--enable-pcre=yes' '--enable-sslmitm=yes' 'CPPFLAGS=-mno-sse2 -g -O2' + - make + - find $CI_PROJECT_DIR -name ".git" -exec rm -r "{}" + + +Create Debian Package: + stage: create-debian-package + image: amd64/debian:stable + artifacts: + paths: + - $CI_PROJECT_DIR + variables: + PACKPATH: "$CI_PROJECT_DIR" + PACKDST: "$CI_PROJECT_DIR/scripts/debian_package/e2debian_package" + OS: "debian" + script: + - apt update && apt install --no-install-recommends --no-install-suggests -y curl git ca-certificates util-linux binutils + - git clone https://github.com/fredbcode/scripts + - cp ${PACKPATH}/src/e2guardian ${PACKDST}/data/usr/sbin/e2guardian + - chmod +x ${PACKDST}/data/usr/sbin/e2guardian + - cp -Rf ${PACKPATH}/configs ${PACKDST}/data/etc/e2guardian + - mkdir -p ${PACKPATH}/share/e2guardian/languages + - cp -Rf ${PACKPATH}/data/languages ${PACKDST}/data/usr/share/e2guardian/ + - cp ${PACKPATH}/data/*.gif ${PACKDST}/data/usr/share/e2guardian/ + - cp ${PACKPATH}/data/*swf ${PACKDST}/data/usr/share/e2guardian/ + - cp ${PACKPATH}/data/scripts/e2guardian.service ${PACKDST}/data/lib/systemd/system + - find ${PACKDST}/ -type f -name "Makefil*" -delete + - find ${PACKDST}/ -type f -name "*.in" -delete + - SIZE=`stat -c %s ${PACKDST}/data` && echo $SIZE && sed -i "s/Installed-Size:.*$/Installed-Size:\ $SIZE/g" ${PACKDST}/control/control + - VFULL=`${PACKDST}/data/usr/sbin/e2guardian -v | sed -n 1p | cut -d ' ' -f 2` && sed -i "s/Version:.*$/Version:\ $VFULL/g" ${PACKDST}/control/control + - echo "export VFULL=$VFULL" >> $CI_PROJECT_DIR/scripts/debian_package/variables + - cd ${PACKDST} && cd .. && ./rebuild.sh e2"$OS"_package + - find $CI_PROJECT_DIR -name ".git" -exec rm -r "{}" + + +Test and publish Debian: + stage: test-publish-debian + image: amd64/debian:stable + artifacts: + name: builddebian + paths: + - $CI_PROJECT_DIR + variables: + PACKPATH: "$CI_PROJECT_DIR" + PACKDST: "$CI_PROJECT_DIR/scripts/debian_package" + CERT_DIR: "/etc/e2guardian/private/" + OS: "debian" + script: + - source $CI_PROJECT_DIR/scripts/debian_package/variables + - echo $VFULL + - apt update + - apt install -y openssl curl git lsb-release libevent-pthreads* libtommath* + - VERSION=`lsb_release -cs` + - cd ${PACKDST} && dpkg -i e2"$OS"_package.deb + - sed -i "s/^#sslmitm.*$/sslmitm\ =\ on/" /etc/e2guardian/e2guardianf1.conf && sed -i "s/^#enablessl.*$/enablessl\ =\ on/" /etc/e2guardian/e2guardian.conf && sed -i "s/^RANDFILE\s*=\s*\\\$ENV/#RANDFILE\ =\ \$ENV/" /etc/ssl/openssl.cnf + - mkdir -p ${CERT_DIR}generatedcerts + - openssl genrsa 4096 > "${CERT_DIR}ca.key" && openssl req -subj "/C=US" -new -x509 -days 3650 -key "${CERT_DIR}ca.key" -out "${CERT_DIR}ca.pem" && openssl genrsa 4096 > "${CERT_DIR}cert.key" + - chown --recursive e2guardian:e2guardian ${CERT_DIR} + - echo "qwant.com" >> /etc/e2guardian/lists/example.group/bannedsitelist + - e2guardian -N & + - sleep 5 && export https_proxy=http://localhost:8080 + - curl -k -o /tmp/test https://www.google.com + - curl -k https://www.qwant.com | grep -i e2guardian + - unset https_proxy + - mkdir -p "${CI_COMMIT_BRANCH}" + - mv e2"$OS"_package.deb ${CI_COMMIT_BRANCH}/e2"$OS"_"$VERSION"_V"$VFULL"_$(date +%Y%m%d).deb + - md5sum ${CI_COMMIT_BRANCH}/e2"$OS"_"$VERSION"_V"$VFULL"_$(date +%Y%m%d).deb > ${CI_COMMIT_BRANCH}/e2"$OS"_"$VERSION"_V"$VFULL"_$(date +%Y%m%d)_md5.txt + - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' + - mkdir -p ~/.ssh + - eval $(ssh-agent -s) + - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' + - ssh-add <(echo "$SSH_NOSTROMO_KEY") + - scp -P 822 -r ${CI_COMMIT_BRANCH} e2git@e2guardian.numsys.eu:/datas/e2/html + - find $CI_PROJECT_DIR -name ".git" -exec rm -r "{}" + diff --git a/gitlabci/docker-ci/Dockerfile b/gitlabci/docker-ci/Dockerfile new file mode 100644 index 0000000..e1a53e3 --- /dev/null +++ b/gitlabci/docker-ci/Dockerfile @@ -0,0 +1,26 @@ +FROM debian:buster + +LABEL commit.e2guardian=$COMMIT build_date.e2guardian=$BUILD_DATE +COPY . /tmp/e2guardian +RUN cd /tmp/e2guardian \ + && apt-get update && apt-get install --no-install-recommends --no-install-suggests -y sed libevent-pthreads-* libssl1.1 ca-certificates \ + && adduser --no-create-home --uid 1161 --group --system e2guardian \ + && cp src/e2guardian /usr/sbin/e2guardian \ + && chmod +x /usr/sbin/e2guardian \ + && cp -Rf configs /etc/e2guardian \ + && mkdir -p /usr/share/e2guardian/languages \ + && mkdir -p /run/e2guardian \ + && mkdir -p /var/log/e2guardian && chown -R e2guardian /var/log/e2guardian && chown -R e2guardian /etc/e2guardian && chown -R e2guardian /run/e2guardian \ + && cp -Rf data/languages /usr/share/e2guardian/ \ + && cp data/*.gif /usr/share/e2guardian/ \ + && cp data/*swf /usr/share/e2guardian/ \ + && sed -i "s/^#dockermode.*$/dockermode\ =\ on/" /etc/e2guardian/e2guardian.conf \ + && sed -i "s/^#pidfilename.*$/pidfilename\ =\ \/run\/e2guardian\/e2.pid/" /etc/e2guardian/e2guardian.conf \ + && sed -i "s/^#icapport.*$/icapport\ =\ 1344/" /etc/e2guardian/e2guardian.conf \ + && apt-get autoremove -y \ + && rm -rf /var/lib/apt/lists/* && rm -Rf /tmp/* + +HEALTHCHECK CMD curl localhost:8080 || exit 1 +USER e2guardian +EXPOSE 8080 +CMD ["e2guardian", "-N"] diff --git a/gitlabci/docker-hub.yml b/gitlabci/docker-hub.yml new file mode 100644 index 0000000..7d6a0bc --- /dev/null +++ b/gitlabci/docker-hub.yml @@ -0,0 +1,41 @@ +docker-hub-build: + stage: Docker-hub-build + image: docker:dind + before_script: + - docker login -u "$DOCKER_HUB_USER" -p "$DOCKER_HUB_TOKEN" $DOCKER_HUB_REGISTRY + script: + - cd $CI_PROJECT_DIR + - SQUID_VERSION=`curl -s http://www.squid-cache.org/Versions/v4/ | egrep -m 1 -oh squid-.*.tar.gz | cut -d '"' -f1` + - docker build --build-arg SQUID_VERSION="$CI_COMMIT_BRANCH" --pull -t $CONTAINER_BUILD_NOPROD_NAME . + - docker push $CONTAINER_BUILD_NOPROD_NAME + +variables: + CONTAINER_PROD_IMAGE: $HUB_REGISTRY_IMAGE:$CI_COMMIT_BRANCH + CONTAINER_CLIENT_IMAGE: debian:buster + CONTAINER_TEST_NAME: squid + CONTAINER_BUILD_NOPROD_NAME: $HUB_REGISTRY_IMAGE:build-noprod + +.services: + services: + - name: $CONTAINER_BUILD_NOPROD_NAME + alias: squid + image: $CONTAINER_CLIENT_IMAGE + +docker-hub-test: + stage: Docker-hub-test + extends: .services + script: + - apt update && apt install -y curl + - export https_proxy=http://$CONTAINER_TEST_NAME:3128 && curl -k https://www.google.fr + variables: + HOSTNAME: squidpipeline + +push-docker-hub: + stage: Docker-hub-pushtag + image: docker:dind + before_script: + - docker login -u "$DOCKER_HUB_USER" -p "$DOCKER_HUB_TOKEN" $DOCKER_HUB_REGISTRY + script: + - docker pull $CONTAINER_BUILD_NOPROD_NAME + - docker tag $CONTAINER_BUILD_NOPROD_NAME $CONTAINER_PROD_IMAGE + - docker push $CONTAINER_PROD_IMAGE diff --git a/gitlabci/raspbianbuster.yml b/gitlabci/raspbianbuster.yml new file mode 100644 index 0000000..195762a --- /dev/null +++ b/gitlabci/raspbianbuster.yml @@ -0,0 +1,67 @@ +build:raspbian: + stage: build + image: amd64/debian:stable + artifacts: + expire_in: 30 minutes + paths: + - $CI_PROJECT_DIR + variables: + OS: "raspbian" + script: + - source $CI_PROJECT_DIR/scripts/debian_package/variables + - echo $VFULL + - apt update + - apt-get -y upgrade + - apt install --no-install-recommends --no-install-suggests -y curl unzip base-files automake base-passwd pkg-config bash coreutils debianutils diffutils dpkg e2fsprogs findutils grep gzip hostname ncurses-base tar git bsdutils lsb-release + - echo "deb-src http://deb.debian.org/debian buster main contrib non-free" >> /etc/apt/sources.list + - dpkg --add-architecture armhf + - apt-get update + - apt-get install -y build-essential crossbuild-essential-armhf + - apt-get build-dep -y -a armhf e2guardian + - cd $CI_PROJECT_DIR && make clean + - ./autogen.sh + - ./configure --host=arm-linux-gnueabihf --prefix=/usr --enable-clamd=yes --with-proxyuser=e2guardian --with-proxygroup=e2guardian --sysconfdir=/etc --localstatedir=/var --enable-icap=yes --enable-commandline=yes --enable-email=yes --enable-ntlm=yes --enable-pcre=yes --enable-sslmitm=yes + - make ARCH=arm-linux-gnueabihf + - file src/e2guardian | grep "ARM, EABI5" + - find $CI_PROJECT_DIR -name ".git" -exec rm -r "{}" + + +package:raspbian: + stage: create-package + image: amd64/debian:stable + dependencies: + - build:raspbian + artifacts: + paths: + - $CI_PROJECT_DIR + variables: + PACKPATH: "$CI_PROJECT_DIR" + PACKDST: "$CI_PROJECT_DIR/scripts/debian_package/e2raspbian_package" + OS: "raspbian" + script: + - source $CI_PROJECT_DIR/scripts/debian_package/variables + - apt update + - apt install -y curl git lsb-release binutils + - echo $VFULL + - VERSION=`lsb_release -cs` + - SIZE=`stat -c %s ${PACKDST}/data` && echo $SIZE && sed -i "s/Installed-Size:.*$/Installed-Size:\ $SIZE/g" ${PACKDST}/control/control + - sed -i "s/Version:.*$/Version:\ $VFULL/g" ${PACKDST}/control/control + - cp ${PACKPATH}/src/e2guardian ${PACKDST}/data/usr/sbin/e2guardian + - chmod +x ${PACKDST}/data/usr/sbin/e2guardian + - cp -Rf ${PACKPATH}/configs ${PACKDST}/data/etc/e2guardian + - mkdir -p ${PACKPATH}/share/e2guardian/languages + - cp -Rf ${PACKPATH}/data/languages ${PACKDST}/data/usr/share/e2guardian/ + - cp ${PACKPATH}/data/*.gif ${PACKDST}/data/usr/share/e2guardian/ + - cp ${PACKPATH}/data/*swf ${PACKDST}/data/usr/share/e2guardian/ + - cp ${PACKPATH}/data/scripts/e2guardian.service ${PACKDST}/data/lib/systemd/system + - find ${PACKDST}/ -type f -name "Makefil*" -delete + - find ${PACKDST}/ -type f -name "*.in" -delete + - cd ${PACKDST} && cd .. && ./rebuild.sh e2"$OS"_package + - mv e2"$OS"_package.deb ${CI_COMMIT_BRANCH}/e2"$OS"_"$VERSION"_V"$VFULL"_$(date +%Y%m%d).deb + - md5sum ${CI_COMMIT_BRANCH}/e2"$OS"_"$VERSION"_V"$VFULL"_$(date +%Y%m%d).deb > ${CI_COMMIT_BRANCH}/e2"$OS"_"$VERSION"_V"$VFULL"_$(date +%Y%m%d)_md5.txt + - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' + - mkdir -p ~/.ssh + - eval $(ssh-agent -s) + - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' + - ssh-add <(echo "$SSH_NOSTROMO_KEY") + - scp -P 822 -r ${CI_COMMIT_BRANCH} e2git@e2guardian.numsys.eu:/datas/e2/html + - find $CI_PROJECT_DIR -name ".git" -exec rm -r "{}" + diff --git a/gitlabci/ubuntubionic.yml b/gitlabci/ubuntubionic.yml new file mode 100644 index 0000000..199434d --- /dev/null +++ b/gitlabci/ubuntubionic.yml @@ -0,0 +1,94 @@ +build:bionic: + stage: build + image: amd64/ubuntu:18.04 + artifacts: + expire_in: 30 minutes + paths: + - $CI_PROJECT_DIR + script: + - source $CI_PROJECT_DIR/scripts/debian_package/variables + - echo $VFULL + - apt update + - apt-get -y upgrade + - apt install --no-install-recommends --no-install-suggests -y curl unzip base-files automake base-passwd + bash coreutils dash debianutils diffutils dpkg e2fsprogs findutils grep gzip hostname ncurses-base + libevent-pthreads-* libevent-dev ncurses-bin perl-base sed login sysvinit-utils tar bsdutils + mount util-linux libc6-dev libc-dev gcc g++ make dpkg-dev autotools-dev debhelper dh-autoreconf dpatch + libclamav-dev libpcre3-dev zlib1g-dev pkg-config libssl-dev libssl1.1 git ca-certificates lsb-release + - cd $CI_PROJECT_DIR && make clean && ./autogen.sh && ./configure '--prefix=/usr' '--enable-clamd=yes' '--with-proxyuser=e2guardian' '--with-proxygroup=e2guardian' '--sysconfdir=/etc' '--localstatedir=/var' '--enable-icap=yes' '--enable-commandline=yes' '--enable-email=yes' '--enable-ntlm=yes' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--enable-pcre=yes' '--enable-sslmitm=yes' 'CPPFLAGS=-mno-sse2 -g -O2' + - make + - find $CI_PROJECT_DIR -name ".git" -exec rm -r "{}" + + +package:bionic: + stage: create-package + image: amd64/ubuntu:18.04 + dependencies: + - build:bionic + artifacts: + paths: + - $CI_PROJECT_DIR + variables: + PACKPATH: "$CI_PROJECT_DIR" + PACKDST: "$CI_PROJECT_DIR/scripts/debian_package/e2ubuntu_package" + OS: "ubuntu" + script: + - source $CI_PROJECT_DIR/scripts/debian_package/variables + - echo $VFULL + - apt update && apt install --no-install-recommends --no-install-suggests -y curl git ca-certificates util-linux binutils + - SIZE=`stat -c %s ${PACKDST}/data` && echo $SIZE && sed -i "s/Installed-Size:.*$/Installed-Size:\ $SIZE/g" ${PACKDST}/control/control + - cp ${PACKPATH}/src/e2guardian ${PACKDST}/data/usr/sbin/e2guardian + - chmod +x ${PACKDST}/data/usr/sbin/e2guardian + - cp -Rf ${PACKPATH}/configs ${PACKDST}/data/etc/e2guardian + - mkdir -p ${PACKPATH}/share/e2guardian/languages + - cp -Rf ${PACKPATH}/data/languages ${PACKDST}/data/usr/share/e2guardian/ + - cp ${PACKPATH}/data/*.gif ${PACKDST}/data/usr/share/e2guardian/ + - cp ${PACKPATH}/data/*swf ${PACKDST}/data/usr/share/e2guardian/ + - cp ${PACKPATH}/data/scripts/e2guardian.service ${PACKDST}/data/lib/systemd/system + - find ${PACKDST}/ -type f -name "Makefil*" -delete + - find ${PACKDST}/ -type f -name "*.in" -delete + - sed -i "s/Version:.*$/Version:\ $VFULL/g" ${PACKDST}/control/control + - cd ${PACKDST} && cd .. && ./rebuild.sh e2"$OS"_package + - rm -rf .git + - find $CI_PROJECT_DIR -name ".git" -exec rm -r "{}" + + +test:bionic: + stage: test-publish + image: amd64/ubuntu:18.04 + dependencies: + - package:bionic + artifacts: + paths: + - $CI_PROJECT_DIR + variables: + PACKPATH: "$CI_PROJECT_DIR" + PACKDST: "$CI_PROJECT_DIR/scripts/debian_package/e2ubuntu_package" + CERT_DIR: "/etc/e2guardian/private/" + OS: "ubuntu" + script: + - source $CI_PROJECT_DIR/scripts/debian_package/variables + - echo $VFULL + - apt update + - apt install -y curl openssl git lsb-release libevent-pthreads* libtommath* + - VERSION=`lsb_release -cs` + - cd ${PACKDST} && cd .. && dpkg -i e2"$OS"_package.deb + - sed -i "s/^#sslmitm.*$/sslmitm\ =\ on/" /etc/e2guardian/e2guardianf1.conf && sed -i "s/^#enablessl.*$/enablessl\ =\ on/" /etc/e2guardian/e2guardian.conf && sed -i "s/^RANDFILE\s*=\s*\\\$ENV/#RANDFILE\ =\ \$ENV/" /etc/ssl/openssl.cnf + - mkdir -p ${CERT_DIR}generatedcerts + - openssl genrsa 4096 > "${CERT_DIR}ca.key" && openssl req -subj "/C=US" -new -x509 -days 3650 -key "${CERT_DIR}ca.key" -out "${CERT_DIR}ca.pem" && openssl genrsa 4096 > "${CERT_DIR}cert.key" + - chown --recursive e2guardian:e2guardian ${CERT_DIR} + - echo "qwant.com" >> /etc/e2guardian/lists/example.group/bannedsitelist + - e2guardian -N & + - sleep 5 && export https_proxy=http://localhost:8080 + - curl -k -o /tmp/test https://www.google.com + - curl -k https://www.qwant.com | grep -i e2guardian + - unset https_proxy + - mkdir -p "${CI_COMMIT_BRANCH}" + - mv e2"$OS"_package.deb ${CI_COMMIT_BRANCH}/e2"$OS"_"$VERSION"_V"$VFULL"_$(date +%Y%m%d).deb + - md5sum ${CI_COMMIT_BRANCH}/e2"$OS"_"$VERSION"_V"$VFULL"_$(date +%Y%m%d).deb > ${CI_COMMIT_BRANCH}/e2"$OS"_"$VERSION"_V"$VFULL"_$(date +%Y%m%d)_md5.txt + - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' + - mkdir -p ~/.ssh + - eval $(ssh-agent -s) + - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' + - ssh-add <(echo "$SSH_NOSTROMO_KEY") + - scp -P 822 -r ${CI_COMMIT_BRANCH} e2git@e2guardian.numsys.eu:/datas/e2/html + - find $CI_PROJECT_DIR -name ".git" -exec rm -r "{}" + + diff --git a/gitlabci/ubuntufocal.yml b/gitlabci/ubuntufocal.yml new file mode 100644 index 0000000..3fd3c42 --- /dev/null +++ b/gitlabci/ubuntufocal.yml @@ -0,0 +1,94 @@ +build:focal: + stage: build + image: amd64/ubuntu:20.04 + artifacts: + expire_in: 30 minutes + paths: + - $CI_PROJECT_DIR + script: + - source $CI_PROJECT_DIR/scripts/debian_package/variables + - echo $VFULL + - apt update + - apt-get -y upgrade + - export DEBIAN_FRONTEND="noninteractive" && apt install --no-install-recommends --no-install-suggests -y curl unzip base-files automake base-passwd + bash coreutils dash debianutils diffutils dpkg e2fsprogs findutils grep gzip hostname ncurses-base + libevent-pthreads-2.1-7 libevent-dev ncurses-bin perl-base sed login sysvinit-utils tar bsdutils + mount util-linux libc6-dev libc-dev gcc g++ make dpkg-dev autotools-dev debhelper dh-autoreconf dpatch + libclamav-dev libpcre3-dev zlib1g-dev pkg-config libssl-dev libssl1.1 git ca-certificates lsb-release + - cd $CI_PROJECT_DIR && make clean && ./autogen.sh && ./configure '--prefix=/usr' '--enable-clamd=yes' '--with-proxyuser=e2guardian' '--with-proxygroup=e2guardian' '--sysconfdir=/etc' '--localstatedir=/var' '--enable-icap=yes' '--enable-commandline=yes' '--enable-email=yes' '--enable-ntlm=yes' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--enable-pcre=yes' '--enable-sslmitm=yes' 'CPPFLAGS=-mno-sse2 -g -O2' + - make + - find $CI_PROJECT_DIR -name ".git" -exec rm -r "{}" + + +package:focal: + stage: create-package + image: amd64/ubuntu:20.04 + dependencies: + - build:focal + artifacts: + paths: + - $CI_PROJECT_DIR + variables: + PACKPATH: "$CI_PROJECT_DIR" + PACKDST: "$CI_PROJECT_DIR/scripts/debian_package/e2ubuntu_package" + OS: "ubuntu" + script: + - source $CI_PROJECT_DIR/scripts/debian_package/variables + - echo $VFULL + - apt update && apt install --no-install-recommends --no-install-suggests -y curl git ca-certificates util-linux binutils + - SIZE=`stat -c %s ${PACKDST}/data` && echo $SIZE && sed -i "s/Installed-Size:.*$/Installed-Size:\ $SIZE/g" ${PACKDST}/control/control + - sed -i "s/libevent-pthreads-2.1-6/libevent-pthreads-2.1-7/g" ${PACKDST}/control/control + - cp ${PACKPATH}/src/e2guardian ${PACKDST}/data/usr/sbin/e2guardian + - chmod +x ${PACKDST}/data/usr/sbin/e2guardian + - cp -Rf ${PACKPATH}/configs ${PACKDST}/data/etc/e2guardian + - mkdir -p ${PACKPATH}/share/e2guardian/languages + - cp -Rf ${PACKPATH}/data/languages ${PACKDST}/data/usr/share/e2guardian/ + - cp ${PACKPATH}/data/*.gif ${PACKDST}/data/usr/share/e2guardian/ + - cp ${PACKPATH}/data/*swf ${PACKDST}/data/usr/share/e2guardian/ + - cp ${PACKPATH}/data/scripts/e2guardian.service ${PACKDST}/data/lib/systemd/system + - find ${PACKDST}/ -type f -name "Makefil*" -delete + - find ${PACKDST}/ -type f -name "*.in" -delete + - sed -i "s/Version:.*$/Version:\ $VFULL/g" ${PACKDST}/control/control + - cd ${PACKDST} && cd .. && ./rebuild.sh e2"$OS"_package + - rm -rf .git + - find /builds/ -name ".git" -exec rm -r "{}" + + +test:focal: + stage: test-publish + image: amd64/ubuntu:20.04 + dependencies: + - package:focal + artifacts: + paths: + - $CI_PROJECT_DIR + variables: + PACKPATH: "$CI_PROJECT_DIR" + PACKDST: "$CI_PROJECT_DIR/scripts/debian_package/e2ubuntu_package" + CERT_DIR: "/etc/e2guardian/private/" + OS: "ubuntu" + script: + - source $CI_PROJECT_DIR/scripts/debian_package/variables + - echo $VFULL + - apt update + - apt install -y curl openssl git lsb-release libevent-pthreads-2.1-7 libtommath1 + - VERSION=`lsb_release -cs` + - cd ${PACKDST} && cd .. && dpkg -i e2"$OS"_package.deb + - sed -i "s/^#sslmitm.*$/sslmitm\ =\ on/" /etc/e2guardian/e2guardianf1.conf && sed -i "s/^#enablessl.*$/enablessl\ =\ on/" /etc/e2guardian/e2guardian.conf && sed -i "s/^RANDFILE\s*=\s*\\\$ENV/#RANDFILE\ =\ \$ENV/" /etc/ssl/openssl.cnf + - mkdir -p ${CERT_DIR}generatedcerts + - openssl genrsa 4096 > "${CERT_DIR}ca.key" && openssl req -subj "/C=US" -new -x509 -days 3650 -key "${CERT_DIR}ca.key" -out "${CERT_DIR}ca.pem" && openssl genrsa 4096 > "${CERT_DIR}cert.key" + - chown --recursive e2guardian:e2guardian ${CERT_DIR} + - echo "qwant.com" >> /etc/e2guardian/lists/example.group/bannedsitelist + - e2guardian -N & + - sleep 5 && export https_proxy=http://localhost:8080 + - curl -k -o /tmp/test https://www.google.com + - curl -k https://www.qwant.com | grep -i e2guardian + - unset https_proxy + - mkdir -p "${CI_COMMIT_BRANCH}" + - mv e2"$OS"_package.deb ${CI_COMMIT_BRANCH}/e2"$OS"_"$VERSION"_V"$VFULL"_$(date +%Y%m%d).deb + - md5sum ${CI_COMMIT_BRANCH}/e2"$OS"_"$VERSION"_V"$VFULL"_$(date +%Y%m%d).deb > ${CI_COMMIT_BRANCH}/e2"$OS"_"$VERSION"_V"$VFULL"_$(date +%Y%m%d)_md5.txt + - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' + - mkdir -p ~/.ssh + - eval $(ssh-agent -s) + - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' + - ssh-add <(echo "$SSH_NOSTROMO_KEY") + - scp -P 822 -r ${CI_COMMIT_BRANCH} e2git@e2guardian.numsys.eu:/datas/e2/html + - find $CI_PROJECT_DIR -name ".git" -exec rm -r "{}" +