Skip to content

.github/workflows/build_dependencies.yml #6

.github/workflows/build_dependencies.yml

.github/workflows/build_dependencies.yml #6

name: Conan Build
on:
workflow_call:
inputs:
platform:
required: false
default: 'ubuntu-22.04'
type: string
branch:
required: true
type: string
build-type:
required: true
type: string
malloc-impl:
required: true
type: string
prerelease:
required: true
type: string
testing:
required: false
type: string
default: 'False'
workflow_dispatch:
inputs:
platform:
required: true
type: choice
options:
- ubuntu-22.04
- ubuntu-20.04
default: 'ubuntu-22.04'
branch:
required: true
type: string
build-type:
required: true
type: choice
options:
- Debug
- Release
- RelWithDebInfo
malloc-impl:
description: 'Allocation Library'
required: true
type: choice
options:
- libc
- tcmalloc
- jemalloc
prerelease:
description: 'Fault Instrumentation'
required: false
type: choice
options:
- 'True'
- 'False'
default: 'False'
testing:
description: 'Build and Run'
required: true
type: choice
options:
- 'True'
- 'False'
default: 'True'
jobs:
BuildHomestoreDeps:
runs-on: ${{ inputs.platform }}
steps:
- name: Retrieve Code
uses: actions/checkout@v3
with:
ref: ${{ inputs.branch }}
if: ${{ inputs.testing == 'True' }}
- name: Retrieve Recipe
uses: actions/checkout@v3
with:
repository: eBay/Homestore
ref: ${{ inputs.branch }}
if: ${{ inputs.testing == 'False' }}
- name: Load Homestore Cache
id: restore-cache
uses: eBay/sisl/.github/actions/load_conan@stable/v8.x
with:
testing: ${{ inputs.testing }}
key_prefix: HomestoreDeps8-${{ inputs.platform }}-${{ inputs.build-type }}-${{ inputs.malloc-impl }}-${{ inputs.prerelease }}
- name: Load Sisl Cache
uses: eBay/sisl/.github/actions/load_conan@stable/v8.x
with:
load_any: 'True'
key_prefix: SislDeps8-${{ inputs.platform }}-${{ inputs.build-type }}-${{ inputs.malloc-impl }}-${{ inputs.prerelease }}
if: ${{ inputs.testing == 'True' || steps.restore-cache.outputs.cache-hit != 'true' }}
- name: Retrieve Dependencies
uses: actions/checkout@v3
with:
repository: eBay/iomanager
path: import/iomgr
ref: stable/v8.x
if: ${{ inputs.testing == 'True' || steps.restore-cache.outputs.cache-hit != 'true' }}
- name: Load IOMgr Cache
uses: eBay/sisl/.github/actions/load_conan@stable/v8.x
with:
testing: 'False'
path: import/iomgr
key_prefix: IOMgrDeps8-${{ inputs.platform }}-${{ inputs.build-type }}-${{ inputs.malloc-impl }}-${{ inputs.prerelease }}
fail_on_cache_miss: true
if: ${{ inputs.testing == 'True' || steps.restore-cache.outputs.cache-hit != 'true' }}
- name: Setup Conan
uses: eBay/sisl/.github/actions/setup_conan@stable/v8.x
with:
platform: ${{ inputs.platform }}
if: ${{ inputs.testing == 'True' || steps.restore-cache.outputs.cache-hit != 'true' }}
- name: Export Recipes
run: |
sudo apt-get install -y python3-pyelftools libaio-dev
python -m pip install pyelftools
conan export import/iomgr
cached_pkgs=$(ls -1d ~/.conan/data/*/*/*/*/package | sed 's,.*data/,,' | cut -d'/' -f1,2 | paste -sd',' - -)
echo "::info:: Pre-cached: ${cached_pkgs}"
if: ${{ inputs.testing == 'True' || steps.restore-cache.outputs.cache-hit != 'true' }}
- name: Build Cache
run: |
conan install \
-o sisl:prerelease=${{ inputs.prerelease }} \
-o sisl:malloc_impl=${{ inputs.malloc-impl }} \
-o iomgr:testing=off \
-o testing=min \
-s build_type=${{ inputs.build-type }} \
--build missing \
.
if: ${{ steps.restore-cache.outputs.cache-hit != 'true' }}
- name: Save Conan Cache
uses: eBay/sisl/.github/actions/store_conan@stable/v8.x
with:
key_prefix: HomestoreDeps8-${{ inputs.platform }}-${{ inputs.build-type }}-${{ inputs.malloc-impl }}-${{ inputs.prerelease }}
if: ${{ github.event_name != 'pull_request' && steps.restore-cache.outputs.cache-hit != 'true' }}
- name: Reload Sisl Cache
uses: eBay/sisl/.github/actions/load_conan@stable/v8.x
with:
load_any: 'True'
key_prefix: SislDeps8-${{ inputs.platform }}-${{ inputs.build-type }}-${{ inputs.malloc-impl }}-${{ inputs.prerelease }}
if: ${{ inputs.testing == 'True' && github.event_name != 'pull_request' && steps.restore-cache.outputs.cache-hit != 'true' }}
- name: Reload IOMgr Cache
uses: eBay/sisl/.github/actions/load_conan@stable/v8.x
with:
testing: 'False'
path: import/sisl
key_prefix: IOMgrDeps8-${{ inputs.platform }}-${{ inputs.build-type }}-${{ inputs.malloc-impl }}-${{ inputs.prerelease }}
fail_on_cache_miss: true
if: ${{ inputs.testing == 'True' && github.event_name != 'pull_request' && steps.restore-cache.outputs.cache-hit != 'true' }}
- name: Code Coverage Run
run: |
conan install \
-o sisl:prerelease=${{ inputs.prerelease }} \
-o sisl:malloc_impl=${{ inputs.malloc-impl }} \
-o iomgr:testing=off \
-o homestore:testing=min \
-o coverage=True \
-s build_type=${{ inputs.build-type }} \
--build missing \
.
conan build .
if: ${{ inputs.testing == 'True' && inputs.platform == 'ubuntu-22.04' && inputs.build-type == 'Debug' && inputs.malloc-impl == 'libc' && inputs.prerelease == 'False' }}
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
gcov: true
if: ${{ inputs.testing == 'True' && inputs.platform == 'ubuntu-22.04' && inputs.build-type == 'Debug' && inputs.malloc-impl == 'libc' && inputs.prerelease == 'False' }}
- name: Create and Test Package
run: |
sanitize=$([[ "${{ inputs.build-type }}" == "Debug" && \
"${{ inputs.malloc-impl }}" == "libc" && \
"${{ inputs.prerelease }}" == "True" ]] && \
echo "True" || echo "False")
conan create \
-o sisl:prerelease=${{ inputs.prerelease }} \
-o sisl:malloc_impl=${{ inputs.malloc-impl }} \
-o iomgr:testing=off \
-o homestore:testing=min \
-o homestore:sanitize=${sanitize} \
-s build_type=${{ inputs.build-type }} \
--build missing \
.
if: ${{ inputs.testing == 'True' && ( inputs.platform != 'ubuntu-22.04' || inputs.build-type != 'Debug' || inputs.malloc-impl != 'libc' || inputs.prerelease != 'False' ) }}