1
0
mirror of https://github.com/pavel-odintsov/fastnetmon synced 2024-11-15 13:34:32 +01:00
fastnetmon-rewritten/.circleci/config.yml

309 lines
14 KiB
YAML
Raw Normal View History

2022-05-03 14:24:28 +02:00
version: 2.1
parameters:
fastnetmon_build_version:
type: string
2022-10-17 19:45:20 +02:00
default: "1.2.4"
2022-06-17 14:24:11 +02:00
orbs:
win: circleci/windows@4.1
jobs:
2022-06-17 14:18:30 +02:00
build_windows2019:
2022-06-17 14:24:11 +02:00
executor: win/server-2019
steps:
- run: 'Write-Host "Hello from FastNetMon"'
build_windows2022:
executor: win/server-2022
2022-06-17 14:11:39 +02:00
steps:
2022-06-17 14:24:11 +02:00
- run: 'Write-Host "Hello from FastNetMon"'
2022-06-11 16:49:50 +02:00
build_macos:
macos:
xcode: 13.2.1
2022-06-11 16:49:50 +02:00
steps:
- checkout
- run: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- run: cp src/packaging/homebrew/fastnetmon.rb /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/fastnetmon.rb
- run: brew install --build-from-source --HEAD --verbose --debug fastnetmon
build_debian_upstream_package:
machine:
2023-01-15 21:25:26 +01:00
image: ubuntu-2204:current
resource_class: large
parameters:
debian_codename:
type: string
steps:
- run:
name: Create folder to share data between host and Docker container with relaxed permissions to allow use of save / restore cache logic
command: sudo mkdir /data; sudo chmod 777 /data
- run:
name: Docker with priviledged mode to run chroot inside and we use tail -f to keep container running
command: sudo docker run -d -v /sys/fs/cgroup/:/sys/fs/cgroup:ro -v /data:/data:rw --privileged --cap-add SYS_ADMIN --name linux_priviledged_container debian:bullseye tail -f /dev/null
- run: sudo docker exec -it linux_priviledged_container apt-get update; true
2022-04-29 22:57:34 +02:00
- run: sudo docker exec -it linux_priviledged_container apt install -y dpkg-dev git pbuilder
- run: sudo docker exec -it linux_priviledged_container git clone https://github.com/pavel-odintsov/fastnetmon
- run: sudo docker exec -it linux_priviledged_container git clone https://salsa.debian.org/debian/fastnetmon.git fastnetmon-debian-salsa
2022-11-30 20:18:16 +01:00
- run: sudo docker exec -it linux_priviledged_container rm fastnetmon-debian-salsa/debian/patches/series
- run: sudo docker exec -it linux_priviledged_container tar -czf fastnetmon_$(sudo docker exec -it linux_priviledged_container head -n 1 fastnetmon-debian-salsa/debian/changelog|awk '{print $2}'|sed 's/[()]//g' | sed -E 's/(\-[0-9]+)?$//').orig.tar.gz fastnetmon
- run: sudo docker exec -it linux_priviledged_container ls -la
- run: sudo docker exec -it linux_priviledged_container bash -c "cd fastnetmon && rm -rf debian && cp -a ../fastnetmon-debian-salsa/debian/ . && dpkg-buildpackage -S -sa -d"
- run:
name: List produced source files
command: sudo docker exec -it linux_priviledged_container ls -la
- run:
name: Show content of data folder and permissions for it
command: ls -la /data
- run:
name: Check that we have anything in data folder on VM
command: ls -la /data
- run:
name: "Run pbuilder run Docker if we have no image in place"
command: "sudo docker exec -it linux_priviledged_container pbuilder --create --basetgz /data/debian_base.tgz --distribution << parameters.debian_codename >>"
- run: ls -la /data
- run: sudo docker exec -it linux_priviledged_container pbuilder --build --basetgz /data/debian_base.tgz --debbuildopts "-sa" /fastnetmon_$(sudo docker exec -it linux_priviledged_container head -n 1 fastnetmon-debian-salsa/debian/changelog|awk '{print $2}'|sed 's/[()]//g').dsc
2022-06-18 14:58:37 +02:00
build_docker_x86_64:
machine:
2023-01-15 21:25:26 +01:00
image: ubuntu-2204:current
steps:
- checkout
2023-01-12 20:01:19 +01:00
- run: docker build -t ghcr.io/pavel-odintsov/fastnetmon-community:1.2.3 -t ghcr.io/pavel-odintsov/fastnetmon-community:latest - < src/Dockerfile
- run: sudo docker images
2022-04-22 00:45:14 +02:00
- run: echo $CR_PAT | sudo docker login ghcr.io -u pavel-odintsov --password-stdin
2023-01-12 20:01:19 +01:00
- run: sudo docker push ghcr.io/pavel-odintsov/fastnetmon-community:1.2.3
- run: sudo docker push ghcr.io/pavel-odintsov/fastnetmon-community:latest
build_gce:
machine:
# We use this image because it uses GCE instead of AWS for testing
# https://circleci.com/blog/building-android-on-circleci/
# You can find latest tag here: https://circleci.com/developer/images/image/cimg/android#image-tags
image: android:2022.09.1
2023-01-15 20:07:52 +01:00
resource_class: large
steps:
- checkout
2022-06-18 14:58:37 +02:00
build_docker_arm64:
machine:
2023-01-15 21:25:26 +01:00
image: ubuntu-2204:current
resource_class: arm.large
2022-06-18 14:58:37 +02:00
steps:
- checkout
- run: docker build --build-arg installer_file_name=installer_arm64 -t ghcr.io/pavel-odintsov/fastnetmon-community:1.2.3 -t ghcr.io/pavel-odintsov/fastnetmon-community:latest - < src/Dockerfile
2022-06-18 14:58:37 +02:00
- run: sudo docker images
build_fedora_upstream:
parameters:
docker_image:
type: string
docker:
- image: << parameters.docker_image >>
resource_class: large
steps:
- checkout
- run: dnf install -y rpm-build rpmdevtools dnf-plugins-core
- run: mkdir -p ~/rpmbuild/SPECS
2022-05-28 19:10:59 +02:00
- run: cp src/packaging/fedora/fastnetmon.spec ~/rpmbuild/SPECS
- run:
name: Install build dependencies
command: dnf builddep -y ~/rpmbuild/SPECS/fastnetmon.spec
- run:
name: Download source
command: cd ~/rpmbuild && spectool -g -R SPECS/fastnetmon.spec
- run:
name: Added sysusers file to SOURCES
command: cp src/packaging/fedora/fastnetmon.sysusers ~/rpmbuild/SOURCES
2022-05-28 19:52:56 +02:00
- run:
name: Build source RPM
command: cd ~/rpmbuild/SPECS && rpmbuild -bs fastnetmon.spec
- store_artifacts:
path: /root/rpmbuild/SRPMS
- run:
name: Build RPM
command: cd ~/rpmbuild/SPECS && rpmbuild -bb fastnetmon.spec
- store_artifacts:
path: /root/rpmbuild/RPMS/x86_64
build_epel9_upstream:
docker:
- image: almalinux:9
2023-01-14 22:29:05 +01:00
resource_class: large
steps:
- checkout
- run: dnf install -y rpm-build rpmdevtools dnf-plugins-core
- run: dnf install -y dnf-plugins-core
- run: dnf config-manager --set-enabled crb
2022-06-10 20:30:45 +02:00
- run: dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
- run: mkdir -p ~/rpmbuild/SPECS
# It's copy of Fedora SPEC file with capnproto disabled because we have no package for it in EPEL: https://src.fedoraproject.org/rpms/capnproto
- run: cp src/packaging/epel/fastnetmon.spec ~/rpmbuild/SPECS
- run:
name: Install build dependencies
command: dnf builddep -y ~/rpmbuild/SPECS/fastnetmon.spec
- run:
name: Download source
command: cd ~/rpmbuild && spectool -g -R SPECS/fastnetmon.spec
- run:
name: Added sysusers file to SOURCES
command: cp src/packaging/fedora/fastnetmon.sysusers ~/rpmbuild/SOURCES
- run:
name: Build source RPM
command: cd ~/rpmbuild/SPECS && rpmbuild -bs fastnetmon.spec
- store_artifacts:
path: /root/rpmbuild/SRPMS
- run:
name: Build RPM
command: cd ~/rpmbuild/SPECS && rpmbuild -bb fastnetmon.spec
- store_artifacts:
path: /root/rpmbuild/RPMS/x86_64
2022-04-21 21:02:40 +02:00
build_debian:
2022-04-21 21:06:12 +02:00
parameters:
2022-04-21 21:02:40 +02:00
docker_image:
type: string
distro_version:
2022-04-21 21:02:40 +02:00
type: string
distro_name:
2022-11-30 21:15:19 +01:00
type: string
docker:
2022-04-21 21:02:40 +02:00
- image: << parameters.docker_image >>
resource_class: large
steps:
- checkout
- run: apt-get update; true
2022-12-02 20:20:54 +01:00
- run: apt-get install -y perl wget python3-pip
- run: pip3 install s3cmd
- run:
name: install_gcc
no_output_timeout: 120m
command: perl src/scripts/install_fastnetmon_dependencies.pl gcc_12_1_0
- run:
name: install_dependencies
no_output_timeout: 180m
command: perl src/scripts/install_fastnetmon_dependencies.pl
- run:
name: collect_debug
command: cat /tmp/fastnetmon_install.log
when: on_fail
- run: perl src/scripts/fastnetmon_build.pl
- run: perl src/scripts/build_libary_bundle.pl /opt/fastnetmon_libraries_bundle.tar.gz
- store_artifacts:
path: /tmp/fastnetmon_install.log
- run: src/scripts/build_any_package.pl deb /opt/fastnetmon_libraries_bundle.tar.gz << pipeline.parameters.fastnetmon_build_version >> << parameters.distro_name >> << parameters.distro_version >>
- run: s3cmd --disable-multipart --host=storage.googleapis.com --host-bucket="%(bucket).storage.googleapis.com" put /tmp/fastnetmon_<< pipeline.parameters.fastnetmon_build_version >>_amd64.deb s3://fastnetmon_community_packages/<< pipeline.parameters.fastnetmon_build_version >>/<< parameters.distro_name >>/<< parameters.distro_version >>/fastnetmon_<< pipeline.parameters.fastnetmon_build_version >>_amd64.deb
- run: cp src/fastnetmon.conf /etc/fastnetmon.conf
- run: ldd /opt/fastnetmon-community/app/bin/fastnetmon
- run: ldd /opt/fastnetmon-community/app/bin/fastnetmon_client
- run: ldd /opt/fastnetmon-community/app/bin/fastnetmon_api_client
- run: /opt/fastnetmon-community/app/bin/fastnetmon_api_client --help
- run: /opt/fastnetmon-community/app/bin/fastnetmon_client --help
2022-06-03 13:17:13 +02:00
- run: /opt/fastnetmon-community/app/bin/fastnetmon --configuration_check
2022-04-21 21:36:09 +02:00
build_centos:
parameters:
docker_image:
type: string
centos_version:
type: string
machine:
image: ubuntu-2204:current
resource_class: large
steps:
- run: sudo docker run --name linux_docker -d -t << parameters.docker_image >>
- run: sudo docker exec linux_docker yum install -y perl wget python3-pip perl-Archive-Tar git
- run: sudo docker exec linux_docker git clone https://github.com/pavel-odintsov/fastnetmon.git
2023-01-15 21:35:43 +01:00
- run: sudo docker exec linux_docker pip3 install s3cmd
- run:
name: install_gcc
no_output_timeout: 120m
command: sudo -E docker exec --env AWS_ACCESS_KEY_ID --env AWS_SECRET_ACCESS_KEY linux_docker perl src/scripts/install_fastnetmon_dependencies.pl gcc_12_1_0
- run:
name: install_dependencies
2022-12-02 20:20:54 +01:00
no_output_timeout: 180m
command: sudo -E docker exec --env AWS_ACCESS_KEY_ID --env AWS_SECRET_ACCESS_KEY linux_docker perl src/scripts/install_fastnetmon_dependencies.pl
- run:
name: collect_debug
command: sudo docker exec linux_docker cat /tmp/fastnetmon_install.log
when: on_fail
2023-01-15 21:39:49 +01:00
- run: sudo docker exec linux_docker perl fastnetmon/src/scripts/fastnetmon_build.pl
- run: sudo docker exec linux_docker perl fastnetmon/src/scripts/build_libary_bundle.pl /opt/fastnetmon_libraries_bundle.tar.gz
- run: sudo docker exec linux_docker fastnetmon/src/scripts/build_any_package.pl rpm /opt/fastnetmon_libraries_bundle.tar.gz << pipeline.parameters.fastnetmon_build_version >> centos << parameters.centos_version >>
- run: sudo -E docker exec --env AWS_ACCESS_KEY_ID --env AWS_SECRET_ACCESS_KEY linux_docker s3cmd --disable-multipart --host=storage.googleapis.com --host-bucket="%(bucket).storage.googleapis.com" put /tmp/result_data/fastnetmon-<< pipeline.parameters.fastnetmon_build_version >>-1.el<< parameters.centos_version >>.x86_64.rpm s3://fastnetmon_community_packages/<< pipeline.parameters.fastnetmon_build_version >>/centos/<< parameters.centos_version >>/fastnetmon-<< pipeline.parameters.fastnetmon_build_version >>-1.el<< parameters.centos_version >>.x86_64.rpm
2023-01-15 21:39:49 +01:00
- run: sudo docker exec linux_docker cp fastnetmon/src/fastnetmon.conf /etc/fastnetmon.conf
- run: sudo docker exec linux_docker ldd /opt/fastnetmon-community/app/bin/fastnetmon
- run: sudo docker exec linux_docker ldd /opt/fastnetmon-community/app/bin/fastnetmon_client
- run: sudo docker exec linux_docker ldd /opt/fastnetmon-community/app/bin/fastnetmon_api_client
- run: sudo docker exec linux_docker /opt/fastnetmon-community/app/bin/fastnetmon_api_client --help
- run: sudo docker exec linux_docker /opt/fastnetmon-community/app/bin/fastnetmon_client --help
- run: sudo docker exec linux_docker /opt/fastnetmon-community/app/bin/fastnetmon --configuration_check
2022-02-09 15:27:32 +01:00
workflows:
version: 2
all_distros:
2022-02-09 15:27:32 +01:00
jobs:
2022-04-21 21:36:58 +02:00
- build_centos:
2022-04-21 21:36:09 +02:00
docker_image: centos:centos7
2022-04-21 21:37:46 +02:00
centos_version: "7"
2022-04-21 21:36:09 +02:00
name: "centos7"
2022-04-21 21:36:58 +02:00
- build_centos:
2022-04-21 21:36:09 +02:00
docker_image: almalinux:8
2022-04-21 21:37:46 +02:00
centos_version: "8"
2022-04-21 21:36:09 +02:00
name: "centos8"
2022-05-15 17:29:22 +02:00
- build_centos:
docker_image: almalinux:9
centos_version: "9"
name: "centos9"
- build_debian:
docker_image: "ubuntu:jammy"
distro_version: "22.04"
name: "ubuntu2204"
distro_name: "ubuntu"
- build_debian:
docker_image: "ubuntu:focal"
distro_version: "20.04"
name: "ubuntu2004"
distro_name: "ubuntu"
- build_debian:
docker_image: "ubuntu:bionic"
distro_version: "18.04"
name: "ubuntu1804"
distro_name: "ubuntu"
- build_debian:
docker_image: "ubuntu:xenial"
distro_version: "16.04"
name: "ubuntu1604"
distro_name: "ubuntu"
2022-04-21 21:02:40 +02:00
- build_debian:
docker_image: "debian:stretch"
2022-12-03 15:05:31 +01:00
distro_version: "9"
2022-04-21 21:02:40 +02:00
name: "debian9"
distro_name: "debian"
- build_debian:
2022-04-21 21:02:40 +02:00
docker_image: "debian:buster"
2022-12-03 15:05:31 +01:00
distro_version: "10"
2022-04-21 21:02:40 +02:00
name: "debian10"
distro_name: "debian"
- build_debian:
2022-04-21 21:02:40 +02:00
docker_image: "debian:bullseye"
2022-12-03 15:05:31 +01:00
distro_version: "11"
2022-04-21 21:02:40 +02:00
name: "debian11"
distro_name: "debian"
- build_debian:
docker_image: "debian:bookworm"
2022-12-03 15:05:31 +01:00
distro_version: "12"
name: "debian12"
distro_name: "debian"
2022-06-18 14:58:37 +02:00
- build_docker_x86_64:
name: "Build Docker image on x86_64 platform"
- build_debian_upstream_package:
2022-05-03 14:15:45 +02:00
name: "Debian Sid Upstream Build"
debian_codename: "sid"
2022-05-21 13:52:14 +02:00
- build_fedora_upstream:
name: "Fedora 36 Upstream RPM"
docker_image: fedora:36
- build_fedora_upstream:
name: "Fedora 37 Upstream RPM"
docker_image: fedora:37
- build_fedora_upstream:
name: "Fedora 38 Upstream RPM"
docker_image: fedora:38
- build_epel9_upstream:
2022-06-10 20:21:00 +02:00
name: "EPEL 9 RPM"
2022-06-11 16:50:30 +02:00
- build_macos:
2022-06-11 16:49:50 +02:00
name: "Build on MacOS"
2022-06-17 14:24:11 +02:00
- build_windows2022:
name: "Build on Windows Server 2022"
2022-06-17 14:18:30 +02:00
- build_windows2019:
name: "Build on Windows Server 2019"