diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1716eb9..2671488 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -103,8 +103,49 @@ jobs: echo "Newest tag ${new_tag} does not match package.json version ${package_version}" >&2 exit 1 fi + + package_name="$(node -p "JSON.parse(require('fs').readFileSync('package.json', 'utf8')).name")" + package_url="https://www.npmjs.com/package/${package_name}/v/${package_version}" + release_url="${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/releases/tag/${new_tag}" + repo_url="${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}" + + if [ -n "${PREVIOUS_TAG}" ]; then + changelog="$(git log --no-merges --reverse --pretty='format:- %s (%H-%h)' "${PREVIOUS_TAG}..${new_tag}" | grep -v '^- chore(release): ' || true)" + else + changelog="$(git log --no-merges --reverse --pretty='format:- %s (%H-%h)' "${new_tag}" | grep -v '^- chore(release): ' || true)" + fi + + if [ -z "${changelog}" ]; then + changelog='- No additional commits listed.' + else + changelog="$(printf '%s\n' "${changelog}" | sed -E -e 's,\(([a-f0-9]+)-([a-f0-9]+)\),([`\2`]('"${repo_url}"'/commit/\1)),g' | sed -E -e 's,\(#([0-9]+)\),([#\1]('"${repo_url}"'/pull/\1)),g')" + fi + echo "released=true" >> "$GITHUB_OUTPUT" echo "version=${package_version}" >> "$GITHUB_OUTPUT" + { + echo "message<> "$GITHUB_OUTPUT" + + - name: Announce release in Comms + if: ${{ steps.published.outputs.released == 'true' }} + uses: Doist/comms-actions/post-comment-action@aeeefe3270ad30d0c4cdd7dbf94b2fac1dcb8ceb + with: + comms-client-id: ${{ secrets.COMMS_DOISTBOT_CLIENT_ID }} + comms-client-secret: ${{ secrets.COMMS_DOISTBOT_CLIENT_SECRET }} + comms-username: ${{ secrets.COMMS_DOISTBOT_USER }} + comms-password: ${{ secrets.COMMS_DOISTBOT_PASSWORD }} + workspace-id: 69 + thread-id: CZER8KY4dS7idQxrb8hvg + content: ${{ steps.published.outputs.message }} + audience: thread + continue-on-error: true - name: Generate todoist-ai-integrations token if: ${{ !cancelled() && steps.published.outputs.released == 'true' }}