Skip to content

Commit

Permalink
feat: client ui frontend scaffolding
Browse files Browse the repository at this point in the history
In this PR:
- UI frontend scaffolding
- Github Action for frontend and backend

Most of the content of this PR is extract from https://github.com/patternfly/patternfly-react-seed/tree/v6. Thank you so much patternfly team for the seed!

Signed-off-by: Eder Ignatowicz <ignatowicz@gmail.com>
  • Loading branch information
ederign committed Jun 21, 2024
1 parent 0ff4d03 commit 87b632e
Show file tree
Hide file tree
Showing 28 changed files with 19,845 additions and 0 deletions.
36 changes: 36 additions & 0 deletions .github/workflows/ui-bff-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: UI - BFF - Test and Build
on:
push:
branches:
- 'main'
pull_request:
paths-ignore:
- 'LICENSE*'
- 'DOCKERFILE*'
- '**.gitignore'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.22.2'

- name: Build
working-directory: workspaces/backend
run: make build

- name: Check if there are uncommitted file changes
working-directory: workspaces/backend
run: |
clean=$(git status --porcelain)
if [[ -z "$clean" ]]; then
echo "Empty git status --porcelain: $clean"
else
echo "Uncommitted file changes detected: $clean"
git diff
exit 1
fi
48 changes: 48 additions & 0 deletions .github/workflows/ui-frontend-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: UI - Frontend - Test and Build
on:
push:
branches:
- 'main'
pull_request:
paths-ignore:
- 'LICENSE*'
- 'DOCKERFILE*'
- '**.gitignore'
jobs:
test-and-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '20'

- name: Install dependencies
working-directory: workspaces/frontend
run: npm install

- name: Run tests
working-directory: workspaces/frontend
run: npm run test:coverage

- name: Clean
working-directory: workspaces/frontend
run: npm run clean

- name: Build
working-directory: workspaces/frontend
run: npm run build

- name: Check if there are uncommitted file changes
working-directory: workspaces/frontend
run: |
clean=$(git status --porcelain)
if [[ -z "$clean" ]]; then
echo "Empty git status --porcelain: $clean"
else
echo "Uncommitted file changes detected: $clean"
git diff
exit 1
fi
8 changes: 8 additions & 0 deletions workspaces/frontend/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
**/node_modules
dist
yarn-error.log
yarn.lock
stats.json
coverage
.idea
.env
43 changes: 43 additions & 0 deletions workspaces/frontend/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Kubeflow Workspaces Frontend
The Kubeflow Workspaces Frontend is the web application used by the Kubeflow Workspaces as part of [Kubeflow Notebooks 2.0](https://github.com/kubeflow/kubeflow/issues/7156).

> ⚠️ __Warning__ ⚠️
>
> The Kubeflow Workspaces Frontend is a work in progress and is __NOT__ currently ready for use.
> We greatly appreciate any contributions.

## Pre-requisites:

TBD

## Development

```sh
# Install development/build dependencies
npm install

# Start the development server
npm run start:dev

# Run a production build (outputs to "dist" dir)
npm run build

# Run the test suite
npm run test

# Run the test suite with coverage
npm run test:coverage

# Run the linter
npm run lint

# Run the code formatter
npm run format

# Launch a tool to inspect the bundle size
npm run bundle-profile:analyze

# Start the express server (run a production build first)
npm run start
```
1 change: 1 addition & 0 deletions workspaces/frontend/__mocks__/styleMock.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = {};
32 changes: 32 additions & 0 deletions workspaces/frontend/jest.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// For a detailed explanation regarding each configuration property, visit:
// https://jestjs.io/docs/en/configuration.html

module.exports = {
// Automatically clear mock calls and instances between every test
clearMocks: true,

// Indicates whether the coverage information should be collected while executing the test
collectCoverage: false,

// The directory where Jest should output its coverage files
coverageDirectory: 'coverage',

// An array of directory names to be searched recursively up from the requiring module's location
moduleDirectories: [
'node_modules',
'<rootDir>/src'
],

// A map from regular expressions to module names that allow to stub out resources with a single module
moduleNameMapper: {
'\\.(css|less)$': '<rootDir>/__mocks__/styleMock.js',
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '<rootDir>/__mocks__/fileMock.js',
'@app/(.*)': '<rootDir>/src/app/$1'
},

// A preset that is used as a base for Jest's configuration
preset: 'ts-jest/presets/js-with-ts',

// The test environment that will be used for testing.
testEnvironment: 'jsdom'
};
Loading

0 comments on commit 87b632e

Please sign in to comment.