Spring/React: Github Actions - The specific Github actions in our stack
In the code bases associated with CMPSC 156, we have a standard set of Github Actions. This pages describes each of those. For some, there is also advice on what to do if this job fails.
Note that while these are mostly standardized across the code bases, there may be minor variations. Eventually, it may be helpful to factor out some of these into custom actions so that there is less duplicate code to maintain.
Overview
| File | Brief Description |
|---|---|
01-gh-pages-pr-table.yml | Refreshes the main page from the list of PRs |
02-gh-pages-rebuild-part-1.yml | Rebuilds all content for both main branch and PRs and caches it. Operates in parallel. Stores content in cache rather than deploying to reduce contention for gh-pages branch. |
04-gh-pages-redeploy-part-2.yml | Redeploys all content from cache; operates sequentially to reduce contention for gh-pages branch |
10-backend-unit.yml | JUnit tests for Java backend |
12-backend-jacoco.yml | Code Coverage for Java Backend |
13-backend-incremental-pitest.yml | Mutation Coverage for Java backend (only on changed files) |
14-backend-pitest.yml | Mutation Coverage for Java backend (on all files) |
15-backend-format.yml | Formatting check on backend; Run mvn git-code-format:format-code from root directory to fix failures |
30-frontend-tests.yml | Frontend unit tests (jest) |
32-frontend-coverage.yml | Frontend code coverage (nyc) |
33-frontend-pr-mutation-testing.yml | Frontend Mutation Testing (Stryker), incremental |
34-frontend-main-mutation-testing.yml | Frontend Mutation Testing (Stryker), full |
35-frontend-format.yml | Formatting check on frontend; Run npm run format from frontend directory to fix failures |
36-frontend-eslint.yml | Linter for frontend code; Run npx eslint --fix src from frontend directory to list issues to fix |
40-check-production-build.yml | Makes sure that when the backend and frontend are built with PRODUCTION=true that the build succeeds. |
52-storybook-main-branch.yml | Build the storybook for the main branch |
54-storybook-pr.yml | Build the storybook for a PR |
55-chromatic-pr | Update chromatic (online storybook and visual difference testing) for a pr to main |
56-javadoc-main-branch.yml | Build the javadoc for the main branch |
58-javadoc-pr.yml | Build the javadoc for a PR |
82-pull-request-slack-msg.yml | When there is a Pull Request, send a slack message |
98-copy-issue-by-number.yml | Copy an issue by number from the original repo |
99-copy-issues.yml | Copy all issues for this quarter from the original repo |
Details
For details on each job, click the triangle.
01-gh-pages-pr-table.yml
01-gh-pages-pr-table.ymlRefreshes the main page from the list of PRs.
If it fails: Just try rerunning, especially if it fails on the Deploy step.
02-gh-pages-rebuild-part-1.yml</summary> Rebuilds all content for both main branch and PRs and caches it. Operates in parallel. Stores content in cache rather than deploying to reduce contention for gh-pages branch.
The purpose of this job is to refresh all of the content on the github pages site in the event that the entire site needs to be rebuilt. Accordingly, it is made up of many smaller jobs.
If it fails: Look for which part of it failed, and then consult the advice for the job that’s closest in function to the part that failed. For example, if it failed at the javadoc step, look at the advice about the javadoc jobs (further down on this page.) </details>
04-gh-pages-redeploy-part-2.yml
Redeploys all content from cache; operates sequentially to reduce contention for gh-pages branch.
If it fails: This one fails often at the Deploy step due to contention for the gh-pages branch, so just re-running it often fixes the problem.
10-backend-unit.yml
JUnit tests for Java backend.
If it fails: Try running mvn test or mvn clean test to determine which unit test is failing. Fix the tests, then run again.
12-backend-jacoco.yml
Code Coverage for Java Backend.
If it fails: First, make sure that mvn test has a green test suite. Then try mvn test jacoco:report to determine what is failing. You can also just consult the github pages site for the repo and look under jacoco for the PR in question.
13-backend-incremental-pitest.yml
Mutation Coverage for Java backend (only on changed files).
If it fails: First, make sure that mvn test has a green test suite. Then try mvn pitest:mutationCoverage to determine what is failing. You can also just consult the github pages site for the repo and look under pitest for the PR in question.
14-backend-pitest.yml
Mutation Coverage for Java backend (on all files).
If it fails: First, make sure that mvn test has a green test suite. Then try mvn pitest:mutationCoverage to determine what is failing. You can also just consult the github pages site for the repo and look under pitest for the PR in question.
15-backend-format.yml
Formatting check on backend.
If it fails: Run mvn git-code-format:format-code from root directory to fix failures. Be sure to commit the result.
30-frontend-tests.yml
Frontend unit tests (jest).
If it fails: In the frontend directory, run npm test. You may need to press a to run all tests.
You also may first need to do these commands if you haven’t done them in your frontend shell recently:
nvm use --lts
npm ci
32-frontend-coverage.yml
Frontend code coverage (nyc).
If it fails: In the frontend directory, run npm run coverage.
- If tests are failing, fix that first.
- Then address any coverage gaps
You also may first need to do these commands if you haven’t done them in your frontend shell recently:
nvm use --lts
npm ci
33-frontend-pr-mutation-testing.yml
Frontend Mutation Testing (Stryker), incremental.
If it fails: In the frontend directory, run npm stryker run.
- If tests are failing, fix that first (
npm test) - Then address any coverage gaps
You also may first need to do these commands if you haven’t done them in your frontend shell recently:
nvm use --lts
npm ci
34-frontend-main-mutation-testing.yml
Frontend Mutation Testing (Stryker), full. If it fails: In the frontend directory, run npm stryker run.
- If tests are failing, fix that first (
npm test) - Then address any coverage gaps
You also may first need to do these commands if you haven’t done them in your frontend shell recently:
nvm use --lts
npm ci
35-frontend-format.yml
Formatting check on frontend;
If it fails: Run npm run format from frontend directory to fix problems. Be sure to commit the result.
You also may first need to do these commands if you haven’t done them in your frontend shell recently:
nvm use --lts
npm ci
36-frontend-eslint.yml
Linter for frontend code;
If it fails: Run npx eslint --fix src from frontend directory to list issues to fix.
You also may first need to do these commands if you haven’t done them in your frontend shell recently:
nvm use --lts
npm ci
40-check-production-build.yml
Makes sure that when the backend and frontend are built with PRODUCTION=true that the build succeeds.
If it fails: Try running the following command from the top level directory, which should produce the same result as the failing CI/CD run:
PRODUCTION=true mvn spring-boot:run
Determine what is failing, and fix it.
52-storybook-main-branch.yml
Build the storybook for the main branch.
If it fails: From the frontend directory, use: npm run storybook. The Storybook should appear on http://localhost:6006. Determine the problems, and fix them.
54-storybook-pr.yml
Build the storybook for a PR.
If it fails: From the frontend directory, use: npm run storybook. The Storybook should appear on http://localhost:6006. Determine the problems, and fix them.
55-chromatic-pr`
Update chromatic (online storybook and visual difference testing) for a pr to main.
If it fails: It may be an issue with setting the CHROMATIC_PROJECT_TOKEN; see https://ucsb-cs156.github.io/topics/chromatic/ for details.
Locally: Make sure you have a value forCHROMATIC_PROJECT_TOKEN set in .env, then from the frontend directory, use: npm run chromatic.
On Github Actions, you need to set the CHROMATIC_PROJECT_TOKEN as a repository secret.
56-javadoc-main-branch.yml
Build the javadoc for the main branch.
If it fails: From the root directory, run mvn javadoc:javadoc. Look for the errors and fix them.
58-javadoc-pr.yml
Build the javadoc for a PR.
If it fails: From the root directory, run mvn javadoc:javadoc. Look for the errors and fix them.
82-pull-request-slack-msg.yml
When there is a Pull Request, send a slack message.
If it fails: This is typically something fixed by the staff, so report issues to the staff via the course slack.
Staff: Check that the organization level environment variables are set properly.
98-copy-issue-by-number.yml
Copy an issue by number from the original repo.
If it fails: This is typically something fixed by the staff, so report issues to the staff via the course slack.
99-copy-issues.yml
Copy all issues for this quarter from the original repo.
If it fails: This is typically something fixed by the staff, so report issues to the staff via the course slack.
02-gh-pages-rebuild-part-1.yml</summary> Rebuilds all content for both main branch and PRs and caches it. Operates in parallel. Stores content in cache rather than deploying to reduce contention for gh-pages branch. 04-gh-pages-redeploy-part-2.yml
04-gh-pages-redeploy-part-2.ymlRedeploys all content from cache; operates sequentially to reduce contention for gh-pages branch.
If it fails: This one fails often at the Deploy step due to contention for the gh-pages branch, so just re-running it often fixes the problem.
10-backend-unit.yml
10-backend-unit.ymlJUnit tests for Java backend.
If it fails: Try running mvn test or mvn clean test to determine which unit test is failing. Fix the tests, then run again.
12-backend-jacoco.yml
12-backend-jacoco.ymlCode Coverage for Java Backend.
If it fails: First, make sure that mvn test has a green test suite. Then try mvn test jacoco:report to determine what is failing. You can also just consult the github pages site for the repo and look under jacoco for the PR in question.
13-backend-incremental-pitest.yml
13-backend-incremental-pitest.ymlMutation Coverage for Java backend (only on changed files).
If it fails: First, make sure that mvn test has a green test suite. Then try mvn pitest:mutationCoverage to determine what is failing. You can also just consult the github pages site for the repo and look under pitest for the PR in question.
14-backend-pitest.yml
14-backend-pitest.ymlMutation Coverage for Java backend (on all files).
If it fails: First, make sure that mvn test has a green test suite. Then try mvn pitest:mutationCoverage to determine what is failing. You can also just consult the github pages site for the repo and look under pitest for the PR in question.
15-backend-format.yml
15-backend-format.ymlFormatting check on backend.
If it fails: Run mvn git-code-format:format-code from root directory to fix failures. Be sure to commit the result.
30-frontend-tests.yml
30-frontend-tests.ymlFrontend unit tests (jest).
If it fails: In the frontend directory, run npm test. You may need to press a to run all tests.
You also may first need to do these commands if you haven’t done them in your frontend shell recently:
nvm use --lts
npm ci
32-frontend-coverage.yml
32-frontend-coverage.ymlFrontend code coverage (nyc).
If it fails: In the frontend directory, run npm run coverage.
- If tests are failing, fix that first.
- Then address any coverage gaps
You also may first need to do these commands if you haven’t done them in your frontend shell recently:
nvm use --lts
npm ci
33-frontend-pr-mutation-testing.yml
33-frontend-pr-mutation-testing.ymlFrontend Mutation Testing (Stryker), incremental.
If it fails: In the frontend directory, run npm stryker run.
- If tests are failing, fix that first (
npm test) - Then address any coverage gaps
You also may first need to do these commands if you haven’t done them in your frontend shell recently:
nvm use --lts
npm ci
34-frontend-main-mutation-testing.yml
34-frontend-main-mutation-testing.ymlFrontend Mutation Testing (Stryker), full. If it fails: In the frontend directory, run npm stryker run.
- If tests are failing, fix that first (
npm test) - Then address any coverage gaps
You also may first need to do these commands if you haven’t done them in your frontend shell recently:
nvm use --lts
npm ci
35-frontend-format.yml
35-frontend-format.ymlFormatting check on frontend;
If it fails: Run npm run format from frontend directory to fix problems. Be sure to commit the result.
You also may first need to do these commands if you haven’t done them in your frontend shell recently:
nvm use --lts
npm ci
36-frontend-eslint.yml
36-frontend-eslint.ymlLinter for frontend code;
If it fails: Run npx eslint --fix src from frontend directory to list issues to fix.
You also may first need to do these commands if you haven’t done them in your frontend shell recently:
nvm use --lts
npm ci
40-check-production-build.yml
40-check-production-build.ymlMakes sure that when the backend and frontend are built with PRODUCTION=true that the build succeeds.
If it fails: Try running the following command from the top level directory, which should produce the same result as the failing CI/CD run:
PRODUCTION=true mvn spring-boot:run
Determine what is failing, and fix it.
52-storybook-main-branch.yml
52-storybook-main-branch.ymlBuild the storybook for the main branch.
If it fails: From the frontend directory, use: npm run storybook. The Storybook should appear on http://localhost:6006. Determine the problems, and fix them.
54-storybook-pr.yml
54-storybook-pr.ymlBuild the storybook for a PR.
If it fails: From the frontend directory, use: npm run storybook. The Storybook should appear on http://localhost:6006. Determine the problems, and fix them.
55-chromatic-pr`
55-chromatic-pr`Update chromatic (online storybook and visual difference testing) for a pr to main.
If it fails: It may be an issue with setting the CHROMATIC_PROJECT_TOKEN; see https://ucsb-cs156.github.io/topics/chromatic/ for details.
Locally: Make sure you have a value forCHROMATIC_PROJECT_TOKEN set in .env, then from the frontend directory, use: npm run chromatic.
On Github Actions, you need to set the CHROMATIC_PROJECT_TOKEN as a repository secret.
56-javadoc-main-branch.yml
56-javadoc-main-branch.ymlBuild the javadoc for the main branch.
If it fails: From the root directory, run mvn javadoc:javadoc. Look for the errors and fix them.
58-javadoc-pr.yml
58-javadoc-pr.ymlBuild the javadoc for a PR.
If it fails: From the root directory, run mvn javadoc:javadoc. Look for the errors and fix them.
82-pull-request-slack-msg.yml
82-pull-request-slack-msg.ymlWhen there is a Pull Request, send a slack message.
If it fails: This is typically something fixed by the staff, so report issues to the staff via the course slack.
Staff: Check that the organization level environment variables are set properly.
98-copy-issue-by-number.yml
98-copy-issue-by-number.ymlCopy an issue by number from the original repo.
If it fails: This is typically something fixed by the staff, so report issues to the staff via the course slack.
99-copy-issues.yml
99-copy-issues.ymlCopy all issues for this quarter from the original repo.
If it fails: This is typically something fixed by the staff, so report issues to the staff via the course slack.