Publish conan packages #13
This file contains hidden or 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: Publish conan packages | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| ref: | |
| required: true | |
| type: string | |
| description: Version number (eg v0.20.1) | |
| upload_deps: | |
| required: true | |
| type: boolean | |
| default: false | |
| description: If true, publish slow-building deps as well | |
| jobs: | |
| build_macos: | |
| # Not sure if we actually need x64 macos-latest | |
| runs-on: macos-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: releases/${{ inputs.ref }} | |
| - name: Install dependencies | |
| run: | | |
| cmake --version | |
| python --version | |
| ninja --version | |
| brew install buf | |
| python -m pip install conan | |
| - name: Set up python/conan | |
| env: | |
| CONAN_REMOTE_URL: ${{ secrets.conanRemote }} | |
| CONAN_LOGIN_USERNAME_VIAMCONAN: ${{ secrets.conanUsername}} | |
| CONAN_PASSWORD_VIAMCONAN: ${{ secrets.conanPassword }} | |
| run: | | |
| conan profile detect | |
| conan remote add viamconan $CONAN_REMOTE_URL | |
| conan remote auth --force -cc core:non_interactive=True viamconan | |
| - name: Create and upload package | |
| run: | | |
| # `buf` tries to read a CLI config file that we don't actually use located at | |
| # ~/.config/buf/config.yaml. We don't always have permission to access this | |
| # directory in CI, so we set the `BUF_CONFIG_DIR` to some other value that we | |
| # do have permissions for. See https://github.com/bufbuild/buf/issues/2698 for | |
| # more details. | |
| export BUF_CONFIG_DIR=$(mktemp -d) | |
| conan create . --build=missing -s:a compiler.cppstd=17 -o:a "&:shared=False" | |
| conan upload "viam-cpp-sdk/*" -r viamconan -c | |
| - name: Upload additional deps | |
| if: inputs.upload_deps | |
| run: | | |
| conan upload "boost/*" -r viamconan -c | |
| conan upload "grpc/*" -r viamconan -c | |
| conan upload "protobuf/*" -r viamconan -c | |
| build_linux: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| runner: [buildjet-8vcpu-ubuntu-2204, buildjet-8vcpu-ubuntu-2204-arm] | |
| image: [ubuntu:22.04, debian:bookworm] | |
| runs-on: ${{ matrix.runner }} | |
| container: | |
| image: ${{ matrix.image }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: releases/${{ inputs.ref }} | |
| - name: Show platform info | |
| run: | | |
| uname -a | |
| cat /etc/os-release | |
| - name: Install common deps | |
| run: | | |
| apt-get update | |
| apt-get -y dist-upgrade | |
| DEBIAN_FRONTEND=noninteractive apt-get -y --no-install-recommends install \ | |
| autoconf \ | |
| automake \ | |
| build-essential \ | |
| ca-certificates \ | |
| curl \ | |
| doxygen \ | |
| g++ \ | |
| gdb \ | |
| gnupg \ | |
| gpg \ | |
| less \ | |
| ninja-build \ | |
| python3 \ | |
| python3-pip \ | |
| python3-venv \ | |
| software-properties-common \ | |
| sudo \ | |
| wget \ | |
| - name: Install cmake (jammy) | |
| if: matrix.image == 'ubuntu:22.04' | |
| run: | | |
| sudo wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null | |
| sudo echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ jammy main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null | |
| apt-get update | |
| apt-get -y install cmake=3.25.2-0kitware1ubuntu22.04.1 cmake-data=3.25.2-0kitware1ubuntu22.04.1 | |
| - name: Install cmake (bookworm) | |
| if: matrix.image == 'debian:bookworm' | |
| run: DEBIAN_FRONTEND=noninteractive apt-get -y --no-install-recommends install cmake | |
| - name: Set up python/conan | |
| env: | |
| CONAN_REMOTE_URL: ${{ secrets.conanRemote }} | |
| CONAN_LOGIN_USERNAME_VIAMCONAN: ${{ secrets.conanUsername}} | |
| CONAN_PASSWORD_VIAMCONAN: ${{ secrets.conanPassword }} | |
| run: | | |
| python3 -m venv ./conan_venv | |
| . ./conan_venv/bin/activate | |
| pip install conan | |
| conan profile detect | |
| conan remote add viamconan $CONAN_REMOTE_URL | |
| conan remote auth --force -cc core:non_interactive=True viamconan | |
| - name: Create and upload package | |
| run: | | |
| . ./conan_venv/bin/activate | |
| conan create . --build=missing -s:a compiler.cppstd=17 -o:a "&:shared=False" | |
| conan upload "viam-cpp-sdk/*" -r viamconan -c | |
| - name: Upload additional deps | |
| if: inputs.upload_deps && !(matrix.runner == 'buildjet-8vcpu-ubuntu-2204' && matrix.image == 'ubuntu:22.04') | |
| run: | | |
| conan upload "boost/*" -r viamconan -c | |
| conan upload "grpc/*" -r viamconan -c | |
| conan upload "protobuf/*" -r viamconan -c | |
| build_windows: | |
| runs-on: windows-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: releases/${{ inputs.ref }} | |
| - name: Install dependencies | |
| run: choco install -y conan git | |
| - name: Set up python/conan | |
| shell: powershell | |
| run: | | |
| $ErrorActionPreference = "Stop" | |
| Import-Module $env:ChocolateyInstall\helpers\chocolateyProfile.psm1 | |
| refreshenv | |
| conan profile detect | |
| conan remote add viamconan $env:CONAN_REMOTE_URL | |
| conan remote auth --force -cc core:non_interactive=True viamconan | |
| env: | |
| CONAN_REMOTE_URL: ${{ secrets.conanRemote }} | |
| CONAN_LOGIN_USERNAME_VIAMCONAN: ${{ secrets.conanUsername}} | |
| CONAN_PASSWORD_VIAMCONAN: ${{ secrets.conanPassword }} | |
| CONAN_USER_HOME: c:/cache | |
| CONAN_USER_HOME_SHORT: c:/cache/conan_shortpaths | |
| - name: Create and upload package | |
| shell: powershell | |
| run: | | |
| $ErrorActionPreference = "Stop" | |
| Import-Module $env:ChocolateyInstall\helpers\chocolateyProfile.psm1 | |
| refreshenv | |
| conan create . --build=missing -o "&:shared=False" -s:a compiler.cppstd=17 | |
| conan upload "viam-cpp-sdk/*" -r viamconan -c | |
| env: | |
| CONAN_USER_HOME: c:/cache | |
| CONAN_USER_HOME_SHORT: c:/cache/conan_shortpaths | |
| - name: Upload additional deps | |
| if: inputs.upload_deps | |
| shell: powershell | |
| run: | | |
| $ErrorActionPreference = "Stop" | |
| Import-Module $env:ChocolateyInstall\helpers\chocolateyProfile.psm1 | |
| refreshenv | |
| conan upload "boost/*" -r viamconan -c | |
| conan upload "grpc/*" -r viamconan -c | |
| conan upload "protobuf/*" -r viamconan -c | |
| env: | |
| CONAN_USER_HOME: c:/cache | |
| CONAN_USER_HOME_SHORT: c:/cache/conan_shortpaths |