diff --git a/Formula/yetus.rb b/Formula/yetus.rb
index eec276a..e149b3d 100644
--- a/Formula/yetus.rb
+++ b/Formula/yetus.rb
@@ -18,7 +18,7 @@
 class Yetus < Formula
   desc "Enable contribution and release processes for software projects"
   homepage "https://yetus.apache.org/"
-  url "https://www.apache.org/dyn/closer.lua?path=/yetus/0.12.0/apache-yetus-0.12.0-bin.tar.gz"
+  url "https://www.apache.org/dyn/closer.cgi?filename=/yetus/0.12.0/apache-yetus-0.12.0-bin.tar.gz&action=download"
   sha256 "295e01b710d68152a85c73d5bf70b1189818219f9146c2981e1623df3414232b"
 
   option "with-all", "Build with all dependencies. Note that some dependencies such as "\
diff --git a/release.sh b/release.sh
new file mode 100755
index 0000000..3412fb4
--- /dev/null
+++ b/release.sh
@@ -0,0 +1,67 @@
+#!/usr/bin/env bash
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# SHELLDOC-IGNORE
+
+USER_NAME=${SUDO_USER:=$USER}
+USER_ID=$(id -u "${USER_NAME}")
+
+usage() {
+  cat <<EOF
+$0 YETUS-xxx 0.0.0
+EOF
+  exit 1
+}
+
+cleanup() {
+  git checkout --force main
+  exit 1
+}
+
+verifyparams() {
+
+  if [[ $# -ne 2 ]]; then
+    usage
+  fi
+
+  JIRAISSUE=$1
+  VERSION=$2
+
+  if [[ ! "${JIRAISSUE}" =~ YETUS- ]]; then
+      echo "ERROR: Bad JIRA issue format."
+      usage
+  fi
+}
+
+verifyparams "$@"
+
+trap cleanup INT QUIT TRAP ABRT BUS SEGV TERM ERR
+
+set -x
+
+git clean -xdf
+git checkout --force main
+git fetch origin
+git rebase origin/main
+
+docker run -i \
+  -v "${PWD}:/src" \
+  -u "${USER_ID}" \
+  "apache/yetus:main" \
+    ./update-homebrew.sh "${VERSION}"
+
+git commit -a -S -m "${JIRAISSUE}. Release ${VERSION}"
diff --git a/update-homebrew.sh b/update-homebrew.sh
new file mode 100755
index 0000000..0cf2038
--- /dev/null
+++ b/update-homebrew.sh
@@ -0,0 +1,76 @@
+#!/usr/bin/env bash
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# SHELLDOC-IGNORE
+
+this="${BASH_SOURCE-$0}"
+thisdir=$(cd -P -- "$(dirname -- "${this}")" >/dev/null && pwd -P)
+
+pushd "${thisdir}" >/dev/null || exit 1
+
+
+if [[ ! -d Formula ]]; then
+  echo "ERROR: Confused about directory structure."
+  exit 1
+fi
+
+VERSION=$1
+
+if [[ -z "${VERSION}" ]]; then
+  echo "ERROR: need a version"
+  exit 1
+fi
+
+newfile=/tmp/versionsedit.$$
+
+sed -E -i "s,[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+,${VERSION},g" Formula/yetus.rb
+
+URL=$(awk '/url/ {print $NF}' Formula/yetus.rb)
+URL=${URL//\"/}
+
+curl --location --fail --output "/tmp/yetus-binary.tgz" "${URL}"
+
+
+if ! tar tzf /tmp/yetus-binary.tgz >/dev/null; then
+  echo "ERROR: Failed to download a tgz file from ${URL}"
+  exit 1
+fi
+
+SHA256=$(sha256sum /tmp/yetus-binary.tgz)
+SHA256=${SHA256%% *}
+
+rm /tmp/yetus-binary.tgz
+
+echo "Got SHA256: ${SHA256}"
+
+## NOTE: $REPLY, the default for read, is used
+## here because it will maintain any leading spaces!
+## if read is given a variable, then IFS manipulation
+## will be required!
+
+while read -r; do
+  if [[ "${REPLY}" =~ sha256 ]]; then
+    echo "  sha256 \"${SHA256}\"" >> "${newfile}"
+  else
+    echo "${REPLY}" >> "${newfile}"
+  fi
+done < Formula/yetus.rb
+
+mv "${newfile}" Formula/yetus.rb
+
+
+
