Skip to content

Include metadata in mcap merge #3219

Include metadata in mcap merge

Include metadata in mcap merge #3219

Workflow file for this run

name: CI
on:
push:
branches: [main]
tags: ["releases/**", "go/mcap/*"]
pull_request:
branches: ["*"]
jobs:
spellcheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
lfs: true
- uses: actions/setup-node@v3
with:
node-version: 16.x
cache: yarn
- run: corepack enable && yarn install --immutable
- run: echo '::add-matcher::.github/cspell-problem-matcher.json'
- run: yarn spellcheck --no-progress
conformance-lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
lfs: true
- uses: actions/setup-node@v3
with:
node-version: 16.x
cache: yarn
- run: corepack enable && yarn install --immutable
- run: yarn workspace @foxglove/mcap-conformance lint:ci
- run: yarn workspace @foxglove/mcap-conformance typecheck
conformance-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
lfs: true
- uses: actions/setup-node@v3
with:
node-version: 16.x
cache: yarn
- uses: actions/cache@v3
with:
path: ~/.conan/data
key: ${{ runner.os }}-${{ hashFiles('cpp/**/conanfile.py') }}
- run: cd cpp && make ci
- run: corepack enable && yarn install --immutable
- run: yarn test:conformance:generate-inputs --verify
- run: yarn test:conformance --runner cpp-
conformance-go:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
lfs: true
- uses: actions/setup-node@v3
with:
node-version: 16.x
cache: yarn
- uses: actions/setup-go@v4
with:
go-version-file: go/go.work
- run: cd go && make build-conformance-binaries
- run: corepack enable && yarn install --immutable
- run: yarn test:conformance:generate-inputs --verify
- run: yarn test:conformance --runner go-
conformance-python:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
lfs: true
- uses: actions/setup-node@v3
with:
node-version: 16.x
cache: yarn
- uses: actions/setup-python@v4
with:
python-version: 3.7
- run: cd python && pip install -e mcap
- run: corepack enable && yarn install --immutable
- run: yarn test:conformance:generate-inputs --verify
- run: yarn test:conformance --runner py-
conformance-typescript:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
lfs: true
- uses: actions/setup-node@v3
with:
node-version: 16.x
cache: yarn
- run: corepack enable && yarn install --immutable
- run: yarn test:conformance:generate-inputs --verify
- run: yarn test:conformance --runner ts-
conformance-kaitai-struct:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
lfs: true
- uses: actions/setup-node@v3
with:
node-version: 16.x
cache: yarn
- run: corepack enable && yarn install --immutable
- run: yarn test:conformance:generate-inputs --verify
- run: yarn test:conformance --runner ksy-
conformance-swift:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
lfs: true
- uses: actions/setup-node@v3
with:
node-version: 16.x
cache: yarn
- uses: swift-actions/setup-swift@v1
with:
swift-version: "5.7"
- run: swift build
- run: corepack enable && yarn install --immutable
- run: yarn test:conformance:generate-inputs --verify
- run: yarn test:conformance --runner swift-
conformance-rust:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
lfs: true
- uses: actions/setup-node@v3
with:
node-version: 16.x
cache: yarn
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
- run: cd rust && cargo build --example=conformance_reader
- run: corepack enable && yarn install --immutable
- run: yarn test:conformance:generate-inputs --verify
- run: yarn test:conformance --runner rust-
cpp:
runs-on: ubuntu-latest
defaults:
run:
working-directory: cpp
steps:
- uses: actions/checkout@v3
with:
lfs: true
- uses: actions/cache@v3
with:
path: ~/.conan/data
key: ${{ runner.os }}-${{ hashFiles('cpp/**/conanfile.py') }}
- uses: satackey/action-docker-layer-caching@v0.0.11
continue-on-error: true
- run: make ci-format-check
- run: make ci
- run: make test-host
- run: make test-examples-host
- run: make run-examples-host
cpp-windows:
runs-on: windows-latest
defaults:
run:
working-directory: cpp
steps:
- uses: actions/checkout@v3
with:
lfs: true
- uses: actions/cache@v3
with:
path: ~/.conan/data
key: ${{ runner.os }}-${{ hashFiles('cpp/**/conanfile.py') }}
- uses: actions/setup-python@v4
with:
python-version: 3.7
- run: pip install conan~=1.0
- run: bash build.sh --build-tests-only
- run: ./test/build/Debug/bin/unit-tests
typescript:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16.x
cache: yarn
registry-url: https://registry.npmjs.org
- run: corepack enable && yarn install --immutable
- run: yarn dedupe --check
- run: yarn prettier:check
- run: yarn workspace @mcap/core lint:ci
- run: yarn workspace @mcap/core typecheck
- run: yarn workspace @mcap/core test
- name: Publish to NPM
if: ${{ startsWith(github.ref, 'refs/tags/releases/typescript/core/v') }}
run: yarn workspace @mcap/core npm publish --access public
env:
YARN_NPM_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
typescript-examples:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16.x
cache: yarn
- run: corepack enable && yarn install --immutable
- run: yarn workspace @foxglove/mcap-benchmarks lint:ci
- run: yarn workspace @foxglove/mcap-benchmarks typecheck
- run: yarn workspace @foxglove/mcap-example-validate lint:ci
- run: yarn workspace @foxglove/mcap-example-validate typecheck
- run: yarn workspace @foxglove/mcap-example-bag2mcap lint:ci
- run: yarn workspace @foxglove/mcap-example-bag2mcap typecheck
- run: yarn workspace @foxglove/mcap-example-basicwriter lint:ci
- run: yarn workspace @foxglove/mcap-example-basicwriter lint:ci
- run: yarn workspace @foxglove/mcap-example-flatbufferswriter typecheck
- run: yarn workspace @foxglove/mcap-example-flatbufferswriter typecheck
python:
runs-on: ubuntu-latest
defaults:
run:
working-directory: python
steps:
- uses: actions/checkout@v3
with:
lfs: true
- uses: actions/setup-python@v4
with:
python-version: 3.7
- run: pip install pipenv==2023.2.4
- run: make lint
- run: make test
- run: make examples
- run: make build
- name: Publish mcap to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
if: ${{ !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' }}
with:
user: __token__
password: ${{ secrets.TESTPYPI_API_TOKEN }}
packages_dir: python/mcap/dist
repository_url: https://test.pypi.org/legacy/
skip_existing: true
- name: Publish mcap-protobuf-support to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
if: ${{ !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' }}
with:
user: __token__
password: ${{ secrets.TESTPYPI_API_TOKEN }}
repository_url: https://test.pypi.org/legacy/
skip_existing: true
packages_dir: python/mcap-protobuf-support/dist
- name: Publish mcap-ros1-support to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
if: ${{ !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' }}
with:
user: __token__
password: ${{ secrets.TESTPYPI_API_TOKEN }}
repository_url: https://test.pypi.org/legacy/
skip_existing: true
packages_dir: python/mcap-ros1-support/dist
- name: Publish mcap-ros2-support to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
if: ${{ !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' }}
with:
user: __token__
password: ${{ secrets.TESTPYPI_API_TOKEN }}
repository_url: https://test.pypi.org/legacy/
skip_existing: true
packages_dir: python/mcap-ros2-support/dist
- name: Publish mcap to PyPI
if: |
!github.event.pull_request.head.repo.fork &&
startsWith(github.ref, 'refs/tags/releases/python/mcap/v')
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
packages_dir: python/mcap/dist
- name: Publish mcap-protobuf-support to PyPI
if: |
!github.event.pull_request.head.repo.fork &&
startsWith(github.ref, 'refs/tags/releases/python/mcap-protobuf-support/v')
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
packages_dir: python/mcap-protobuf-support/dist
- name: Publish mcap-ros1-support to PyPI
if: |
!github.event.pull_request.head.repo.fork &&
startsWith(github.ref, 'refs/tags/releases/python/mcap-ros1-support/v')
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
packages_dir: python/mcap-ros1-support/dist
- name: Publish mcap-ros2-support to PyPI
if: |
!github.event.pull_request.head.repo.fork &&
startsWith(github.ref, 'refs/tags/releases/python/mcap-ros2-support/v')
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
packages_dir: python/mcap-ros2-support/dist
go:
runs-on: ubuntu-latest
defaults:
run:
working-directory: go
steps:
- uses: actions/checkout@v3
with:
lfs: true
- uses: actions/setup-go@v4
with:
go-version-file: go/go.work
- name: install golangci-lint
run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.49.0
- run: make lint
- run: make test
- name: Check library version
if: |
!github.event.pull_request.head.repo.fork &&
startsWith(github.ref, 'refs/tags/go/mcap/v')
run: make -C cli/mcap build && ./check_tag.sh cli/mcap/bin/mcap
go-release-cli:
permissions:
contents: write
needs:
- go
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/releases/mcap-cli/v')
defaults:
run:
working-directory: go/cli/mcap
strategy:
fail-fast: false
matrix:
include:
- os: linux
image: ubuntu-latest
arch: amd64
env: {}
- os: linux
image: ubuntu-latest
arch: arm64
setup: sudo apt-get update && sudo apt-get install -qq gcc-aarch64-linux-gnu
env:
CC: aarch64-linux-gnu-gcc
CXX: aarch64-linux-gnu-g++
- os: macos
image: macos-latest
arch: amd64
env: {}
- os: macos
image: macos-latest
arch: arm64
env: {}
- os: windows
image: windows-latest
arch: amd64
env: {}
name: Build (${{ matrix.os }}/${{ matrix.arch }})
runs-on: ${{ matrix.image }}
env: ${{ matrix.env }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: "0"
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- uses: actions/setup-go@v4
with:
go-version-file: go/go.work
- name: Setup environment
run: ${{ matrix.setup }}
- name: Build binary
run: make build
env:
GOARCH: ${{ matrix.arch }}
OUTPUT: mcap-${{ matrix.os }}-${{ matrix.arch }}
- name: Make release notes
run: |
git log --oneline --no-merges --first-parent --grep CLI --decorate-refs=refs $(git describe --tags $(git rev-list --tags=releases/mcap-cli --max-count=1))..HEAD > ${{ github.workspace }}-CHANGELOG.txt
- name: Release
uses: softprops/action-gh-release@v1
with:
files: ./go/cli/mcap/bin/*
body_path: ${{ github.workspace }}-CHANGELOG.txt
draft: false
update-homebrew-formula:
needs:
- go-release-cli
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/releases/mcap-cli/v')
runs-on: ubuntu-latest
steps:
- name: Extract version
id: extract-version
run: |
printf "::set-output name=%s::%s\n" version-number "${GITHUB_REF#refs/tags/releases/mcap-cli/v}"
- uses: mislav/bump-homebrew-formula-action@a1aa5acee0698beefeac8f69f2eb8a5f292bf8bb
with:
formula-name: mcap
# https://github.com/mislav/bump-homebrew-formula-action/issues/58
formula-path: Formula/m/mcap.rb
push-to: foxglove/homebrew-core
commit-message: |
{{formulaName}} ${{ steps.extract-version.outputs.version-number }}
Created by https://github.com/mislav/bump-homebrew-formula-action
cc @foxglove/mcap-cli-maintainers
env:
COMMITTER_TOKEN: ${{ secrets.HOMEBREW_GITHUB_TOKEN }}
swift:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
lfs: true
- uses: swift-actions/setup-swift@v1
with:
swift-version: "5.7"
- run: docker run -t --rm -v $(pwd):/work -w /work ghcr.io/realm/swiftlint:0.49.1
- run: docker run -t --rm -v $(pwd):/work ghcr.io/nicklockwood/swiftformat:0.49.18 --lint /work
- run: swift build
- run: swift test
rust:
runs-on: ubuntu-latest
defaults:
run:
working-directory: rust
steps:
- uses: actions/checkout@v3
with:
lfs: true
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
components: "rustfmt, clippy"
- run: cargo fmt --all -- --check
- run: cargo clippy -- --no-deps
- run: cargo build
- run: cargo test
- name: "publish to crates.io"
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/releases/rust/v')
run: cargo publish --token ${{ secrets.RUST_CRATES_IO_TOKEN }}