diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index ca636ff..2d58434 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -8,45 +8,27 @@ on: env: BASE_VERSION: "1.1" + DEBEMAIL: "gpg@r2cloud.ru" + DEBFULLNAME: "r2cloud" jobs: build: name: Build and analyze runs-on: ubuntu-latest env: - SONAR_SCANNER_VERSION: 4.7.0.2747 # Find the latest version in the "Linux" link on this page: - # https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/ - SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} # Value stored in a Github secret BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - - name: Set up JDK 11 - uses: actions/setup-java@v1 - with: - java-version: 11 - name: Cache SonarQube packages uses: actions/cache@v1 with: path: ~/.sonar/cache key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar - - name: Download and set up sonar-scanner - env: - SONAR_SCANNER_DOWNLOAD_URL: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${{ env.SONAR_SCANNER_VERSION }}-linux.zip - run: | - mkdir -p $HOME/.sonar - curl -sSLo $HOME/.sonar/sonar-scanner.zip ${{ env.SONAR_SCANNER_DOWNLOAD_URL }} - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - echo "$HOME/.sonar/sonar-scanner-${{ env.SONAR_SCANNER_VERSION }}-linux/bin" >> $GITHUB_PATH - - name: Download and set up build-wrapper - env: - BUILD_WRAPPER_DOWNLOAD_URL: ${{ env.SONAR_HOST_URL }}/static/cpp/build-wrapper-linux-x86.zip - run: | - curl -sSLo $HOME/.sonar/build-wrapper-linux-x86.zip ${{ env.BUILD_WRAPPER_DOWNLOAD_URL }} - unzip -o $HOME/.sonar/build-wrapper-linux-x86.zip -d $HOME/.sonar/ - echo "$HOME/.sonar/build-wrapper-linux-x86" >> $GITHUB_PATH + - name: Install sonar-scanner and build-wrapper + uses: SonarSource/sonarcloud-github-c-cpp@v2 - name: install dependencies run: | sudo apt-get update @@ -77,59 +59,30 @@ jobs: deploy: name: Build, package and deploy needs: build - env: - APT_CLI_VERSION: "apt-cli-1.4" - GPG_KEYNAME: "F2DCBFDCA5A70917" strategy: matrix: - hosts: [[self-hosted, bullseye], [self-hosted, buster], [self-hosted, stretch2], ubuntu-18.04] + hosts: [ubuntu-20.04, ubuntu-22.04] cpu: ["nocpuspecific"] runs-on: ${{ matrix.hosts }} steps: - - name: Set env - run: echo "OS_CODENAME=$(lsb_release --codename --short)" >> $GITHUB_ENV - - uses: actions/checkout@v3 - with: - fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - ref: '${{ env.OS_CODENAME }}' - - name: install dependencies - run: | - sudo apt-get update - sudo apt-get install -y dirmngr lsb-release - sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A5A70917 - sudo bash -c "echo \"deb http://apt.leosatdata.com $(lsb_release --codename --short) main\" > /etc/apt/sources.list.d/r2cloud.list" - sudo bash -c "echo \"deb http://apt.leosatdata.com/cpu-generic $(lsb_release --codename --short) main\" > /etc/apt/sources.list.d/r2cloud-generic.list" - sudo apt-get update - sudo apt-get install -y debhelper git-buildpackage libconfig-dev zlib1g-dev valgrind check cmake pkg-config libvolk2-dev librtlsdr-dev - name: Import GPG key uses: crazy-max/ghaction-import-gpg@v5 with: gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} passphrase: ${{ secrets.PASSPHRASE }} - - name: merge from upstream - run: | - git config user.email "gpg@r2cloud.ru" - git config user.name "r2cloud" - git merge origin/main --no-edit - - name: Set compilation flags - run: bash ./configure_flags.sh ${{ matrix.cpu }} - - name: build debian package - run: | - gbp dch --auto --debian-branch=${{ env.OS_CODENAME }} --upstream-branch=main --new-version=${{ env.BASE_VERSION }}.${{ github.run_number }}-${{ github.run_number }}~${{ env.OS_CODENAME }} --git-author --distribution=unstable --commit - git push origin - rm -f ../${GITHUB_REPOSITORY#*/}*deb - gbp buildpackage --git-ignore-new --git-upstream-tag=${{ env.BASE_VERSION }}.${{ github.run_number }} --git-keyid=${{ env.GPG_KEYNAME }} - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 + uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-1 - - name: Deploy - run: | - cd .. - if [ ! -f ${{ env.APT_CLI_VERSION }}.jar ]; then - wget -O ${{ env.APT_CLI_VERSION }}.jar.temp https://github.com/dernasherbrezon/apt-cli/releases/download/${{ env.APT_CLI_VERSION }}/apt-cli.jar - mv ${{ env.APT_CLI_VERSION }}.jar.temp ${{ env.APT_CLI_VERSION }}.jar - fi - java -jar ${{ env.APT_CLI_VERSION }}.jar --url s3://${{ env.BUCKET }} --component main --codename ${{ env.OS_CODENAME }} --gpg-keyname ${{ env.GPG_KEYNAME }} --gpg-arguments "--pinentry-mode,loopback" save --patterns ./*.deb,./*.ddeb \ No newline at end of file + - name: Set env + run: echo "OS_CODENAME=$(lsb_release --codename --short)" >> $GITHUB_ENV + - uses: actions/checkout@v4 + with: + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + ref: '${{ env.OS_CODENAME }}' + - name: Configure agent + run: bash ./configure_agent.sh + - name: Build and deploy + run: bash ./build_and_deploy.sh ${{ matrix.cpu }} ${{ env.OS_CODENAME }} ${{ env.BASE_VERSION }} ${{ github.run_number }} F2DCBFDCA5A70917 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 2ade118..0000000 --- a/.travis.yml +++ /dev/null @@ -1,24 +0,0 @@ -language: c - -dist: focal - -compiler: - - clang - - gcc - -addons: - sonarcloud: - organization: "dernasherbrezon-github" - token: - secure: "QbtxtHYZAiBk5N6ayrVVCFn5oCZz24sfgNjZMXhLKsvuYa30aZWlnQMdWuKXIRbpBxsO2wqjHkW2xTxlGXpYtAF/Pe47XYT+ItN4M78CwxUIgJLqQmGFR2r0jssxerPb4DWn1+TxaQ5voXXixw4ij35MX/JzYqCTyaIiLFi+gOYtdrdqegiFJk+Jzl+3XhBdfU635MwGO4VrAxC12/cEwxFQy8y13h9BV5NmI6FvUZ0mTtp5/VNT/HXmb0z2YPEvs2GTYkTYbXEztCsgsaYq4pI4F3MoesXQIJK0FFdI3GH9AoJ8r9X09XGd1Nf5pHsfwXoSUt03l4UYq685u86v6HBCarPmQYCZwwk3pcJLCEr1XTL86X8eMHmcYPZsXen3pgiAYk9MCONrKjQe+JQqnXXJgxbE/oRwvaPeh2xSyEgKI7GP0kX44PxZp94B97YplBIkxLnSrjWvIdYZ8lwtFaJoDCbli+V+ybFM/w4HwFTompQzW7idzC9qB6dA8R9XTvSq0hlct1qnM2S3oC/6QimRlRrYHmA5Ul48DYihQLrvLLzbvBLej977fTzXObksSKqsWVeTuUxep0xatyzOSRMuw5mMvJJwNz0mYE947DFswS01o1oQDkj/kVaIeTouoZlI22nUnkefYxe5p6E2fIMgODp+00XAFCz+KFhEcKI=" - -before_install: - - sudo apt-get install -yq --allow-downgrades libc6=2.31-0ubuntu9.2 libc6-dev=2.31-0ubuntu9.2 - - sudo -E apt-get -yq --no-install-suggests --no-install-recommends --allow-downgrades --allow-remove-essential --allow-change-held-packages install libconfig-dev valgrind check cmake pkg-config libvolk2-dev librtlsdr-dev -o Debug::pkgProblemResolver=yes - -script: - - set -e - - if [[ $TRAVIS_COMPILER == 'gcc' ]]; then sh ./build_debug.sh; fi - - mkdir release && cd release - - cmake .. - - make diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..eef7660 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,45 @@ +pipeline { + agent none + parameters { + string(name: 'BASE_VERSION', defaultValue: '1.1', description: 'From https://github.com/dernasherbrezon/sdr-server/actions') + string(name: 'BUILD_NUMBER', defaultValue: '77', description: 'From https://github.com/dernasherbrezon/sdr-server/actions') + } + environment { + GPG = credentials("GPG") + DEBEMAIL = 'gpg@r2cloud.ru' + DEBFULLNAME = 'r2cloud' + } + stages { + stage('Package and deploy') { + matrix { + axes { + axis { + name 'OS_CODENAME' + values 'bullseye', 'stretch', 'buster', 'bookworm' + } + axis { + name 'CPU' + values 'nocpuspecific' + } + } + agent { + label "${OS_CODENAME}" + } + stages { + stage('Checkout') { + steps { + git(url: 'git@github.com:dernasherbrezon/sdr-server.git', branch: "${OS_CODENAME}", credentialsId: '5c8b3e93-0551-475c-9e54-1266242c8ff5', changelog: false) + } + } + stage('build and deploy') { + steps { + sh 'echo $GPG_PSW | /usr/lib/gnupg2/gpg-preset-passphrase -c C4646FB23638AE9010EB1F7F37A0505CF4C5B746' + sh 'echo $GPG_PSW | /usr/lib/gnupg2/gpg-preset-passphrase -c 9B66E29FF6DDAD62FA3F2570E02775B6EFAF6609' + sh "bash ./build_and_deploy.sh ${CPU} ${OS_CODENAME} ${params.BASE_VERSION} ${params.BUILD_NUMBER} ${GPG_USR}" + } + } + } + } + } + } +} diff --git a/README.md b/README.md index 76e37dc..28ceff5 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# About [![Build Status](https://travis-ci.com/dernasherbrezon/sdr-server.svg?branch=main)](https://travis-ci.com/dernasherbrezon/sdr-server) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=dernasherbrezon_sdr-server&metric=alert_status)](https://sonarcloud.io/dashboard?id=dernasherbrezon_sdr-server) +# About [![CMake](https://github.com/dernasherbrezon/sdr-server/actions/workflows/cmake.yml/badge.svg)](https://github.com/dernasherbrezon/sdr-server/actions/workflows/cmake.yml) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=dernasherbrezon_sdr-server&metric=alert_status)](https://sonarcloud.io/dashboard?id=dernasherbrezon_sdr-server) ![design](/docs/dsp.jpg?raw=true) diff --git a/build_and_deploy.sh b/build_and_deploy.sh new file mode 100755 index 0000000..e3beafc --- /dev/null +++ b/build_and_deploy.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +set -e + +CPU=$1 +OS_CODENAME=$2 +BASE_VERSION=$3 +BUILD_NUMBER=$4 +GPG_KEYNAME=$5 +APT_CLI_VERSION="apt-cli-1.8" + +. ./configure_flags.sh ${CPU} + +git config user.email "gpg@r2cloud.ru" +git config user.name "r2cloud" +git merge origin/main --no-edit + +rm -f ../sdr-server_* +rm -f ../sdr-server-* +gbp dch --auto --debian-branch=${OS_CODENAME} --upstream-branch=main --new-version=${BASE_VERSION}.${BUILD_NUMBER}-${BUILD_NUMBER}~${OS_CODENAME} --git-author --distribution=unstable --commit < /dev/null +git push --set-upstream origin ${OS_CODENAME} +gbp buildpackage --git-ignore-new --git-upstream-tag=${BASE_VERSION}.${BUILD_NUMBER} --git-keyid=${GPG_KEYNAME} + +cd .. +java -jar ${HOME}/${APT_CLI_VERSION}.jar --url s3://${BUCKET} --component main --codename ${OS_CODENAME} --gpg-keyname ${GPG_KEYNAME} --gpg-arguments "--pinentry-mode,loopback" save --patterns ./*.deb,./*.ddeb diff --git a/build_debug.sh b/build_debug.sh deleted file mode 100755 index 143e351..0000000 --- a/build_debug.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -set -e - -mkdir debug && cd debug -cmake -DCMAKE_BUILD_TYPE=Debug .. -build-wrapper-linux-x86-64 --out-dir bw-output make all -./run_tests.sh -make coverage -cd .. -sonar-scanner \ No newline at end of file diff --git a/configure_agent.sh b/configure_agent.sh new file mode 100755 index 0000000..d4f9c0a --- /dev/null +++ b/configure_agent.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +set -e + +sudo apt-get update +sudo apt-get install -y dirmngr lsb-release +sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A5A70917 +sudo bash -c "echo \"deb http://r2cloud.s3.amazonaws.com $(lsb_release --codename --short) main\" > /etc/apt/sources.list.d/r2cloud.list" +sudo bash -c "echo \"deb http://r2cloud.s3.amazonaws.com/cpu-generic $(lsb_release --codename --short) main\" > /etc/apt/sources.list.d/r2cloud-generic.list" +sudo apt-get update +sudo apt-get install -y debhelper git-buildpackage cmake libvolk2-dev libprotobuf-c-dev libconfig-dev check libiio-dev + +APT_CLI_VERSION="apt-cli-1.8" +if [ ! -f ${HOME}/${APT_CLI_VERSION}.jar ]; then + wget -O ${APT_CLI_VERSION}.jar.temp https://github.com/dernasherbrezon/apt-cli/releases/download/${APT_CLI_VERSION}/apt-cli.jar + mv ${APT_CLI_VERSION}.jar.temp ${HOME}/${APT_CLI_VERSION}.jar +fi