Skip to content

FlatBuffers release process

Wouter van Oortmerssen edited this page Apr 12, 2021 · 31 revisions

Steps to release a new version of FlatBuffers to github:

  • Change the version number in base.h, package.json, pom.xml (and various such files in grpc/), CMakeLists.txt (FlatBuffers_Library_SONAME_FULL), CMake/Version.cmake, dart/pubspec.yaml, rust/cargo.toml (not same as FlatBuffers version), Constants.java, FlatBufferConstants.cs, idl_gen_java/csharp/kotlin/swift.cpp
  • re-build flatc
  • runs generate_code.sh to ensure there's no missing files.
    • And also because the version number is in some generated files.
    • Also run SwiftTest.sh in tests/FlatBuffers.Test.Swift since it generates code (FIXME)
    • ../../../../flatc --swift --grpc greeter.fbs in tests/FlatBuffers.GRPC.Swift/Sources/Model (FIXME)
  • (search for 1.12 and 1_12 to be sure).
  • push to github.
  • Update the documentation remote branch gh-pages that hosts what is shown at http://google.github.io/flatbuffers/ using something like (warning, this will go live instantly):
    • cd docs/source
    • doxygen
    • cd ../../.. (one up from flatbuffers root)
    • git clone -b gh-pages --single-branch https://github.com/google/flatbuffers.git gh-pages
    • cd gh-pages
    • cp -r ../flatbuffers/docs/html/* .
    • git add *
    • git commit
    • git push
    • cd ..
    • rm -rf gh-pages flatbuffers/docs/html
  • Tag this release by version number, e.g.:
    • git tag -a -m "FlatBuffers release 1.0.0" v1.0.0
  • git push yourgithubremotename v1.0.0
  • On the github releases page, add a release description to this tag, with a description of what changed etc.
    • Also add flatc binaries from the last CI run for win/lin/mac
  • For JS:
    • (version has already been changed in package.json)
    • (on npm <4.0): npm run append-esm-export
    • npm publish
    • (note npm adduser needs a newer node than what's available on my machine?)
    • Check changes are on: https://www.npmjs.com/package/flatbuffers
  • For Java:
    • (version already changed in pom.xml)
    • mvn clean deploy -P release
    • Not needed / working?
      • mvn release:clean release:prepare
      • mvn release:perform
    • (see http://central.sonatype.org/pages/apache-maven.html for details).
    • This requires an account with oss.sonatype.org, a gpg key registered with a keyserver, and your user/pass in .m2/settings.xml (Maven) to work, among other mysterious things.
    • Note: some of the above commands tend to error out, since it is all some crazy async complex system.. but it will then succeed later anyway (shows up the new version on maven central).
    • For gRPC:
  • For Dart:
  • For Python:
  • For Rust:
    • Tell @rw to upload after release.
  • For C#:
Clone this wiki locally