diff --git a/.github/workflows/carbonix_build.yml b/.github/workflows/carbonix_build.yml index f7a0892a58..ae16001889 100644 --- a/.github/workflows/carbonix_build.yml +++ b/.github/workflows/carbonix_build.yml @@ -135,7 +135,87 @@ concurrency: cancel-in-progress: true jobs: - build: + build-sitl: + runs-on: 'windows-latest' + steps: + - uses: actions/checkout@v3 + with: + submodules: 'recursive' + - name: Prepare ccache timestamp + id: ccache_cache_timestamp + shell: bash + run: | + NOW=$(date -u +"%F-%T") + echo "timestamp=${NOW}" >> $GITHUB_OUTPUT + WORKFLOWNAME="${{github.workflow}}" + NAME_DASHED=${WORKFLOWNAME//+( )/_} + echo "cache-key=${NAME_DASHED}" >> $GITHUB_OUTPUT + + - uses: cygwin/cygwin-install-action@master + with: + packages: cygwin64 gcc-g++=10.2.0-1 ccache python37 python37-future python37-lxml python37-pip python37-setuptools python37-wheel git procps gettext + add-to-path: false + # Put ccache into github cache for faster build + - name: setup ccache + env: + PATH: /usr/bin:$(cygpath ${SYSTEMROOT})/system32 + shell: C:\cygwin\bin\bash.exe -eo pipefail '{0}' + run: >- + mkdir -p /cygdrive/d/a/ardupilot/ardupilot/ccache && + mkdir -p /usr/local/etc && + echo "export CCACHE_SLOPPINESS=file_stat_matches" >> ~/ccache.conf && + echo "export CCACHE_DIR=/cygdrive/d/a/ardupilot/ardupilot/ccache" >> ~/ccache.conf && + echo "export CCACHE_BASEDIR=/cygdrive/d/a/ardupilot/ardupilot" >> ~/ccache.conf && + echo "export CCACHE_COMPRESS=1" >> ~/ccache.conf && + echo "export CCACHE_COMPRESSLEVEL=6" >> ~/ccache.conf && + echo "export CCACHE_MAXSIZE=400M" >> ~/ccache.conf && + source ~/ccache.conf && + ccache -s + - name: ccache cache files + uses: actions/cache@v3 + with: + path: D:/a/ardupilot/ardupilot/ccache + key: ${{ steps.ccache_cache_timestamp.outputs.cache-key }}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}} + restore-keys: ${{ steps.ccache_cache_timestamp.outputs.cache-key }}-ccache- # restore ccache from either previous build on this branch or on base branch + - name: Prepare Python environment + env: + PATH: /usr/bin:$(cygpath ${SYSTEMROOT})/system32 + shell: C:\cygwin\bin\bash.exe -eo pipefail '{0}' + run: >- + ln -sf /usr/bin/python3.7 /usr/bin/python && ln -sf /usr/bin/pip3.7 /usr/bin/pip && + python -m pip install --progress-bar off empy pexpect && + python -m pip install --progress-bar off dronecan --upgrade && + cp /usr/bin/ccache /usr/local/bin/ && + cd /usr/local/bin && ln -s ccache /usr/local/bin/gcc && + ln -s ccache /usr/local/bin/g++ && + ln -s ccache /usr/local/bin/x86_64-pc-cygwin-gcc && + ln -s ccache /usr/local/bin/x86_64-pc-cygwin-g++ + + - name: Build SITL + env: + PATH: /usr/bin:$(cygpath ${SYSTEMROOT})/system32 + shell: C:\cygwin\bin\bash.exe -eo pipefail '{0}' + run: >- + export PATH=/usr/local/bin:/usr/bin:$(cygpath ${SYSTEMROOT})/system32 && + source ~/ccache.conf && + Tools/scripts/cygwin_build.sh && + ccache -s + + - name: Check build files + id: check_files + uses: andstor/file-existence-action@v2 + with: + files: "artifacts/*.exe" + fail: true + + - name: Archive build + uses: actions/upload-artifact@v4 + with: + name: sitl + path: artifacts + retention-days: 90 + + build-apj: runs-on: ubuntu-20.04 container: ardupilot/ardupilot-dev-${{ matrix.toolchain }}:v0.0.29 strategy: @@ -179,20 +259,12 @@ jobs: id: check_files uses: andstor/file-existence-action@v2 with: - files: "build/CubeOrange/*, build/CubeOrange-Volanti/*, build/CubeOrange-Ottano/*, build/sitl/*, build/CarbonixF405/*, build/CarbonixF405-no-crystal/*" + files: "build/CubeOrange/*, build/CubeOrange-Volanti/*, build/CubeOrange-Ottano/*, build/CarbonixF405/*, build/CarbonixF405-no-crystal/*" fail: true - - name: Extract firmware version and commit id - id: extract_info - run: | - FIRMWARE_VERSION=$(grep -oP '#define AP_CUSTOM_FIRMWARE_STRING "\K(.*)(?=")' libraries/AP_Common/CxVersion.h) - COMMIT_ID=$(git rev-parse --short HEAD) - echo "firmware_version=$FIRMWARE_VERSION" >> $GITHUB_ENV - echo "commit_id=$COMMIT_ID" >> $GITHUB_ENV - shell: sh -e {0} - name: Gather build output run: | mkdir -p temp/others - for dir in CubeOrange CubeOrange-Volanti CubeOrange-Ottano sitl CarbonixF405 CarbonixF405-no-crystal; do + for dir in CubeOrange CubeOrange-Volanti CubeOrange-Ottano CarbonixF405 CarbonixF405-no-crystal; do mkdir -p temp/others/$dir/bin cp -vr build/$dir/bin/* temp/others/$dir/bin/ done @@ -213,27 +285,46 @@ jobs: - name: Archive production artifacts uses: actions/upload-artifact@v4 with: - name: ${{ env.firmware_version }}_${{ env.commit_id }} + name: apj path: temp retention-days: 90 - - name: Install AWS CLI + upload: + runs-on: ubuntu-20.04 + needs: [build-apj, build-sitl] + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Extract firmware version, commit id, and branch name + id: extract_info run: | - sudo apt-get update - sudo apt-get install -y curl unzip - curl "https://d1vvhvl2y92vvt.cloudfront.net/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" - unzip awscliv2.zip - sudo ./aws/install + FIRMWARE_VERSION=$(grep -oP '#define AP_CUSTOM_FIRMWARE_STRING "\K(.*)(?=")' libraries/AP_Common/CxVersion.h) + COMMIT_ID=$(git rev-parse --short HEAD) + BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/}) + echo "firmware_version=$FIRMWARE_VERSION" >> $GITHUB_ENV + echo "commit_id=$COMMIT_ID" >> $GITHUB_ENV + echo "branch_name=$BRANCH_NAME" >> $GITHUB_ENV + shell: sh -e {0} + - name: Download APJ build + uses: actions/download-artifact@v4 + with: + name: apj + path: temp + + - name: Download SITL build + uses: actions/download-artifact@v4 + with: + name: sitl + path: temp/sitl + - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_S3_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_S3_SECRET_ACCESS_KEY }} aws-region: us-east-1 - - - name: Set BRANCH_NAME - run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV - name: Upload artifacts to S3 run: | @@ -242,8 +333,8 @@ jobs: PATH_TO_S3=s3://carbonix-firmware-release-files/Carbopilot_V2/${DATE_HR}_${{ env.firmware_version }}_${{ env.commit_id }}/ echo "Uploading to: $PATH_TO_S3" aws s3 cp temp/ $PATH_TO_S3 --recursive - elif ${{ github.event_name == 'push' && startsWith(env.BRANCH_NAME, 'CxPilot') }}; then - PATH_TO_S3=s3://carbonix-firmware-dev-files/Carbopilot_V2/${{ env.BRANCH_NAME }}/${DATE_HR}_${{ env.firmware_version }}_${{ env.commit_id }}/ + elif ${{ github.event_name == 'push' && startsWith(env.branch_name, 'CxPilot') }}; then + PATH_TO_S3=s3://carbonix-firmware-dev-files/Carbopilot_V2/${{ env.branch_name }}/${DATE_HR}_${{ env.firmware_version }}_${{ env.commit_id }}/ echo "Uploading to: $PATH_TO_S3" aws s3 cp temp/ $PATH_TO_S3 --recursive elif ${{ github.event_name == 'pull_request' }}; then diff --git a/.github/workflows/cygwin_build.yml b/.github/workflows/cygwin_build.yml deleted file mode 100644 index 0d664a2aca..0000000000 --- a/.github/workflows/cygwin_build.yml +++ /dev/null @@ -1,222 +0,0 @@ -name: Cygwin Build - -on: - push: - branches: - - CxPilot - - CxPilot-* - - master - paths-ignore: - # remove other vehicles - - 'AntennaTracker/**' - - 'Blimp/**' - # remove non SITL HAL - - 'libraries/AP_HAL_ChibiOS/**' - - 'libraries/AP_HAL_ESP32/**' - # remove non SITL directories - - 'Tools/AP_Bootloader/**' - - 'Tools/AP_Periph/**' - - 'Tools/CHDK-Script/**' - - 'Tools/CPUInfo/**' - - 'Tools/CodeStyle/**' - - 'Tools/FilterTestTool/**' - - 'Tools/Frame_params/**' - - 'Tools/GIT_Test/**' - - 'Tools/Hello/**' - - 'Tools/IO_Firmware/**' - - 'Tools/Linux_HAL_Essentials/**' - - 'Tools/LogAnalyzer/**' - - 'Tools/Pozyx/**' - - 'Tools/PrintVersion.py' - - 'Tools/Replay/**' - - 'Tools/UDP_Proxy/**' - - 'Tools/Vicon/**' - - 'Tools/bootloaders/**' - - 'Tools/completion/**' - - 'Tools/debug/**' - - 'Tools/environment_install/**' - - 'Tools/geotag/**' - - 'Tools/gittools/**' - - 'Tools/mavproxy_modules/**' - - 'Tools/simulink/**' - - 'Tools/vagrant/**' - # Discard python file from Tools/scripts as not used - - 'Tools/scripts/**.py' - - 'Tools/scripts/build_sizes/**' - - 'Tools/scripts/build_tests/**' - - 'Tools/scripts/CAN/**' - - 'Tools/scripts/signing/**' - # Remove autotest - - 'Tools/autotest/**' - # Remove markdown files as irrelevant - - '**.md' - # Remove dotfile at root directory - - './.dir-locals.el' - - './.dockerignore' - - './.editorconfig' - - './.flake8' - - './.gitattributes' - - './.github' - - './.gitignore' - - './.pre-commit-config.yaml' - - './.pydevproject' - - './.valgrind-suppressions' - - './.valgrindrc' - - 'Dockerfile' - - 'Vagrantfile' - - 'Makefile' - # Remove some directories check - - '.vscode/**' - - '.github/ISSUE_TEMPLATE/**' - - pull_request: - paths-ignore: - # remove other vehicles - - 'AntennaTracker/**' - - 'Blimp/**' - # remove non SITL HAL - - 'libraries/AP_HAL_ChibiOS/**' - - 'libraries/AP_HAL_ESP32/**' - # remove non SITL directories - - 'Tools/AP_Bootloader/**' - - 'Tools/AP_Periph/**' - - 'Tools/bootloaders/**' - - 'Tools/CHDK-Script/**' - - 'Tools/CodeStyle/**' - - 'Tools/completion/**' - - 'Tools/CPUInfo/**' - - 'Tools/debug/**' - - 'Tools/environment_install/**' - - 'Tools/FilterTestTool/**' - - 'Tools/Frame_params/**' - - 'Tools/geotag/**' - - 'Tools/GIT_Test/**' - - 'Tools/gittools/**' - - 'Tools/Hello/**' - - 'Tools/IO_Firmware/**' - - 'Tools/Linux_HAL_Essentials/**' - - 'Tools/LogAnalyzer/**' - - 'Tools/mavproxy_modules/**' - - 'Tools/Pozyx/**' - - 'Tools/PrintVersion.py' - - 'Tools/Replay/**' - - 'Tools/simulink/**' - - 'Tools/UDP_Proxy/**' - - 'Tools/vagrant/**' - - 'Tools/Vicon/**' - # Discard python file from Tools/scripts as not used - - 'Tools/scripts/**.py' - - 'Tools/scripts/build_sizes/**' - - 'Tools/scripts/build_tests/**' - - 'Tools/scripts/CAN/**' - - 'Tools/scripts/signing/**' - # Remove autotest - - 'Tools/autotest/**' - # Remove markdown files as irrelevant - - '**.md' - # Remove dotfile at root directory - - './.dir-locals.el' - - './.dockerignore' - - './.editorconfig' - - './.flake8' - - './.gitattributes' - - './.github' - - './.gitignore' - - './.pre-commit-config.yaml' - - './.pydevproject' - - './.valgrind-suppressions' - - './.valgrindrc' - - 'Dockerfile' - - 'Vagrantfile' - - 'Makefile' - # Remove some directories check - - '.vscode/**' - - '.github/ISSUE_TEMPLATE/**' - - workflow_dispatch: - -concurrency: - group: ci-${{github.workflow}}-${{ github.ref }} - cancel-in-progress: true - -jobs: - build: - runs-on: 'windows-latest' - - steps: - - uses: actions/checkout@v3 - with: - submodules: 'recursive' - - name: Prepare ccache timestamp - id: ccache_cache_timestamp - shell: bash - run: | - NOW=$(date -u +"%F-%T") - echo "timestamp=${NOW}" >> $GITHUB_OUTPUT - WORKFLOWNAME="${{github.workflow}}" - NAME_DASHED=${WORKFLOWNAME//+( )/_} - echo "cache-key=${NAME_DASHED}" >> $GITHUB_OUTPUT - - - uses: cygwin/cygwin-install-action@master - with: - packages: cygwin64 gcc-g++=10.2.0-1 ccache python37 python37-future python37-lxml python37-pip python37-setuptools python37-wheel git procps gettext - add-to-path: false - # Put ccache into github cache for faster build - - name: setup ccache - env: - PATH: /usr/bin:$(cygpath ${SYSTEMROOT})/system32 - shell: C:\cygwin\bin\bash.exe -eo pipefail '{0}' - run: >- - mkdir -p /cygdrive/d/a/ardupilot/ardupilot/ccache && - mkdir -p /usr/local/etc && - echo "export CCACHE_SLOPPINESS=file_stat_matches" >> ~/ccache.conf && - echo "export CCACHE_DIR=/cygdrive/d/a/ardupilot/ardupilot/ccache" >> ~/ccache.conf && - echo "export CCACHE_BASEDIR=/cygdrive/d/a/ardupilot/ardupilot" >> ~/ccache.conf && - echo "export CCACHE_COMPRESS=1" >> ~/ccache.conf && - echo "export CCACHE_COMPRESSLEVEL=6" >> ~/ccache.conf && - echo "export CCACHE_MAXSIZE=400M" >> ~/ccache.conf && - source ~/ccache.conf && - ccache -s - - name: ccache cache files - uses: actions/cache@v3 - with: - path: D:/a/ardupilot/ardupilot/ccache - key: ${{ steps.ccache_cache_timestamp.outputs.cache-key }}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}} - restore-keys: ${{ steps.ccache_cache_timestamp.outputs.cache-key }}-ccache- # restore ccache from either previous build on this branch or on base branch - - name: Prepare Python environment - env: - PATH: /usr/bin:$(cygpath ${SYSTEMROOT})/system32 - shell: C:\cygwin\bin\bash.exe -eo pipefail '{0}' - run: >- - ln -sf /usr/bin/python3.7 /usr/bin/python && ln -sf /usr/bin/pip3.7 /usr/bin/pip && - python -m pip install --progress-bar off empy pexpect && - python -m pip install --progress-bar off dronecan --upgrade && - cp /usr/bin/ccache /usr/local/bin/ && - cd /usr/local/bin && ln -s ccache /usr/local/bin/gcc && - ln -s ccache /usr/local/bin/g++ && - ln -s ccache /usr/local/bin/x86_64-pc-cygwin-gcc && - ln -s ccache /usr/local/bin/x86_64-pc-cygwin-g++ - - - name: Build SITL - env: - PATH: /usr/bin:$(cygpath ${SYSTEMROOT})/system32 - shell: C:\cygwin\bin\bash.exe -eo pipefail '{0}' - run: >- - export PATH=/usr/local/bin:/usr/bin:$(cygpath ${SYSTEMROOT})/system32 && - source ~/ccache.conf && - Tools/scripts/cygwin_build.sh && - ccache -s - - - name: Check build files - id: check_files - uses: andstor/file-existence-action@v2 - with: - files: "artifacts/*.exe" - fail: true - - - name: Archive build - uses: actions/upload-artifact@v3 - with: - name: binaries - path: artifacts - retention-days: 90 diff --git a/Tools/Carbonix_scripts/carbonix_waf_build.sh b/Tools/Carbonix_scripts/carbonix_waf_build.sh index fb06080ce2..ab98176e22 100755 --- a/Tools/Carbonix_scripts/carbonix_waf_build.sh +++ b/Tools/Carbonix_scripts/carbonix_waf_build.sh @@ -6,7 +6,7 @@ set -e echo "Running distclean..." ./waf distclean -main_boards=("CubeOrange" "CubeOrange-Volanti" "CubeOrange-Ottano" "sitl") +main_boards=("CubeOrange" "CubeOrange-Volanti" "CubeOrange-Ottano") for board in "${main_boards[@]}"; do echo "Compiling ArduPlane for $board..." ./waf configure --board "$board" --define=CARBOPILOT=1