Coder Social home page Coder Social logo

kubernetes-sigs / release-notes Goto Github PK

View Code? Open in Web Editor NEW
51.0 6.0 63.0 9.01 MB

This repo contains tooling around generating and publishing release notes for the Kubernetes organization.

Home Page: https://relnotes.k8s.io

License: Apache License 2.0

JavaScript 0.63% TypeScript 89.11% Shell 0.90% HTML 6.11% CSS 1.73% Dockerfile 0.97% SCSS 0.55%
k8s-sig-release

release-notes's Introduction

Release Notes

Build Version

A lightweight release notes UI to help users keep track of the ever-changing codebase for Kubernetes.

Development

Local requirements:

  • node/npm
  • golang > 1.11 (to run the release-notes JSON tool)
  • git clone https://github.com/kubernetes-sigs/release-notes.git (to generate any additional notes for development)

Run npm install && npm start from the root dir to start up the angular development server (on port 4200).

$ npm install
$ npm start
** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **

Any changes made to the front-end code (under src/) will automatically be reflected.

Build

To build and run the container container:

$ npm run docker:build:run

It will kick off a multi-stage docker build to handle building the angular code and dumping it in a nginx container.

Once complete, you can view it by going to localhost in your browser:

FAQ

Why?

Release notes can and should be better. Empowering end-users to view what they need, while also being able to highlight important info, is our goal.

It does involve some engineering effort, but this is a case where technology can help us and we should not incur much technical debt.

Also it's cool.

Can this be used for other projects?

With some changes, this could become a generic tool. There are no immediate plans to do that though.

Roadmap

Some of these may be blocked by external dependencies (such as GitHub labels not existing)

In no particular order:

  • Improved filtering and have selectable or/and logic.
  • Generate Security Content from PRs with area/security.
  • Generate Known Issues from issues with release milestones attached.
  • Generate New Features from PRs with area/feature label, though no idea how to differentiate what's "new" yet.
  • Create structure for Urgent Upgrade Notes that can be manually added to a generated release JSON file.
  • Create labels and write handling for a potential area/dependency label to help generate External Dependencies.
  • Add support for viewing "alpha" and "beta" release notes, though disabled by default.
  • Highlight labels that are selected.
  • Rewrite relationship between "options" and "notes"

Community, discussion, contribution, and support

Learn how to engage with the Kubernetes community on the community page.

You can reach the maintainers of this project at:

Code of conduct

Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.

release-notes's People

Contributors

amolmote avatar ashnehete avatar aurasinis avatar bhcleek avatar bridgetkromhout avatar cartyc avatar chalin avatar cici37 avatar csantanapr avatar damans227 avatar dependabot[bot] avatar fsmunoz avatar harshanarayana avatar jameslaverack avatar jeefy avatar justaugustus avatar k8s-ci-robot avatar kcmartin avatar laxmikantbpandhare avatar nikhita avatar parul5sahoo avatar puerco avatar ramrodo avatar rashansmith avatar rjsadow avatar sam-cogan avatar sanchita-07 avatar saschagrunert avatar wilsonehusin avatar yrs147 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

release-notes's Issues

Broken Link Issue

Bug Report

Problem
This page has one broken link of contributor cheat sheet which needs to fix.

solution
need to locate the correct path of README.

/assign
/kind bug
/kind documentation

Filter by "deprecation"

It would be great if release notes supported deprecation tags so it can be used in filters.

Rename `master` to `main`

The default git branch should be renamed to main to be more inclusive. All CI and docs changes have to be done as well.

Upgrade cypress to v10.x

Take a second look at #327 to upgrade the cypress to v10.x.

> [email protected] e2e-cy
> cypress run

Missing baseUrl in compilerOptions. tsconfig-paths will be skipped

====================================================================================================

  (Run Starting)

  ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
  │ Cypress:        10.8.0                                                                         │
  │ Browser:        Electron 102 (headless)                                                        │
  │ Node Version:   v18.9.0 (/usr/local/Cellar/node/18.9.0/bin/node)                               │
  │ Specs:          1 found (app.cy.ts)                                                            │
  │ Searched:       cypress/e2e/**/*.cy.{js,jsx,ts,tsx}                                            │
  └────────────────────────────────────────────────────────────────────────────────────────────────┘


────────────────────────────────────────────────────────────────────────────────────────────────────

  Running:  app.cy.ts                                                                       (1 of 1)


  Release Notes App
    ✓ should have the correct title (1463ms)
    ✓ should have everything visible (431ms)
    ✓ should show only entries for version '1.14.0' if selected (478ms)
    ✓ should show only entries for version '1.15.0' if selected (475ms)
    ✓ should show only 'kubelet' entries if selected (391ms)
    ✓ should be possible to filter two options together (499ms)
    ✓ should be possible to search entries (540ms)
    ✓ should be possible to open the 'About' page (476ms)
    1) should be open the 'Additional Documentation' tooltip on hover
    2) should be possible to open the 'Additional Documentation'
    ✓ should be possible to filter 'KEP' doc types (559ms)
    ✓ should be possible to filter 'external' doc types (489ms)
    ✓ should show double filtered documentation entries only once (697ms)
    ✓ should be possible to access the page with pre defined filter (589ms)
    3) should be possible to enable showing pre-releases
    4) should be possible to filter via the labels ('bug')
    5) should be possible to filter via the labels ('testing')


  12 passing (3m)
  5 failing

  1) Release Notes App
       should be open the 'Additional Documentation' tooltip on hover:
     AssertionError: Timed out retrying after 30000ms: Expected to find element: `.documentationTooltip`, but never found it.
      at Context.eval (webpack:///./cypress/e2e/app.cy.ts:184:33)

  2) Release Notes App
       should be possible to open the 'Additional Documentation':
     AssertionError: Timed out retrying after 30000ms: Expected to find element: `.documentationTooltip`, but never found it.
      at Context.eval (webpack:///./cypress/e2e/app.cy.ts:203:33)

  3) Release Notes App
       should be possible to enable showing pre-releases:
     AssertionError: Timed out retrying after 30000ms: Expected to find element: `#option-1-17-0-alpha-2`, but never found it.
      at Context.eval (webpack:///./cypress/e2e/app.cy.ts:281:23)

  4) Release Notes App
       should be possible to filter via the labels ('bug'):
     CypressError: Timed out retrying after 30050ms: `cy.click()` failed because this element:

`<span _ngcontent-wxa-c116="" class="k8s-badge float-sm-end badge rounded-pill text-bg-primary badge-kind">bug</span>`

is being covered by another element:

`<input _ngcontent-wxa-c118="" id="searchBar" type="search" placeholder="Search" aria-label="Search" class="form-control bg-dark text-white border-0 rounded-0 ng-untouched ng-pristine ng-valid" ng-reflect-model="">`

Fix this problem, or use {force: true} to disable error checking.

https://on.cypress.io/element-cannot-be-interacted-with
      at $Cy.ensureDescendents (http://localhost:4200/__cypress/runner/cypress_runner.js:147512:78)
      at ensureDescendents (http://localhost:4200/__cypress/runner/cypress_runner.js:132962:8)
      at ensureDescendentsAndScroll (http://localhost:4200/__cypress/runner/cypress_runner.js:132969:14)
      at ensureElIsNotCovered (http://localhost:4200/__cypress/runner/cypress_runner.js:133101:5)
      at runAllChecks (http://localhost:4200/__cypress/runner/cypress_runner.js:133291:52)
      at retryActionability (http://localhost:4200/__cypress/runner/cypress_runner.js:133315:16)
      at tryCatcher (http://localhost:4200/__cypress/runner/cypress_runner.js:11318:23)
      at Promise.attempt.Promise.try (http://localhost:4200/__cypress/runner/cypress_runner.js:8592:29)
      at whenStable (http://localhost:4200/__cypress/runner/cypress_runner.js:152495:65)
      at <unknown> (http://localhost:4200/__cypress/runner/cypress_runner.js:151949:14)
      at tryCatcher (http://localhost:4200/__cypress/runner/cypress_runner.js:11318:23)
      at Promise._settlePromiseFromHandler (http://localhost:4200/__cypress/runner/cypress_runner.js:9253:31)
      at Promise._settlePromise (http://localhost:4200/__cypress/runner/cypress_runner.js:9310:18)
      at Promise._settlePromise0 (http://localhost:4200/__cypress/runner/cypress_runner.js:9355:10)
      at Promise._settlePromises (http://localhost:4200/__cypress/runner/cypress_runner.js:9435:18)
      at Promise._fulfill (http://localhost:4200/__cypress/runner/cypress_runner.js:9379:18)
      at <unknown> (http://localhost:4200/__cypress/runner/cypress_runner.js:10993:46)
  From Your Spec Code:
      at Context.eval (webpack:///./cypress/e2e/app.cy.ts:293:42)

  5) Release Notes App
       should be possible to filter via the labels ('testing'):
     CypressError: Timed out retrying after 30050ms: `cy.click()` failed because this element:

`<span _ngcontent-xvi-c116="" class="k8s-badge float-sm-end badge rounded-pill text-bg-success badge-sig">testing</span>`

is being covered by another element:

`<input _ngcontent-xvi-c118="" id="searchBar" type="search" placeholder="Search" aria-label="Search" class="form-control bg-dark text-white border-0 rounded-0 ng-untouched ng-pristine ng-valid" ng-reflect-model="">`

Fix this problem, or use {force: true} to disable error checking.

https://on.cypress.io/element-cannot-be-interacted-with
      at $Cy.ensureDescendents (http://localhost:4200/__cypress/runner/cypress_runner.js:147512:78)
      at ensureDescendents (http://localhost:4200/__cypress/runner/cypress_runner.js:132962:8)
      at ensureDescendentsAndScroll (http://localhost:4200/__cypress/runner/cypress_runner.js:132969:14)
      at ensureElIsNotCovered (http://localhost:4200/__cypress/runner/cypress_runner.js:133101:5)
      at runAllChecks (http://localhost:4200/__cypress/runner/cypress_runner.js:133291:52)
      at retryActionability (http://localhost:4200/__cypress/runner/cypress_runner.js:133315:16)
      at tryCatcher (http://localhost:4200/__cypress/runner/cypress_runner.js:11318:23)
      at Promise.attempt.Promise.try (http://localhost:4200/__cypress/runner/cypress_runner.js:8592:29)
      at whenStable (http://localhost:4200/__cypress/runner/cypress_runner.js:152495:65)
      at <unknown> (http://localhost:4200/__cypress/runner/cypress_runner.js:151949:14)
      at tryCatcher (http://localhost:4200/__cypress/runner/cypress_runner.js:11318:23)
      at Promise._settlePromiseFromHandler (http://localhost:4200/__cypress/runner/cypress_runner.js:9253:31)
      at Promise._settlePromise (http://localhost:4200/__cypress/runner/cypress_runner.js:9310:18)
      at Promise._settlePromise0 (http://localhost:4200/__cypress/runner/cypress_runner.js:9355:10)
      at Promise._settlePromises (http://localhost:4200/__cypress/runner/cypress_runner.js:9435:18)
      at Promise._fulfill (http://localhost:4200/__cypress/runner/cypress_runner.js:9379:18)
      at <unknown> (http://localhost:4200/__cypress/runner/cypress_runner.js:10993:46)
  From Your Spec Code:
      at Context.eval (webpack:///./cypress/e2e/app.cy.ts:311:45)




  (Results)

  ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
  │ Tests:        17                                                                               │
  │ Passing:      12                                                                               │
  │ Failing:      5                                                                                │
  │ Pending:      0                                                                                │
  │ Skipped:      0                                                                                │
  │ Screenshots:  5                                                                                │
  │ Video:        false
  │ Duration:     2 minutes, 40 seconds                                                            │
  │ Spec Ran:     app.cy.ts                                                                        │
  └────────────────────────────────────────────────────────────────────────────────────────────────┘

DId a quick port of enabling the new cypress. But the tests are becoming flaky. The following changes are to be done first before processing the tests

  1. Move the cypress.json to cypress.config.ts
  2. Move cypress/integration to cypress/e2e
  3. cypress open and perform a migration and let is take care of the rest.

The mouseover tests are getting a bit flaky. Need to figure out why and fix what is required.

Feature request: RSS feed

Hi Everyone,

It would be great to have an RSS feed of the changes displayed on the site to enable automated notifications based on 3rd party services. I looked into the HTML source, and it is fully JS-based, so I tried to convert it with a self-hosted HRSS instance, but the JS won't load and displays an empty page. Even if you include a static index.xml file as an RSS feed (like e.g., Hugo does) that would be automatically rebuilt on new changes, it would greatly improve the experience and accessibility.

Cheers, Immánuel

Update unit testing to use jest

I'd like to suggest to switch to jest for unit testing purposes. It has a lots of great features and could be integrated well into the CI. I see the following steps needed to achieve this goal:

  • Add jest and drop karma dependency
  • Add jest configuration and verify unit tests (#27)
  • Add coverage report to CI including badge (#35)

Embeddable version

I'd like to add the release notes UI into a page with https://kubernetes.io/releases/

This issue is a feature request to provide an embeddable version of the site. For example: you add a single JavaScript script and a placeholder Web Component element into a web page, and as if by magic technology you see a UI for querying and viewing the release notes.

Migrate relnotes.k8s.io to Google Analytics 4 (GA4)

This issue is part of a CNCF-wide effort to upgrade project websites to GA4 since Google has deprecated Universal Analytics (UA). For more details, see:

Prerequisite

There is still an open discussion about which GA4 property to use. Currently the main thread is here: kubernetes/website#37801 (comment).

After discussions with @a-mccarthy, we've agreed to move forward with G-JPP6RFM2BP.

Tasks

  • Decide which GA4 property & measurement ID to use (see prerequisites above): G-JPP6RFM2BP
  • Connect UA ID from GA4 ID: won't connect back from GA4 ID to avoid sending non-relnotes events to the UA ID
  • Enable GA4 site tag via Netlify snippet injection (leaving the UA site tag in place), "Google Analytics 4 - only in production", just before </body>:
    {% if CONTEXT == 'production' %}
    <script async src="https://www.googletagmanager.com/gtag/js?id=G-JPP6RFM2BP"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
    
      gtag('config', 'G-JPP6RFM2BP');
    </script>
    {% endif %}
  • Confirm that the GA4 site tag is receiving events - confirmed by https://tagassistant.google.com
  • Confirm that the UA site tag (UA-98841695-4) is still receiving events - confirmed by https://tagassistant.google.com

Notes

Pre-migration website analytics info

Followup

/cc @caniszczyk @nate-double-u @a-mccarthy

Feature Request: Mark notes as read.

The ability to select/mark notes as read might be beneficial to some. It'd require using something like localStorage, but it's a thought worth discussing. :)

Add source code documentation via compodoc

The idea would be to create a source code documentation which pops out of the CI pipeline via compodoc. I see two necessary steps to achieve this goal:

  • Add the documentation target to package.json
  • Integrate the doc build into the CI
  • Update the source code documentation to match compodocs criteria

Tests/Preview build doesn't fail if a JSON file doesn't exist

Observed an issue where the JSON files were put in an incorrect folder but correctly-configured in the assets file.

The Netlify preview build and tests all passed successfully however the preview site was broken completely because the JSON files couldn't be found.

/priority important-soon
/kind bug

Add prettierrc

To have a consistent format I'd suggest to:

  • Add a .prettierrc.yml to the repository
  • Format the whole source code
  • Add a CI check which validates the right format

Feature Request: Improved tag filtering on https://relnotes.k8s.io/

Right now the search between the different sections uses OR logic for filtering tags.

It would be nice if the filtering logic was

OR within sections (areas, kinds, sigs)

&

AND between sections

This would allow the ability to do something like show me all security features in this release.

Area = Secure AND Kind = Feature

'npm start' gives error

This is a Bug Report

Problem:
While following README of this repo,
npm start gives error.

[How to reproduce]

❯ go env                                 
GO111MODULE="on"
❯ go get k8s.io/release/cmd/release-notes
(Downloads `k8s.io/[email protected]`)
❯ cd go/pkg/mod/k8s.io/[email protected]/
❯ ls -alh      
total 312K
dr-xr-xr-x 11 root root 4.0K Apr 20 09:52 .
drwxr-xr-x  3 root root 4.0K Apr 20 09:52 ..
dr-xr-xr-x  3 root root 4.0K Apr 20 09:52 .github
-r--r--r--  1 root root 2.2K Apr 20 09:52 .gitignore
-r--r--r--  1 root root 2.6K Apr 20 09:52 .golangci.yml
-r--r--r--  1 root root  641 Apr 20 09:52 CONTRIBUTING.md
-r--r--r--  1 root root 1.5K Apr 20 09:52 Dockerfile-kubepkg
-r--r--r--  1 root root 1.2K Apr 20 09:52 Dockerfile-kubepkg-rpm
-r--r--r--  1 root root  12K Apr 20 09:52 LICENSE
-r--r--r--  1 root root 4.4K Apr 20 09:52 Makefile
-r--r--r--  1 root root  242 Apr 20 09:52 OWNERS
-r--r--r--  1 root root 1.9K Apr 20 09:52 OWNERS_ALIASES
-r--r--r--  1 root root 4.0K Apr 20 09:52 README.md
-r--r--r--  1 root root 1.1K Apr 20 09:52 SECURITY.md
-r--r--r--  1 root root  581 Apr 20 09:52 SECURITY_CONTACTS
-r--r--r--  1 root root  923 Apr 20 09:52 cloudbuild-kubepkg.yaml
dr-xr-xr-x 12 root root 4.0K Apr 20 09:52 cmd
-r--r--r--  1 root root  148 Apr 20 09:52 code-of-conduct.md
-r--r--r--  1 root root 2.5K Apr 20 09:52 compile-release-tools
-r--r--r--  1 root root 9.0K Apr 20 09:52 dependencies.yaml
dr-xr-xr-x  3 root root 4.0K Apr 20 09:52 docs
dr-xr-xr-x  5 root root 4.0K Apr 20 09:52 gcb
-r--r--r--  1 root root 1.8K Apr 20 09:52 go.mod
-r--r--r--  1 root root 123K Apr 20 09:52 go.sum
dr-xr-xr-x  5 root root 4.0K Apr 20 09:52 hack
dr-xr-xr-x  6 root root 4.0K Apr 20 09:52 images
dr-xr-xr-x  2 root root 4.0K Apr 20 09:52 internal
dr-xr-xr-x  3 root root 4.0K Apr 20 09:52 packages
dr-xr-xr-x 27 root root 4.0K Apr 20 09:52 pkg
-r--r--r--  1 root root  56K Apr 20 09:52 push-build.sh
❯ npm install
npm WARN root No description
npm WARN root No repository field.
npm WARN root No license field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fork-ts-checker-webpack-plugin/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/watchpack-chokidar2/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

audited 1291 packages in 6.663s

57 packages are looking for funding
  run `npm fund` for details

found 11 vulnerabilities (1 low, 8 moderate, 2 high)
  run `npm audit fix` to fix them, or `npm audit` for details
❯ npm start  
npm ERR! missing script: start

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-04-20T00_55_06_868Z-debug.log

❯ npm run docker:build:run
npm ERR! missing script: docker:build:run

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-04-20T00_55_22_100Z-debug.log
❯ cd cmd/release-notes

❯ pwd            
/root/go/pkg/mod/k8s.io/[email protected]/cmd/release-notes

❯ ls -alh
total 36K
dr-xr-xr-x  2 root root 4.0K Apr 20 09:52 .
dr-xr-xr-x 12 root root 4.0K Apr 20 09:52 ..
-r--r--r--  1 root root  129 Apr 20 09:52 OWNERS
-r--r--r--  1 root root 9.3K Apr 20 09:52 README.md
-r--r--r--  1 root root  11K Apr 20 09:52 main.go
❯ npm install             
npm WARN root No description
npm WARN root No repository field.
npm WARN root No license field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fork-ts-checker-webpack-plugin/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/watchpack-chokidar2/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

audited 1291 packages in 6.459s

57 packages are looking for funding
  run `npm fund` for details

found 11 vulnerabilities (1 low, 8 moderate, 2 high)
  run `npm audit fix` to fix them, or `npm audit` for details
❯ npm start  
npm ERR! missing script: start

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-04-20T00_57_07_452Z-debug.log

❯ npm run docker:build:run
npm ERR! missing script: docker:build:run

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-04-20T00_57_27_893Z-debug.log

❯ cd
❯ GO111MODULE=off go get k8s.io/release/cmd/release-notes
cannot find package "github.com/google/go-github/v33/github" in any of:
        /usr/local/go/src/github.com/google/go-github/v33/github (from $GOROOT)
        /root/go/src/github.com/google/go-github/v33/github (from $GOPATH)
❯ cd go/src/k8s.io/release/
❯ ls -alh
total 308K
drwxr-xr-x 12 root root 4.0K Apr 20 09:46 .
drwxr-xr-x  3 root root 4.0K Apr 20 09:35 ..
drwxr-xr-x  8 root root 4.0K Apr 20 09:40 .git
drwxr-xr-x  3 root root 4.0K Apr 20 09:35 .github
-rw-r--r--  1 root root 2.2K Apr 20 09:35 .gitignore
-rw-r--r--  1 root root 2.6K Apr 20 09:35 .golangci.yml
-rw-r--r--  1 root root  641 Apr 20 09:35 CONTRIBUTING.md
-rw-r--r--  1 root root 1.5K Apr 20 09:35 Dockerfile-kubepkg
-rw-r--r--  1 root root 1.2K Apr 20 09:35 Dockerfile-kubepkg-rpm
-rw-r--r--  1 root root  12K Apr 20 09:35 LICENSE
-rw-r--r--  1 root root 4.4K Apr 20 09:35 Makefile
-rw-r--r--  1 root root  242 Apr 20 09:35 OWNERS
-rw-r--r--  1 root root 1.9K Apr 20 09:35 OWNERS_ALIASES
-rw-r--r--  1 root root 4.0K Apr 20 09:35 README.md
-rw-r--r--  1 root root 1.1K Apr 20 09:35 SECURITY.md
-rw-r--r--  1 root root  581 Apr 20 09:35 SECURITY_CONTACTS
-rw-r--r--  1 root root 1.1K Apr 20 09:35 cloudbuild-kubepkg.yaml
drwxr-xr-x 12 root root 4.0K Apr 20 09:35 cmd
-rw-r--r--  1 root root  148 Apr 20 09:35 code-of-conduct.md
-rwxr-xr-x  1 root root 2.5K Apr 20 09:35 compile-release-tools
-rw-r--r--  1 root root  12K Apr 20 09:35 dependencies.yaml
drwxr-xr-x  3 root root 4.0K Apr 20 09:35 docs
drwxr-xr-x  5 root root 4.0K Apr 20 09:35 gcb
-rw-r--r--  1 root root 1.8K Apr 20 09:35 go.mod
-rw-r--r--  1 root root 115K Apr 20 09:35 go.sum
drwxr-xr-x  5 root root 4.0K Apr 20 09:35 hack
drwxr-xr-x  6 root root 4.0K Apr 20 09:35 images
drwxr-xr-x  2 root root 4.0K Apr 20 09:35 internal
drwxr-xr-x  4 root root 4.0K Apr 20 09:35 packages
drwxr-xr-x 28 root root 4.0K Apr 20 09:35 pkg
-rwxr-xr-x  1 root root  56K Apr 20 09:35 push-build.sh
❯ git log

commit c0d02130e78a83d0f7262cbb776cd9e9928686b5 (HEAD -> master, origin/master, origin/HEAD)
Merge: a9b36dbc 85ca452a
Author: Kubernetes Prow Robot <[email protected]>
Date:   Mon Apr 19 06:00:37 2021 -0700

    Merge pull request #2010 from saschagrunert/skip-note
    
    Add notice if release note gets excluded because of mismatched authors
...

(Under go/src/k8s.io/release/,
npm start and npm run docker:build:run give error too.)

Proposed Solution:

Bug: Tags for entries no longer clickable

The desired behavior is when clicking a release note's tags (version, kind, etc.) it would apply a filter showing other entries like that.

Example: Clicking "bug" or "kubelet" no longer works and also throws an error in the console:

main-es2015.5389c5c8ca0307abba89.js:1 ERROR TypeError: Cannot read property 'sigs' of undefined
    at Object.handleEvent (main-es2015.5389c5c8ca0307abba89.js:1)
    at Object.handleEvent (main-es2015.5389c5c8ca0307abba89.js:1)
    at Object.handleEvent (main-es2015.5389c5c8ca0307abba89.js:1)
    at bs (main-es2015.5389c5c8ca0307abba89.js:1)
    at main-es2015.5389c5c8ca0307abba89.js:1
    at HTMLSpanElement.<anonymous> (main-es2015.5389c5c8ca0307abba89.js:1)
    at l.invokeTask (polyfills-es2015.5599a573226f370df716.js:1)
    at Object.onInvokeTask (main-es2015.5389c5c8ca0307abba89.js:1)
    at l.invokeTask (polyfills-es2015.5599a573226f370df716.js:1)
    at a.runTask (polyfills-es2015.5599a573226f370df716.js:1)

Add basic error handling

If something does not work as intended, like the HTTP connection to the backend is not available, then an error should be reported to the user.

Add shared logging service

A shared service for logging will help to keep log messages consistent and would a nice granularity for development vs production environments.

Add `settings` component

A settings component should be able to reconfigure the websites behavior, like

  • Setting the visibility of alpha releases

What do you think?

Update end-to-end testing to use cypress

From my point of view, cypress seems to be a faster and more stable alternative to protractor when it comes to end-to-end testing of web applications. I'd like to suggest to switch to it and update the tests to cover all basic use-cases. The task list would be:

  • Integrate cypress test framework and drop protractor
  • Add the tests to the CI pipeline
  • Add all use-cases as tests by keeping further UI changes in mind

Add additional release stage

Since the tool will be used in production with Kubernetes 1.15 we should think about adding an additional deploy step. Would it be possible to deploy tags to another location than the master branch?

Update backend to separate more from frontend

I see a lots of possibilities regarding the feature set of the backend implementation, but for now I would like to suggest:

  • Update the project structure to separate backend, frontend and shared code between both

Add ngrx based architecture

I would like to suggest in changing the angular architecture to utilize ngrx for state management within the application. This would provide us a clean control flow of data within the project by adding some overhead. Some benefits would be:

  • The application is going to behave more consistently because of the introduced single-responsibility principle
  • It will be easier to debug because of the great tooling support
  • The application gets easier to test since we are introducing pure functions to handle changes in the state

Website is slow - enable site analytics?

The website has become very slow and will keep on getting slower with every new release since all release notes are fetched before any content is shown to the user.

PageSpeed Insights - relnotes.k8s.io

One possible solution is implement SSR but it looks like a major undertaking. I was wondering if we have any stats/analytics on the usage of the website. Or is there a way to do an user survey to understand if the slow website is really a problem?

cc: @saschagrunert @reylejano

Add material design

I'd like to suggest using the angular material design without changing the main UI layout. In the end the following steps needs to be done:

  • Add the angular material dependency
  • Update the imports to use the material design
  • Update the current html layout to use the material design

Feature Request: Release Version filter improvements

Couple thoughts to put out there.

  • I think it makes sense to reverse-sort the versions in the version filter. Newest at the top. Thoughts?

  • The more Y stream releases we do, the more it might make sense to have a collapsable list so you can select "1.15" and then be able to filter the Z stream releases. Thoughts?

Add automatic dependency update check

To keep the project up-to-date I'd like to suggest using dependabot, which creates PRs for outdated dependencies. I see a working CI/CD pipeline as a necessary requirement, because dependabot relies on the results of it.

Update angular

We require more maintainers of this project, while updating angular seems to be a good first issue to get used to the code base.

/help
/good-first-issue

Document "Additional documentation" best practices

When adding additional documentation to an issue (linking to a KEP etc) the links should point to specific commit instead of tree/master. The relevant information for that release note is point in time whereas linking to the current master will not reflect the state of that information for that specific release.

Add CI/CD pipeline

Target would be to add a basic CI/CD pipeline to gather early development feedback for future implementations. To achieve this, the following steps could be considered:

I'd propose CircleCI because I had very good experiences with it in the past. The pipeline abstraction of CircleCI is great and we could utilize the caching and workspace features to speed up builds.

Possible CI jobs would be:

  • do a debug build
  • do a release build (produce a build artifact)
  • run the linter
  • run the unit tests
  • run the end-to-end tests for the debug build
  • run the end-to-end tests for the release build
  • build the documentation (produce a build artifact)
  • bundle the release build into a container (produce a build artifact)
  • push the release container into a registry

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.