Smart changelog (#5205)

Added a smart Changelog :

- Publish the Changelog before the app release. If the release has not
yet been pushed to production, do not display it.
- When the app release is done, make the Changelog available with the
correct date.
- If the Changelog writing is delayed because the release has already
been made, publish it immediately.
- Display everything locally to be able to iterate on the changelog and
have a preview

Added an endpoint for the Changelog

---------

Co-authored-by: Ady Beraud <a.beraud96@gmail.com>
Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
This commit is contained in:
Ady Beraud
2024-05-01 09:35:11 +03:00
committed by GitHub
parent bf7c4a5a89
commit df5cb9a904
17 changed files with 232 additions and 11 deletions

View File

@ -0,0 +1,41 @@
import { desc } from 'drizzle-orm';
import { getGithubReleaseDateFromReleaseNote } from '@/app/releases/utils/get-github-release-date-from-release-note';
import { getReleases } from '@/app/releases/utils/get-releases';
import { getVisibleReleases } from '@/app/releases/utils/get-visible-releases';
import { findAll } from '@/database/database';
import { GithubReleases, githubReleasesModel } from '@/database/model';
export const dynamic = 'force-dynamic';
export async function GET() {
try {
const githubReleases = (await findAll(
githubReleasesModel,
desc(githubReleasesModel.publishedAt),
)) as GithubReleases[];
const latestGithubRelease = githubReleases[0];
const releaseNotes = await getReleases();
const visibleReleasesNotes = getVisibleReleases(
releaseNotes,
latestGithubRelease.tagName,
);
const formattedReleasesNotes = visibleReleasesNotes.map((releaseNote) => ({
...releaseNote,
publishedAt: getGithubReleaseDateFromReleaseNote(
githubReleases,
releaseNote.release,
releaseNote.date,
),
}));
return Response.json(formattedReleasesNotes);
} catch (error: any) {
return new Response(`Github releases error: ${error?.message}`, {
status: 500,
});
}
}