Skip to content

Commit

Permalink
ci(build-main): separate packages and showcase+starter build in GitHu…
Browse files Browse the repository at this point in the history
…b Actions
  • Loading branch information
SuperITMan committed May 6, 2021
1 parent db0e23a commit fd18c24
Show file tree
Hide file tree
Showing 2 changed files with 149 additions and 25 deletions.
170 changes: 145 additions & 25 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,18 +105,40 @@ jobs:
if: github.actor == 'dependabot[bot]'

- name: Install dependencies
run: |
npm ci
npm run install:ci:all
run: npm ci

- name: Build
run: npm run build:trace

- name: Linting
run: npm run lint:all
run: npm run lint:packages

- name: Testing
run: npm run test:ci:all

- name: "Build showcase:ghpages"
run: npm run build:showcase:ghpages
run: npm run test:ci:packages

# See: https://github.com/marketplace/actions/upload-artifact
- name: Upload starter package.json file
uses: actions/upload-artifact@v2
with:
name: "starter-package-json"
path: "starter/package.json"
if: env.IS_MAIN_ENVIRONMENT == 1

# See: https://github.com/marketplace/actions/upload-artifact
- name: Upload showcase package.json file
uses: actions/upload-artifact@v2
with:
name: "showcase-package-json"
path: "showcase/package.json"
if: env.IS_MAIN_ENVIRONMENT == 1

# See: https://github.com/marketplace/actions/upload-artifact
- name: Upload showcase package-lock.json file
uses: actions/upload-artifact@v2
with:
name: "showcase-package-lock-json"
path: "showcase/package-lock.json"
if: env.IS_MAIN_ENVIRONMENT == 1

# See: https://github.com/marketplace/actions/upload-artifact
- name: Upload stark packages-dist folder
Expand All @@ -126,14 +148,123 @@ jobs:
path: dist/packages-dist
if: env.IS_MAIN_ENVIRONMENT == 1

- name: Generate docs coverage
run: npm run docs:coverage:packages
if: env.IS_MAIN_ENVIRONMENT == 1

- name: Save logs
run: bash ./scripts/ci/print-logs.sh

- name: Combine coveralls reports
run: node combine-packages-coverage.js
if: env.IS_MAIN_ENVIRONMENT == 1

- name: Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: "combined-lcov.info"
if: env.IS_MAIN_ENVIRONMENT == 1

build-and-test-showcase-and-starter:
name: Build and test showcase and starter on Node.js ${{ matrix.node_version }} and ${{ matrix.os }}
needs: build-and-test
runs-on: ${{ matrix.os }}
strategy:
matrix:
node_version: [ "10", "12" ]
os: [ ubuntu-latest, macOS-latest ]

steps:
# Some actions should be executed only in one environment.
# This variable determines if it is the main environment, it means the same than the one we have internally.
- name: Set environment variable 'IS_MAIN_ENVIRONMENT'
run: |
if [[ '${{ matrix.node_version }}' == '${{ env.MAIN_NODEJS }}' ]] && [[ '${{ matrix.os }}' == 'ubuntu-latest' ]]; then
echo "IS_MAIN_ENVIRONMENT=1" >> $GITHUB_ENV
else
echo "IS_MAIN_ENVIRONMENT=0" >> $GITHUB_ENV
fi
# See: https://github.com/marketplace/actions/checkout
- uses: actions/checkout@v2

# See: https://github.com/marketplace/actions/setup-node-js-environment
- name: Use Node.js ${{ matrix.node_version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node_version }}

- name: Create file & folder for GitHub Actions logs
run: |
# cfr scripts/_ghactions-group.sh
mkdir -p ${{ env.LOGS_DIR }}
touch ${{ env.LOGS_FILE }}
- uses: actions/download-artifact@v2
with:
name: "starter-package-json"
path: "starter/package.json"

- uses: actions/download-artifact@v2
with:
name: "showcase-package-json"
path: "showcase/package.json"

- uses: actions/download-artifact@v2
with:
name: "showcase-package-lock-json"
path: "showcase/package-lock.json"

- uses: actions/download-artifact@v2
with:
name: stark-dist
path: dist/packages-dist

# See: https://github.com/marketplace/actions/cache
# See doc: https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows
- name: Cache node modules
uses: actions/cache@v2
env:
cache-name: cache-node-modules-${{ matrix.node_version }}-${{ matrix.os }}
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Install npm ${{ env.NPM_VERSION }}
run: npm i -g npm@${{ env.NPM_VERSION }}

- name: Install dependencies
run: |
npm run install:ci:showcase
npm run install:starter
- name: Linting
run: |
npm run lint:showcase
npm run lint:starter
- name: Testing
run: |
npm run test:ci:showcase
npm run test:ci:starter
- name: "Build showcase:ghpages"
run: npm run build:showcase:ghpages

# See: https://github.com/marketplace/actions/upload-artifact
- name: Upload showcase dist folder
uses: actions/upload-artifact@v2
with:
name: showcase-dist
path: showcase/dist
if: env.IS_MAIN_ENVIRONMENT == 1

- name: BrowserStack Env Setup
uses: browserstack/github-actions/setup-env@master
with:
Expand All @@ -149,45 +280,34 @@ jobs:
local-logging-level: "all-logs"
local-identifier: "github-actions-${{ github.run_number }}"
if: env.IS_MAIN_ENVIRONMENT == 1 && github.event_name == 'push'

- name: Running application under test
run: npm run server:prod:ci &
if: env.IS_MAIN_ENVIRONMENT == 1 && github.event_name == 'push'
working-directory: showcase

- name: Running test on BrowserStack
run: npm run protractor:browserstack
if: env.IS_MAIN_ENVIRONMENT == 1 && github.event_name == 'push'
working-directory: showcase

- name: BrowserStackLocal Stop
uses: browserstack/github-actions/setup-local@master
with:
local-testing: stop
if: env.IS_MAIN_ENVIRONMENT == 1 && github.event_name == 'push'

- name: Generate docs coverage
run: npm run docs:coverage
run: npm run docs:coverage:starter
if: env.IS_MAIN_ENVIRONMENT == 1

- name: Save logs
run: bash ./scripts/ci/print-logs.sh

- name: Combine coveralls reports
run: node combine-packages-coverage.js
if: env.IS_MAIN_ENVIRONMENT == 1

- name: Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: "combined-lcov.info"
if: env.IS_MAIN_ENVIRONMENT == 1

release:
name: Release
runs-on: "ubuntu-latest"
needs: build-and-test
needs: build-and-test-showcase-and-starter
if: (startsWith(github.ref, 'refs/tags/') || github.event_name == 'schedule') && github.repository == 'NationalBankBelgium/stark'
steps:
- name: Get tag name if exists
Expand Down
4 changes: 4 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@
"docs:all": "npm run docs:stark-core:generate && npm run docs:stark-ui:generate && npm run docs:stark-rbac:generate && npm run docs:starter:generate",
"docs:clean": "npx rimraf reports/api-docs",
"docs:coverage": "npm run docs:stark-core:coverage && npm run docs:stark-ui:coverage && npm run docs:stark-rbac:coverage && npm run docs:starter:coverage",
"docs:coverage:packages": "npm run docs:stark-core:coverage && npm run docs:stark-ui:coverage && npm run docs:stark-rbac:coverage",
"docs:publish": "bash ./gh-deploy.sh --trace",
"docs:stark-core:coverage": "cd packages/stark-core && npm run docs:coverage && cd ../..",
"docs:stark-core:generate": "cd packages/stark-core && npm run docs && cd ../..",
Expand All @@ -180,6 +181,7 @@
"lint:showcase": "cd showcase && npm run lint && cd ..",
"lint:starter": "cd starter && npm run lint && cd ..",
"lint:all": "npm run lint:stark-core && npm run lint:stark-ui && npm run lint:stark-rbac && npm run lint:starter && npm run lint:showcase",
"lint:packages": "npm run lint:stark-core && npm run lint:stark-ui && npm run lint:stark-rbac",
"install:all": "npm run build && npm run install:starter && npm run install:showcase",
"install:showcase": "cd showcase && npm install && cd ..",
"install:starter": "cd starter && ../node_modules/.bin/cross-env HUSKY_SKIP_INSTALL=1 npm install && cd ..",
Expand Down Expand Up @@ -208,6 +210,7 @@
"stylelint-check": "stylelint-config-prettier-check",
"test": "npm run test:ci:all",
"test:all": "npm run test:stark-core && npm run test:stark-ui && npm run test:stark-rbac && npm run test:starter && npm run test:showcase",
"test:packages": "npm run test:stark-core && npm run test:stark-ui && npm run test:stark-rbac",
"test:stark-core": "ng test stark-core",
"test:stark-rbac": "ng test stark-rbac",
"test:stark-ui": "ng test stark-ui",
Expand All @@ -217,6 +220,7 @@
"test:starter": "cd starter && npm run test-fast && cd ../..",
"test:starter:e2e": "cd starter && npm run e2e && cd ../..",
"test:ci:all": "npm run test:ci:stark-core && npm run test:ci:stark-ui && npm run test:ci:stark-rbac && npm run test:ci:starter && npm run test:ci:showcase",
"test:ci:packages": "npm run test:ci:stark-core && npm run test:ci:stark-ui && npm run test:ci:stark-rbac",
"test:ci:stark-core": "cross-env CI=true ng test stark-core --code-coverage",
"test:ci:stark-rbac": "cross-env CI=true ng test stark-rbac --code-coverage",
"test:ci:stark-ui": "cross-env CI=true ng test stark-ui --code-coverage",
Expand Down

0 comments on commit fd18c24

Please sign in to comment.