diff --git a/CHANGELOG.md b/CHANGELOG.md
index f65e713..375bca5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,204 @@
+## Release 0.17.1 (2018-09-14)
+
+```
+Baseline: aa118ca818baf722aede0bc48d0a17584fa45b6e
+
+Cherry picks:
+   + 0e0462589528154cb5160411991075a2000b5452:
+     Update checker framework dataflow and javacutil versions
+   + 3987300d6651cf0e6e91b395696afac6913a7d66:
+     Stop using --release in versioned java_toolchains
+   + 438b2773b8c019afa46be470b90bcf70ede7f2ef:
+     make_deb: Add new empty line in the end of conffiles file
+   + 504401791e0a0e7e3263940e9e127f74956e7806:
+     Properly mark configuration files in the Debian package.
+   + 9ed9d8ac4347408d15c8fce7c9c07e5c8e658b30:
+     Add flag
+     --incompatible_symlinked_sandbox_expands_tree_artifacts_in_runfil
+     es_tree.
+   + 22d761ab42dfb1b131f1facbf490ccdb6c17b89c:
+     Update protobuf to 3.6.1 -- add new files
+   + 27303d79c38f2bfa3b64ee7cd7a6ef03a9a87842:
+     Update protobuf to 3.6.1 -- update references
+   + ddc97ed6b0367eb443e3e09a28d10e65179616ab:
+     Update protobuf to 3.6.1 -- remove 3.6.0 sources
+   + ead1002d3803fdfd4ac68b4b4872076b19d511a2:
+     Fix protobuf in the WORKSPACE
+   + 12dcd35ef7a26d690589b0fbefb1f20090cbfe15:
+     Revert "Update to JDK 10 javac"
+   + 7eb9ea150fb889a93908d96896db77d5658e5005:
+     Automated rollback of
+     https://github.com/bazelbuild/bazel/commit/808ec9ff9b5cec14f23a4b
+     a106bc5249cacc8c54 and
+     https://github.com/bazelbuild/bazel/commit/4c9149d558161e7d3e363f
+     b697f5852bc5742a36 and some manual merging.
+   + 4566a428c5317d87940aeacfd65f1018340e52b6:
+     Fix tests on JDK 9 and 10
+   + 1e9f0aa89dad38eeab0bd40e95e689be2ab6e5e5:
+     Fix more tests on JDK 9 and 10
+   + a572c1cbc8c26f625cab6716137e2d57d05cfdf3:
+     Add ubuntu1804_nojava, ubuntu1804_java9, ubuntu1804_java10 to
+     postsubmit.
+   + 29f1de099e4f6f0f50986aaa4374fc5fb7744ee8:
+     Disable Android shell tests on the "nojava" platform.
+   + b495eafdc2ab380afe533514b3bcd7d5b30c9935:
+     Update bazel_toolchains to latest release.
+   + 9323c57607d37f9c949b60e293b573584906da46:
+     Windows: fix writing java.log
+   + 1aba9ac4b4f68b69f2d91e88cfa8e5dcc7cb98c2:
+     Automated rollback of commit
+     de22ab0582760dc95f33e217e82a7b822378f625.
+   + 2579b791c023a78a577e8cb827890139d6fb7534:
+     Fix toolchain_java9 on --host_javabase=<jdk9> after
+     7eb9ea150fb889a93908d96896db77d5658e5005
+   + 2834613f93f74e988c51cf27eac0e59c79ff3b8f:
+     Include also ext jars in the bootclasspath jar.
+```
+
+Incompatible changes:
+
+  - Loading @bazel_tools//tools/build_defs/repo:git_repositories.bzl
+    no longer works. Load @bazel_tools//tools/build_defs/repo:git.bzl
+    instead.
+  - If the same artifact is generated by two distinct but identical
+    actions, and a downstream action has both those actions' outputs
+    in its inputs, the artifact will now appear twice in the
+    downstream action's inputs. If this causes problems in Skylark
+    actions, you can use the uniquify=True argument in Args.add_args.
+  - If the same artifact is generated by two distinct but identical
+    actions, and a downstream action has both those actions' outputs
+    in its inputs, the artifact will now appear twice in the
+    downstream action's inputs. If this causes problems in Skylark
+    actions, you can use the uniquify=True argument in Args.add_args.
+  - Labels in C++ rules' linkopts attribute are not expanded anymore
+    unless they are wrapped, e.g: $(location //foo:bar)
+  - If the same artifact is generated by two distinct but identical
+    actions, and a downstream action has both those actions' outputs
+    in its inputs, the artifact will now appear twice in the
+    downstream action's inputs. If this causes problems in Skylark
+    actions, you can use the uniquify=True argument in Args.add_args.
+  - New bazelrc file list.
+  - Windows: when BAZEL_SH envvar is not defined and Bazel searches
+    for a suitable bash.exe, Bazel will no longer look for Git Bash
+    and no longer recommend installing it as a Bash implementation.
+    See issue #5751.
+  - New bazelrc file list.
+
+New features:
+
+  - The aquery command now supports --output=text.
+  - Java, runfiles: the Java runfiles library is now in
+    @bazel_tools//tools/java/runfiles. The old target
+    (@bazel_tools//tools/runfiles:java-runfiles) is deprecated and
+    will be removed in Bazel 0.18.0.
+  - Java, runfiles: the Java runfiles library is now in
+    @bazel_tools//tools/java/runfiles. The old target
+    (@bazel_tools//tools/runfiles:java-runfiles) is deprecated and
+    will be removed in Bazel 0.19.0 (not 0.18.0, as stated earlier).
+
+Important changes:
+
+  - Allow @ in package names.
+  - Remove support for java_runtime_suite; use alias() together with
+    select() instead.
+  - Python wrapper scripts for MSVC are removed.
+  - [JavaInfo] Outputs are merged in java_common.merge().
+  - Faster analysis by improved parallelization.
+  - --experimental_shortened_obj_file_path is removed.
+  - Introduce the --remote_cache_proxy flag,
+    which allows for remote http caching to connect
+    via a unix domain socket.
+  - No longer define G3_VERSION_INFO for c++ linkstamp compiles, as
+    it was a duplicate of G3_TARGET_NAME.
+  - Added support for Android NDK r17. The default STL is now
+    `libc++`, and support for targeting `mips`, `mips64` and `ARMv5`
+    (`armeabi`) has been removed.
+  - Add aquery command to get analysis time information about the
+    action graph.
+  - Fixed compatibility with aar_import when using aapt2.  AAPT2 is
+    now supported for Android app builds without resource shrinking.
+    To use it, pass the `--android_aapt=aapt2` flag or define
+    android_binary.aapt_version=aapt2.
+  - Code coverage is collected for Java binaries invoked from sh_test.
+  - java_common.compile creates the native headers jar accesible via
+    JavaInfo.outputs.native_headers.
+  - Deleting deprecated no-op flag --show_package_location
+  - The JDK shipped with Bazel was updated to JDK10.
+  - Rename the startup flag --host_javabase to --server_javabase to
+    avoid confusion with the build flag --host_javabase
+  - newly added options --experimental_repository_hash_file and
+      --experimental_verify_repository_rules allow to verify for
+    repositories
+      the directory generated against pre-recorded hashes. See
+    documentation
+      for those options.
+  - Removed the gen_jars output group
+  - --subcommands can now take a "pretty_print" value
+    ("--subcommands=pretty_print") to print the
+    arguments of subcommands as a list for easier reading.
+  - follow-up to
+    https://github.com/bazelbuild/bazel/commit/1ac359743176e659e9c7472
+    645e3142f3c44b9e8
+  - A rule error is now thrown if a Skylark rule implementation
+    function returns multiple providers of the same type.
+  - When using Bazel's remote execution feature and Bazel has to
+    fallback to local execution for an action, Bazel used
+    non-sandboxed
+    local execution until now. From this release on, you can use the
+    new
+    flag --remote_local_fallback_strategy=<strategy> to tell Bazel
+    which
+    strategy to use in that case.
+  - Execution Log Parser can now, when printing it out, filter the
+    log by runner type
+  - A rule error is now thrown if a Skylark rule implementation
+    function returns multiple providers of the same type.
+  - Removed the gen_jars output group
+  - Removed the gen_jars output group
+  - Set --defer_param_files to default to true.
+  - Sort attribute lists in proto-form query output to fix
+    non-deterministic genquery output.
+  - Replace 0/1 with False/True for testonly attribute
+  - bazel now supports a .bazelignore file specifying
+      directories to be ignored; however, these directories still
+      have to be well founded and, in particular, may not contain
+      symlink cycles.
+  - Add more detailed reporting of the differences between startup
+    options.
+  - update data binding to 3.2.0
+  - For Android incremental dexing actions, Bazel now persists its
+    DexBuilder process across individual actions. From our
+    benchmarks, this results in a 1.2x speedup for clean local builds.
+  - The standard `xcode_VERSION` feature now always uses exactly two
+    components in the version, even if you specify `--xcode_version`
+    with
+    more or fewer than two.
+  - A rule error will be thrown if a Skylark rule implementation
+    function returns multiple providers of the same type. Try the
+    `--incompatible_disallow_conflicting_providers` flag to ensure
+    your code is forward-compatible.
+  - Removed notion of FULLY_STATIC linking mode from C++ rules.
+  - In documentation, we've renamed Skylark into Starlark.
+  - Execution Log Parser can now, when printing it out, reorder the
+    actions for easier text diffs
+  - Linkstamps are no longer recompiled after server restart.
+  - Use VanillaJavaBuilder and disable header compilation in
+    toolchain_hostjdk8. The default toolchain will soon drop
+    compatibility with JDK 8. Using a JDK 8 host_javabase
+    will only be supported when using 'VanillaJavaBuilder' (which
+    does not support Error Prone,
+    Strict Java Deps, or reduced classpaths) and with header
+    compilation disabled.
+  - In the future, Bazel will expand tree artifacts in runfiles, too,
+    which causes the sandbox to link each file individually into the
+    sandbox directory, instead of symlinking the entire directory. In
+    this release, the behavior is not enabled by default yet. Please
+    try it out via
+    --incompatible_symlinked_sandbox_expands_tree_artifacts_in_runfile
+    s_tree and let us know if it causes issues. If everything looks
+    good, this behavior will become the default in a following
+    release.
+
 ## Release 0.16.1 (2018-08-13)
 
 ```
@@ -3146,3 +3347,4 @@
 
 
 
+
