Tools: add -g to Carbonix Build Script #457
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Carbonix Build | |
on: | |
push: | |
branches: | |
- CxPilot | |
- CxPilot-* | |
- master | |
paths-ignore: | |
# remove non chibios HAL | |
- 'libraries/AP_HAL_Linux/**' | |
- 'libraries/AP_HAL_ESP32/**' | |
- 'libraries/AP_HAL_SITL/**' | |
# remove non stm directories | |
- 'Tools/CHDK-Script/**' | |
- 'Tools/CodeStyle/**' | |
- 'Tools/completion/**' | |
- 'Tools/debug/**' | |
- 'Tools/environment_install/**' | |
- 'Tools/FilterTestTool/**' | |
- 'Tools/Frame_params/**' | |
- 'Tools/geotag/**' | |
- 'Tools/GIT_Test/**' | |
- 'Tools/gittools/**' | |
- 'Tools/Hello/**' | |
- 'Tools/LogAnalyzer/**' | |
- 'Tools/mavproxy_modules/**' | |
- 'Tools/Pozyx/**' | |
- 'Tools/PrintVersion.py' | |
- 'Tools/Replay/**' | |
- 'Tools/simulink/**' | |
- 'Tools/UDP_Proxy/**' | |
- 'Tools/vagrant/**' | |
- 'Tools/Vicon/**' | |
# Remove vehicles autotest we need support of test_build_option.py in the Tools/autotest directory | |
- 'Tools/autotest/antennatracker.py' | |
- 'Tools/autotest/arduplane.py' | |
- 'Tools/autotest/ardusub.py' | |
- 'Tools/autotest/balancebot.py' | |
- 'Tools/autotest/location.txt' | |
- 'Tools/autotest/quadplane.py' | |
- 'Tools/autotest/rover.py' | |
- 'Tools/autotest/sailboat.py' | |
- 'Tools/autotest/swarminit.txt' | |
# 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 non chibios HAL | |
- 'libraries/AP_HAL_Linux/**' | |
- 'libraries/AP_HAL_ESP32/**' | |
- 'libraries/AP_HAL_SITL/**' | |
# remove non stm directories | |
- 'Tools/CHDK-Script/**' | |
- 'Tools/CodeStyle/**' | |
- 'Tools/completion/**' | |
- 'Tools/debug/**' | |
- 'Tools/environment_install/**' | |
- 'Tools/FilterTestTool/**' | |
- 'Tools/Frame_params/**' | |
- 'Tools/geotag/**' | |
- 'Tools/GIT_Test/**' | |
- 'Tools/gittools/**' | |
- 'Tools/Hello/**' | |
- 'Tools/LogAnalyzer/**' | |
- 'Tools/mavproxy_modules/**' | |
- 'Tools/Pozyx/**' | |
- 'Tools/PrintVersion.py' | |
- 'Tools/Replay/**' | |
- 'Tools/simulink/**' | |
- 'Tools/UDP_Proxy/**' | |
- 'Tools/vagrant/**' | |
- 'Tools/Vicon/**' | |
# Remove vehicles autotest we need support of test_build_option.py in the Tools/autotest directory | |
- 'Tools/autotest/antennatracker.py' | |
- 'Tools/autotest/arduplane.py' | |
- 'Tools/autotest/ardusub.py' | |
- 'Tools/autotest/autotest.py' | |
- 'Tools/autotest/balancebot.py' | |
- 'Tools/autotest/common.py' | |
- 'Tools/autotest/examples.py' | |
- 'Tools/autotest/quadplane.py' | |
- 'Tools/autotest/rover.py' | |
- 'Tools/autotest/sailboat.py' | |
- 'Tools/autotest/**.txt' | |
- 'Tools/autotest/logger_metadata/**' | |
- 'Tools/autotest/param_metadata/**' | |
# 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/**' | |
release: | |
types: [published] | |
workflow_dispatch: | |
concurrency: | |
group: ci-${{github.workflow}}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build-sitl: | |
runs-on: 'windows-latest' | |
steps: | |
- uses: actions/checkout@v4 | |
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==3.3.4 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: >- | |
git config --global --add safe.directory /cygdrive/d/a/${GITHUB_REPOSITORY#$GITHUB_REPOSITORY_OWNER/}/${GITHUB_REPOSITORY#$GITHUB_REPOSITORY_OWNER/} && | |
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-22.04 | |
container: ardupilot/ardupilot-dev-${{ matrix.toolchain }}:v0.1.3 | |
strategy: | |
fail-fast: false # don't cancel if a job from the matrix fails | |
matrix: | |
toolchain: [ | |
chibios, | |
#chibios-clang, | |
] | |
gcc: [10] | |
exclude: | |
- gcc: 10 | |
toolchain: chibios-clang | |
steps: | |
# git checkout the PR | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
# Put ccache into github cache for faster build | |
- name: Prepare ccache timestamp | |
id: ccache_cache_timestamp | |
run: | | |
NOW=$(date -u +"%F-%T") | |
echo "timestamp=${NOW}" >> $GITHUB_OUTPUT | |
- name: ccache cache files | |
uses: actions/cache@v3 | |
with: | |
path: ~/.ccache | |
key: ${{github.workflow}}-ccache-${{ matrix.toolchain }}-${{ matrix.gcc }}-${{steps.ccache_cache_timestamp.outputs.timestamp}} | |
restore-keys: ${{github.workflow}}-ccache-${{ matrix.toolchain }}-${{ matrix.gcc }} # restore ccache from either previous build on this branch or on master | |
- name: setup ccache | |
run: | | |
. .github/workflows/ccache.env | |
- name: build | |
shell: bash | |
run: | | |
git config --global --add safe.directory ${GITHUB_WORKSPACE} | |
if [[ ${{ matrix.toolchain }} == "chibios-clang" ]]; then | |
export CC=clang | |
export CXX=clang++ | |
fi | |
PATH="/usr/lib/ccache:/opt/gcc-arm-none-eabi-${{matrix.gcc}}/bin:$PATH" | |
PATH="/github/home/.local/bin:$PATH" | |
Tools/Carbonix_scripts/carbonix_waf_build.sh | |
ccache -s | |
ccache -z | |
- name: Check build files | |
id: check_files | |
uses: andstor/file-existence-action@v2 | |
with: | |
files: "build/CubeOrange/*, build/CubeOrange-Volanti/*, build/CubeOrange-Ottano/*, build/CarbonixF405/*, build/CarbonixF405-no-crystal/*" | |
fail: true | |
- name: Gather build output | |
run: | | |
mkdir -p temp/others | |
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 | |
cp -vr output/* temp/ | |
mv temp/others/CubeOrange-Volanti temp/Volanti | |
mv temp/others/CubeOrange-Ottano temp/Ottano | |
if [ -d "ArduPlane/ReleaseNotes.txt" ]; then | |
cp -v ArduPlane/ReleaseNotes.txt temp/ | |
else | |
echo "ReleaseNotes.txt File does not exist" | |
fi | |
if [ -d "libraries/AP_HAL_ChibiOS/hwdef/CarbonixCommon/payloads" ]; then | |
cp -vr libraries/AP_HAL_ChibiOS/hwdef/CarbonixCommon/payloads temp/ | |
else | |
echo "payloads Folder does not exist" | |
fi | |
shell: sh -e {0} | |
- name: Archive production artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: apj | |
path: temp | |
retention-days: 90 | |
upload: | |
runs-on: ubuntu-22.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: | | |
FIRMWARE_VERSION=$(grep -oP 'define AP_CUSTOM_FIRMWARE_STRING "\K(.*)(?=")' libraries/AP_HAL_ChibiOS/hwdef/CarbonixCommon/version.inc) | |
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: Upload artifacts to S3 | |
run: | | |
DATE_HR=$(date +%Y%m%d_%H%M) | |
if ${{ github.event_name == 'release' }}; then | |
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 }}/ | |
echo "Uploading to: $PATH_TO_S3" | |
aws s3 cp temp/ $PATH_TO_S3 --recursive | |
elif ${{ github.event_name == 'pull_request' }}; then | |
PATH_TO_S3=s3://carbonix-firmware-dev-files/Carbopilot_V2/PR/${DATE_HR}_${{ env.firmware_version }}_${{ env.commit_id }}_${{ github.event.pull_request.number }}/ | |
echo "Uploading to: $PATH_TO_S3" | |
aws s3 cp temp/ $PATH_TO_S3 --recursive | |
fi |