Include metadata in mcap merge #3219
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: 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 }} |