Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Chore: Consolidate github workflows #1740

Merged
merged 60 commits into from
Jun 2, 2022
Merged
Show file tree
Hide file tree
Changes from 59 commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
31390f7
try out new linter
thewahome May 17, 2022
b87c537
add build and deploy step
thewahome May 17, 2022
a9bb250
add jest-environment-jsdom
thewahome May 17, 2022
2f66a68
change dependant
thewahome May 17, 2022
2e78337
change configuration
thewahome May 17, 2022
813d258
reduce updates
thewahome May 17, 2022
e10b60b
add missing package
thewahome May 17, 2022
44579e3
Fix code coverage paths
thewahome May 17, 2022
276b547
change dependency for sonar cloud analysis
thewahome May 17, 2022
bbaf744
remove redundant workflow
thewahome May 17, 2022
d20e201
move sonar cloud up the steps
thewahome May 17, 2022
a418452
use node version variable
thewahome May 17, 2022
aa0653c
reference variables correctly
thewahome May 17, 2022
46927f2
return use of no variable
thewahome May 17, 2022
8410980
Merge branch 'dev' into task/speed-up-tests
thewahome May 18, 2022
47cae28
Merge branch 'dev' into task/speed-up-tests
thewahome May 18, 2022
f5ec737
upgrade jest
thewahome May 18, 2022
ed33be2
Merge branch 'task/speed-up-tests' of https://github.com/microsoftgra…
thewahome May 18, 2022
ba733fe
update jest config
thewahome May 18, 2022
c93843e
add jest-environment-jsdom
thewahome May 18, 2022
3d43830
change how jest transforms
thewahome May 18, 2022
db2aad9
fix linting in jest configurations
thewahome May 18, 2022
996b667
update ts-jest
thewahome May 23, 2022
767136d
Merge branch 'dev' into task/speed-up-tests
thewahome May 23, 2022
3178d01
Fix augloop source
thewahome May 23, 2022
354d42b
add uuid resolver
thewahome May 24, 2022
92fdecb
increase shards
thewahome May 24, 2022
ffdf0e6
add labels to tests
thewahome May 24, 2022
ab660c4
add label names
thewahome May 24, 2022
d83e6f2
remove labels
thewahome May 24, 2022
b181910
separate code linting
thewahome May 24, 2022
b2427fd
move merge steps
thewahome May 24, 2022
5fae3c5
skip permissions action creator test
thewahome May 24, 2022
85351e4
fix coverage location
thewahome May 24, 2022
efaa0d5
add verbose flag to tests
thewahome May 24, 2022
82a16d7
use maxworkers
thewahome May 24, 2022
72e88a7
add download artifacts step; skip long running tests
thewahome May 24, 2022
edcb13d
add code checkout step
thewahome May 24, 2022
13a45fb
move fix code coverage paths
thewahome May 25, 2022
e9bfeb9
update node version
thewahome May 25, 2022
5573c7f
upload merged code coverage
thewahome May 25, 2022
0df55a6
Merge branch 'dev' into task/speed-up-tests
thewahome May 25, 2022
1d8d2b3
remove archive step
thewahome May 25, 2022
fd3ba4c
remove test results processor
thewahome May 25, 2022
d75522b
call node with --trace-warnings for debugging
thewahome May 25, 2022
e014f2d
change project properties
thewahome May 25, 2022
30f1e49
skip autocomplete test
thewahome May 25, 2022
d7615e6
reduce calls
thewahome May 25, 2022
96736d9
change parameters
thewahome May 25, 2022
252a8d6
try xml
thewahome May 25, 2022
1dc657f
change to test-report
thewahome May 25, 2022
255b2f5
change name to clover
thewahome May 25, 2022
d8f3b3d
rename merged file
thewahome May 25, 2022
a711ef7
change to converage/test-report
thewahome May 25, 2022
4f36ec1
change filter [temporary]
thewahome May 25, 2022
46a3d8d
revert test match filter
thewahome May 25, 2022
083a82e
update to list of reporters
thewahome May 25, 2022
eae6370
reduce commands
thewahome May 25, 2022
ac4c387
remove labelling
thewahome May 25, 2022
7829f66
Merge branch 'dev' into task/speed-up-tests
thewahome Jun 2, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

This file was deleted.

199 changes: 176 additions & 23 deletions .github/workflows/linter.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Lint and Build
name: Lint, Build, Test and Deploy

on:
workflow_dispatch:
Expand All @@ -7,43 +7,196 @@ on:
- master
- dev
pull_request:
types: [opened, synchronize, reopened]
types: [opened, synchronize, reopened, closed]

env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

jobs:
install:
name: Install node modules
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v3

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

- name: Cache npm
uses: actions/cache@v3
with:
path: ~/.npm
key: npm-${{ hashFiles('package-lock.json') }}
restore-keys: npm-

- name: Cache node_modules
uses: actions/cache@v3
id: cache-node-modules
with:
path: |
node_modules
packages/*/node_modules
key: modules-${{ hashFiles('package-lock.json') }}

- name: Install dependencies
if: steps.cache-node-modules.outputs.cache-hit != 'true'
run: npm ci --no-audit

code-linting:
name: Lint
needs: install
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of results
fetch-depth: 0

- name: Install Nodejs
uses: actions/setup-node@v2
- name: Set up Node
uses: actions/setup-node@v3
with:
node-version: '12.x'
node-version: '14.x'

- name: Install dependencies
run: npm install
- name: Cache node_modules
uses: actions/cache@v3
with:
path: |
node_modules
packages/*/node_modules
key: modules-${{ hashFiles('package-lock.json') }}

- name: Run linter
- name: Lint
run: npm run lint

- name: Build
run: npm run build
build:
name: Build packages
needs: install
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v3

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

- name: Cache node_modules
uses: actions/cache@v3
with:
path: |
node_modules
packages/*/node_modules
key: modules-${{ hashFiles('package-lock.json') }}

- name: Run the tests
run: npm run test -- --coverage --watchAll=false --testResultsProcessor=jest-sonar-reporter
- name: Build
run: npm run build

test:
name: Test
needs: install
runs-on: ubuntu-latest
strategy:
matrix:
shard: [1, 2, 3, 4, 5, 6]

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Fix code coverage paths
run: |
sed -i 's@'$GITHUB_WORKSPACE'@/github/workspace/@g' coverage/lcov.info
sed -i 's@'$GITHUB_WORKSPACE'@/github/workspace/@g' reports/test-report.xml
- name: Set up Node
uses: actions/setup-node@v3
with:
node-version: '14.x'

- name: Run sonar cloud analysis
uses: SonarSource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- name: Cache node_modules
uses: actions/cache@v3
with:
path: |
node_modules
packages/*/node_modules
key: modules-${{ hashFiles('package-lock.json') }}

- name: Test
run: npm run test -- --verbose --shard=${{ matrix.shard }}/${{ strategy.job-total }} --coverage --testResultsProcessor=jest-sonar-reporter

- name: Fix code coverage paths
run: |
sed -i 's@'$GITHUB_WORKSPACE'@/github/workspace/@g' coverage/lcov.info
sed -i 's@'$GITHUB_WORKSPACE'@/github/workspace/@g' reports/test-report.xml
- run: cp reports/test-report.xml coverage/${{matrix.shard}}.xml

- uses: actions/upload-artifact@v3
with:
name: coverage-artifacts
path: coverage/

sonar-cloud:
name: Sonar Cloud analysis
needs: test
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0

- uses: actions/download-artifact@v3
with:
name: coverage-artifacts
path: coverage

- name: Run sonar cloud analysis
uses: SonarSource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}



publish-preview-site:
name: Static preview site creation
needs: install
runs-on: ubuntu-latest
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Build And Deploy
env:
REACT_APP_CLIENT_ID: ${{ secrets.REACT_APP_CLIENT_ID }}
REACT_APP_FEEDBACK_CAMPAIGN_ID: ${{ secrets.REACT_APP_FEEDBACK_CAMPAIGN_ID }},
REACT_APP_NPS_FEEDBACK_CAMPAIGN_ID: ${{secrets.REACT_APP_NPS_FEEDBACK_CAMPAIGN_ID}}
REACT_APP_INSTRUMENTATION_KEY: ${{ secrets.REACT_APP_STAGING_INSTRUMENTATION_KEY }}
REACT_APP_NOMINATION_PERIOD: ${{secrets.REACT_APP_NOMINATION_PERIOD}}
REACT_APP_COOLDOWN_PERIOD: ${{secrets.REACT_APP_COOLDOWN_PERIOD}}
REACT_APP_USAGE_TIME: ${{secrets.REACT_APP_USAGE_TIME}}
id: builddeploy
uses: Azure/[email protected]
with:
skip_deploy_on_missing_secrets: true
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_JOLLY_SAND_0AC78C710 }}
repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments)
action: "upload"
app_location: "/" # App source code path
app_artifact_location: "build" # Built app content directory - optional

close_pull_request_job:
if: github.event_name == 'pull_request' && github.event.action == 'closed'
runs-on: ubuntu-latest
name: Close Pull Request Job
steps:
- name: Close Pull Request
id: closepullrequest
uses: Azure/[email protected]
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_JOLLY_SAND_0AC78C710 }}
action: "close"
7 changes: 4 additions & 3 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
// List of extensions which should be recommended for users of this workspace.
"recommendations": [
"formulahendry.auto-close-tag",
"Atishay-Jain.All-Autocomplete",
"GitHub.vscode-pull-request-github",
"atishay-jain.all-autocomplete",
"github.vscode-pull-request-github",
"ionutvmi.path-autocomplete",
"dsznajder.es7-react-js-snippets",
"formulahendry.auto-rename-tag",
Expand All @@ -17,7 +17,8 @@
"naumovs.color-highlight",
"ms-vscode.sublime-keybindings",
"redhat.vscode-yaml",
"redhat.vscode-commons"
"redhat.vscode-commons",
"eamodio.gitlens"
],
// List of extensions recommended by VS Code that should not be recommended for users of this workspace.
"unwantedRecommendations": [
Expand Down
4 changes: 2 additions & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
"typescript",
"typescriptreact"
],
"explorer.experimental.fileNesting.enabled": true,
"explorer.experimental.fileNesting.patterns": {
"explorer.fileNesting.enabled": true,
"explorer.fileNesting.patterns": {
"*.ts": "$(capture).js, $(capture).d.ts, $(capture).spec.ts",
"*.tsx": "$(capture).ts, $(capture).d.ts, $(capture).spec.tsx, $(capture).styles.ts",
"package.json": "package-lock.json, .npmrc"
Expand Down
4 changes: 3 additions & 1 deletion config/jest/cssTransform.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@

module.exports = {
process() {
return 'module.exports = {};';
return {
code: 'module.exports = {};'
}
},
getCacheKey() {
// The output is always the same.
Expand Down
12 changes: 8 additions & 4 deletions config/jest/fileTransform.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ module.exports = {
const assetFilename = JSON.stringify(path.basename(filename));

if (filename.match(/\.svg$/)) {
return `module.exports = {
return {
code: `module.exports = {
__esModule: true,
default: ${assetFilename},
ReactComponent: (props) => ({
Expand All @@ -22,9 +23,12 @@ module.exports = {
children: ${assetFilename}
})
}),
};`;
};`
}
}

return `module.exports = ${assetFilename};`;
return {
code:
`module.exports = ${assetFilename};`
};
}
};
2 changes: 1 addition & 1 deletion config/paths.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const envPublicUrl = process.env.PUBLIC_URL;
function ensureSlash(inputPath, needsSlash) {
const hasSlash = inputPath.endsWith('/');
if (hasSlash && !needsSlash) {
return inputPath.substr(0, inputPath.length - 1);
return inputPath.subString(0, inputPath.length - 1);
} else if (!hasSlash && needsSlash) {
return `${inputPath}/`;
} else {
Expand Down
6 changes: 4 additions & 2 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ module.exports = {
'!src/app/middleware/telemetryMiddleware.ts',
'!src/telemetry/telemetry.ts'
],
resolver: 'jest-pnp-resolver',
resolver: `${__dirname}/src/tests/common/resolver.js`,
setupFiles: ['react-app-polyfill/jsdom'],
setupFilesAfterEnv: ['<rootDir>/src/setupTests.ts'],
testMatch: [
Expand All @@ -20,8 +20,10 @@ module.exports = {
globals: {
crypto: require('crypto')
},
testEnvironmentOptions: {
url: 'http://localhost'
},
testEnvironment: 'jsdom',
testURL: 'http://localhost',
transform: {
'^.+\\.(js|jsx|ts|tsx)$': 'ts-jest',
'^.+\\.css$': '<rootDir>/config/jest/cssTransform.js',
Expand Down
Loading