diff --git a/.github/workflows/develop_master.yml b/.github/workflows/develop.yml similarity index 99% rename from .github/workflows/develop_master.yml rename to .github/workflows/develop.yml index 197f7ad67..270f7a9c1 100644 --- a/.github/workflows/develop_master.yml +++ b/.github/workflows/develop.yml @@ -1,7 +1,7 @@ -name: develop_master +name: develop on: push: - branches: [develop, master] + branches: [develop] jobs: docker-build: strategy: diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml new file mode 100644 index 000000000..2630f267a --- /dev/null +++ b/.github/workflows/master.yml @@ -0,0 +1,134 @@ +name: master +on: + push: + branches: [master] +jobs: + docker-build: + strategy: + matrix: + include: + - ubuntu-codename: bionic + build_lanelet_aware: true + # Currently install_lanelet2_dependencies.sh script only works for bionic. Disabled lanelet_aware build on newer distributions pending script updates. + - ubuntu-codename: focal + build_lanelet_aware: false + # Currently install_lanelet2_dependencies.sh script only works for bionic. Disabled lanelet_aware build on newer distributions pending script updates. + - ubuntu-codename: jammy + build_lanelet_aware: false + runs-on: ubuntu-latest + steps: + - name: Log in to the Container registry + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Docker Build Streets Service Base + uses: docker/build-push-action@v3 + with: + push: true + build-args: | + UBUNTU_CODENAME=${{ matrix.ubuntu-codename }} + tags: usdotfhwastol/streets_service_base:${{ matrix.ubuntu-codename }} + file: ./streets_service_base/Dockerfile + - name: Docker Build Streets Service Base Lanelet Aware + if: ${{ matrix.build_lanelet_aware }} + uses: docker/build-push-action@v3 + with: + push: true + tags: usdotfhwastol/streets_service_base_lanelet_aware:${{ matrix.ubuntu-codename }} + file: ./streets_service_base_lanelet_aware/Dockerfile + build: + needs: docker-build + defaults: + run: + shell: bash + runs-on: ubuntu-latest-8-cores + container: + image: usdotfhwastol/streets_service_base_lanelet_aware:bionic + env: + DEBIAN_FRONTEND: noninteractive + SONAR_SCANNER_VERSION: "5.0.1.3006" + TERM: xterm + options: "--user root" + steps: + # Bionic's git version is not sufficient for actions/checkout 0 fetch-depth, + # remove this step after rebasing carma-streets to newer Ubuntu release + - name: Install newer git for checkout + run: | + apt-get update + apt-get install -y software-properties-common + add-apt-repository -u ppa:git-core/ppa + apt-get install -y git + - name: Checkout ${{ github.event.repository.name }} + uses: actions/checkout@v3.3.0 + with: + path: ${{ github.event.repository.name }} + fetch-depth: 0 + - name: Move source code + run: mv $GITHUB_WORKSPACE/${{ github.event.repository.name }} /home/carma-streets + - name: Install dependencies + run: | + cd /home/carma-streets/build_scripts + ./install_test_dependencies.sh + mkdir -p /home/carma-streets/ext + ./install_rest_server_dependencies.sh + - name: Install net-snmp + run: | + cd /home/carma-streets/ext/ + apt-get install -y libperl-dev curl + curl -k -L -O http://sourceforge.net/projects/net-snmp/files/net-snmp/5.9.1/net-snmp-5.9.1.tar.gz + tar -xvzf /home/carma-streets/ext/net-snmp-5.9.1.tar.gz + cd net-snmp-5.9.1/ + ./configure --with-default-snmp-version="1" --with-sys-contact="@@no.where" --with-sys-location="Unknown" --with-logfile="/var/log/snmpd.log" --with-persistent-directory="/var/net-snmp" + make -j + make install + - name: Set up JDK 17 + uses: actions/setup-java@v3 # The setup-java action provides the functionality for GitHub Actions runners for Downloading and setting up a requested version of Java + with: + java-version: 17 + distribution: "temurin" + - name: Install Sonar + run: | + SONAR_DIR=/opt/sonarqube + mkdir $SONAR_DIR + curl -o $SONAR_DIR/sonar-scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SONAR_SCANNER_VERSION}-linux.zip + curl -o $SONAR_DIR/build-wrapper.zip https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip + curl -sL https://deb.nodesource.com/setup_16.x | bash - + apt-get install -y nodejs unzip + # Set the JAVA_HOME to a compatible version of Java, e.g., Java 17 + export JAVA_HOME=$GITHUB_WORKSPACE/java-17 + cd $SONAR_DIR + for ZIP in *.zip; do + unzip "$ZIP" -d . + rm "$ZIP" + done + mv $(ls $SONAR_DIR | grep "sonar-scanner-") $SONAR_DIR/sonar-scanner/ + mv $(ls $SONAR_DIR | grep "build-wrapper-") $SONAR_DIR/build-wrapper/ + echo $SONAR_DIR/sonar-scanner/bin >> $GITHUB_PATH + echo $SONAR_DIR/build-wrapper >> $GITHUB_PATH + env: + JAVA_HOME: $GITHUB_WORKSPACE/java-17 + + - name: Check Java Version + run: | + java -version + echo $JAVA_HOME + - name: Build + run: | + cd /home/carma-streets/ + build-wrapper-linux-x86-64 --out-dir /home/carma-streets/bw-output ./build.sh + - name: Tests + run: | + cd /home/carma-streets/ + ldconfig + ./coverage.sh + - name: Archive test results + uses: actions/upload-artifact@v3 + with: + name: Test Results + path: /home/carma-streets/test_results + - name: Run SonarScanner + uses: usdot-fhwa-stol/actions/sonar-scanner@main + with: + sonar-token: ${{ secrets.SONAR_TOKEN }} + working-dir: /home/carma-streets diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..4e26c995e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,135 @@ +name: release +on: + push: + tags: + - "carma-system-*" +jobs: + docker-build: + strategy: + matrix: + include: + - ubuntu-codename: bionic + build_lanelet_aware: true + # Currently install_lanelet2_dependencies.sh script only works for bionic. Disabled lanelet_aware build on newer distributions pending script updates. + - ubuntu-codename: focal + build_lanelet_aware: false + # Currently install_lanelet2_dependencies.sh script only works for bionic. Disabled lanelet_aware build on newer distributions pending script updates. + - ubuntu-codename: jammy + build_lanelet_aware: false + runs-on: ubuntu-latest + steps: + - name: Log in to the Container registry + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Docker Build Streets Service Base + uses: docker/build-push-action@v3 + with: + push: true + build-args: | + UBUNTU_CODENAME=${{ matrix.ubuntu-codename }} + tags: usdotfhwastol/streets_service_base:${{ github.ref_name }}-${{ matrix.ubuntu-codename }} + file: ./streets_service_base/Dockerfile + - name: Docker Build Streets Service Base Lanelet Aware + if: ${{ matrix.build_lanelet_aware }} + uses: docker/build-push-action@v3 + with: + push: true + tags: usdotfhwastol/streets_service_base_lanelet_aware:${{ github.ref_name }}-${{ matrix.ubuntu-codename }} + file: ./streets_service_base_lanelet_aware/Dockerfile + build: + needs: docker-build + defaults: + run: + shell: bash + runs-on: ubuntu-latest-8-cores + container: + image: usdotfhwastol/streets_service_base_lanelet_aware:${{ github.ref_name }}-bionic + env: + DEBIAN_FRONTEND: noninteractive + SONAR_SCANNER_VERSION: "5.0.1.3006" + TERM: xterm + options: "--user root" + steps: + # Bionic's git version is not sufficient for actions/checkout 0 fetch-depth, + # remove this step after rebasing carma-streets to newer Ubuntu release + - name: Install newer git for checkout + run: | + apt-get update + apt-get install -y software-properties-common + add-apt-repository -u ppa:git-core/ppa + apt-get install -y git + - name: Checkout ${{ github.event.repository.name }} + uses: actions/checkout@v3.3.0 + with: + path: ${{ github.event.repository.name }} + fetch-depth: 0 + - name: Move source code + run: mv $GITHUB_WORKSPACE/${{ github.event.repository.name }} /home/carma-streets + - name: Install dependencies + run: | + cd /home/carma-streets/build_scripts + ./install_test_dependencies.sh + mkdir -p /home/carma-streets/ext + ./install_rest_server_dependencies.sh + - name: Install net-snmp + run: | + cd /home/carma-streets/ext/ + apt-get install -y libperl-dev curl + curl -k -L -O http://sourceforge.net/projects/net-snmp/files/net-snmp/5.9.1/net-snmp-5.9.1.tar.gz + tar -xvzf /home/carma-streets/ext/net-snmp-5.9.1.tar.gz + cd net-snmp-5.9.1/ + ./configure --with-default-snmp-version="1" --with-sys-contact="@@no.where" --with-sys-location="Unknown" --with-logfile="/var/log/snmpd.log" --with-persistent-directory="/var/net-snmp" + make -j + make install + - name: Set up JDK 17 + uses: actions/setup-java@v3 # The setup-java action provides the functionality for GitHub Actions runners for Downloading and setting up a requested version of Java + with: + java-version: 17 + distribution: "temurin" + - name: Install Sonar + run: | + SONAR_DIR=/opt/sonarqube + mkdir $SONAR_DIR + curl -o $SONAR_DIR/sonar-scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SONAR_SCANNER_VERSION}-linux.zip + curl -o $SONAR_DIR/build-wrapper.zip https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip + curl -sL https://deb.nodesource.com/setup_16.x | bash - + apt-get install -y nodejs unzip + # Set the JAVA_HOME to a compatible version of Java, e.g., Java 17 + export JAVA_HOME=$GITHUB_WORKSPACE/java-17 + cd $SONAR_DIR + for ZIP in *.zip; do + unzip "$ZIP" -d . + rm "$ZIP" + done + mv $(ls $SONAR_DIR | grep "sonar-scanner-") $SONAR_DIR/sonar-scanner/ + mv $(ls $SONAR_DIR | grep "build-wrapper-") $SONAR_DIR/build-wrapper/ + echo $SONAR_DIR/sonar-scanner/bin >> $GITHUB_PATH + echo $SONAR_DIR/build-wrapper >> $GITHUB_PATH + env: + JAVA_HOME: $GITHUB_WORKSPACE/java-17 + + - name: Check Java Version + run: | + java -version + echo $JAVA_HOME + - name: Build + run: | + cd /home/carma-streets/ + build-wrapper-linux-x86-64 --out-dir /home/carma-streets/bw-output ./build.sh + - name: Tests + run: | + cd /home/carma-streets/ + ldconfig + ./coverage.sh + - name: Archive test results + uses: actions/upload-artifact@v3 + with: + name: Test Results + path: /home/carma-streets/test_results + - name: Run SonarScanner + uses: usdot-fhwa-stol/actions/sonar-scanner@main + with: + sonar-token: ${{ secrets.SONAR_TOKEN }} + working-dir: /home/carma-streets