REVERT_ME: execute rolling_binary_main on asan branch #1
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: Reusable industrial_ci Workflow with Cache | ||
# Reusable action to simplify dealing with ROS/ROS2 industrial_ci builds with cache | ||
# author: Denis Štogl <denis@stoglrobotics.de> | ||
on: | ||
workflow_call: | ||
inputs: | ||
ref_for_scheduled_build: | ||
description: 'Reference on which the repo should be checkout for scheduled build. Usually is this name of a branch or a tag.' | ||
default: '' | ||
required: false | ||
type: string | ||
upstream_workspace: | ||
description: 'UPSTREAM_WORKSPACE variable for industrial_ci. Usually path to local .repos file.' | ||
required: true | ||
type: string | ||
ros_distro: | ||
description: 'ROS_DISTRO variable for industrial_ci' | ||
required: true | ||
type: string | ||
ros_repo: | ||
description: 'ROS_REPO to run for industrial_ci. Possible values: "main", "testing"' | ||
default: 'main' | ||
required: false | ||
type: string | ||
os_code_name: | ||
description: 'OS_CODE_NAME variable for industrial_ci' | ||
default: '' | ||
required: false | ||
type: string | ||
before_install_upstream_dependencies: | ||
description: 'BEFORE_INSTALL_UPSTREAM_DEPENDENCIES variable for industrial_ci' | ||
default: '' | ||
required: false | ||
type: string | ||
ccache_dir: | ||
description: 'Local path to store cache (from "github.workspace"). For standard industrial_ci configuration do not have to be changed' | ||
default: '.ccache' | ||
required: false | ||
type: string | ||
basedir: | ||
description: 'Local path to workspace base directory to cache (from "github.workspace"). For standard industrial_ci configuration do not have to be changed' | ||
default: '.work' | ||
required: false | ||
type: string | ||
jobs: | ||
reusable_industrial_ci_with_cache: | ||
name: ${{ inputs.ros_distro }} ${{ inputs.ros_repo }} ${{ inputs.os_code_name }} | ||
runs-on: ubuntu-latest | ||
env: | ||
CCACHE_DIR: ${{ github.workspace }}/${{ inputs.ccache_dir }} | ||
BASEDIR: ${{ github.workspace }}/${{ inputs.basedir }} | ||
CACHE_PREFIX: ${{ inputs.ros_distro }}-${{ inputs.upstream_workspace }}-${{ inputs.ros_repo }}-${{ github.job }} | ||
steps: | ||
- name: Checkout ${{ inputs.ref }} when build is not scheduled | ||
if: ${{ github.event_name != 'schedule' }} | ||
uses: actions/checkout@v3 | ||
- name: Checkout ${{ inputs.ref }} on scheduled build | ||
if: ${{ github.event_name == 'schedule' }} | ||
uses: actions/checkout@v3 | ||
with: | ||
ref: ${{ inputs.ref_for_scheduled_build }} | ||
- name: cache target_ws | ||
if: ${{ ! matrix.env.CCOV }} | ||
uses: pat-s/always-upload-cache@v3.0.11 | ||
with: | ||
path: ${{ env.BASEDIR }}/target_ws | ||
key: target_ws-${{ env.CACHE_PREFIX }}-${{ hashFiles('**/CMakeLists.txt', '**/package.xml') }}-${{ github.run_id }} | ||
restore-keys: | | ||
target_ws-${{ env.CACHE_PREFIX }}-${{ hashFiles('**/CMakeLists.txt', '**/package.xml') }} | ||
- name: cache ccache | ||
uses: pat-s/always-upload-cache@v3.0.11 | ||
with: | ||
path: ${{ env.CCACHE_DIR }} | ||
key: ccache-${{ env.CACHE_PREFIX }}-${{ github.sha }}-${{ github.run_id }} | ||
restore-keys: | | ||
ccache-${{ env.CACHE_PREFIX }}-${{ github.sha }} | ||
ccache-${{ env.CACHE_PREFIX }} | ||
- uses: 'ros-industrial/industrial_ci@master' | ||
env: | ||
UPSTREAM_WORKSPACE: ${{ inputs.upstream_workspace }} | ||
ROS_DISTRO: ${{ inputs.ros_distro }} | ||
ROS_REPO: ${{ inputs.ros_repo }} | ||
OS_CODE_NAME: ${{ inputs.os_code_name }} | ||
BEFORE_INSTALL_UPSTREAM_DEPENDENCIES: ${{ inputs.before_install_upstream_dependencies }} | ||
CMAKE_ARGS: "-DCMAKE_C_FLAGS=-fsanitize=address -DCMAKE_CXX_FLAGS=-fsanitize=address -DCMAKE_BUILD_TYPE=RelWithDebInfo" | ||
DOCKER_RUN_OPTS='-e ASAN_OPTIONS=new_delete_type_mismatch=0' # This is currently necessary due to some asan issues in ROS core components | ||
- name: prepare target_ws for cache | ||
if: ${{ always() && ! matrix.env.CCOV }} | ||
run: | | ||
du -sh ${{ env.BASEDIR }}/target_ws | ||
sudo find ${{ env.BASEDIR }}/target_ws -wholename '*/test_results/*' -delete | ||
sudo rm -rf ${{ env.BASEDIR }}/target_ws/src | ||
du -sh ${{ env.BASEDIR }}/target_ws |