feat: implement version bump workflow and display app version on DashboardPage

This commit is contained in:
2026-03-26 17:46:09 -03:00
parent 4649aba1d4
commit a96f892dab
5 changed files with 81 additions and 0 deletions

60
.github/workflows/bump-version.yml vendored Normal file
View File

@@ -0,0 +1,60 @@
name: Bump Frontend Version
on:
workflow_dispatch:
inputs:
bump:
description: Version bump type
required: true
default: patch
type: choice
options:
- patch
- minor
- major
permissions:
contents: write
jobs:
bump-version:
name: Bump frontend package version
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Node 20
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Bump frontend version
working-directory: frontend
run: npm version ${{ inputs.bump }} --no-git-tag-version
- name: Commit and push version update
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add frontend/package.json
if [ -f frontend/package-lock.json ]; then
git add frontend/package-lock.json
fi
if git diff --cached --quiet; then
echo "No version changes to commit"
exit 0
fi
NEW_VERSION=$(node -p "require('./frontend/package.json').version")
TAG_NAME="frontend-v${NEW_VERSION}"
git commit -m "chore(frontend): bump version to ${NEW_VERSION}"
if git rev-parse "${TAG_NAME}" >/dev/null 2>&1; then
echo "Tag ${TAG_NAME} already exists"
exit 1
fi
git tag -a "${TAG_NAME}" -m "Frontend ${NEW_VERSION}"
git push
git push origin "${TAG_NAME}"

View File

@@ -0,0 +1,11 @@
import { render, screen } from '@testing-library/react'
import { describe, expect, it } from 'vitest'
import DashboardPage from '@/pages/DashboardPage'
describe('DashboardPage', () => {
it('should_display_app_version_when_rendered', () => {
render(<DashboardPage />)
expect(screen.getByText(/version 0.1.0/i)).toBeInTheDocument()
})
})

View File

@@ -1,8 +1,11 @@
export default function DashboardPage() { export default function DashboardPage() {
const appVersion = __APP_VERSION__
return ( return (
<div className="p-8"> <div className="p-8">
<h1 className="text-2xl font-bold text-gray-900">Dashboard</h1> <h1 className="text-2xl font-bold text-gray-900">Dashboard</h1>
<p className="mt-2 text-sm text-gray-500">Dashboard coming in Step 11.</p> <p className="mt-2 text-sm text-gray-500">Dashboard coming in Step 11.</p>
<p className="mt-2 text-xs text-gray-400">Version {appVersion}</p>
</div> </div>
) )
} }

3
frontend/src/vite-env.d.ts vendored Normal file
View File

@@ -0,0 +1,3 @@
/// <reference types="vite/client" />
declare const __APP_VERSION__: string

View File

@@ -1,10 +1,14 @@
import { defineConfig } from 'vite' import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react' import react from '@vitejs/plugin-react'
import path from 'path' import path from 'path'
import packageJson from './package.json'
// https://vitejs.dev/config/ // https://vitejs.dev/config/
export default defineConfig({ export default defineConfig({
plugins: [react()], plugins: [react()],
define: {
__APP_VERSION__: JSON.stringify(packageJson.version),
},
resolve: { resolve: {
alias: { alias: {
'@': path.resolve(__dirname, './src'), '@': path.resolve(__dirname, './src'),