Skip to content

Commit

Permalink
Chore: Consolidate github workflows (#1740)
Browse files Browse the repository at this point in the history
  • Loading branch information
thewahome authored Jun 2, 2022
1 parent e59a6ee commit bb9036f
Show file tree
Hide file tree
Showing 17 changed files with 3,887 additions and 764 deletions.
54 changes: 0 additions & 54 deletions .github/workflows/azure-static-web-apps-jolly-sand-0ac78c710.yml

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

0 comments on commit bb9036f

Please sign in to comment.