Skip to content

Revert missing example #2045

Revert missing example

Revert missing example #2045

Workflow file for this run

name: on pull request
on: pull_request
env:
CACHE_PATH: |
**/node_modules
~/.cache/Cypress
YARN_CACHE_PATH: |
~/.cache/yarn/v6
FILES_TO_DELETE: |
sudo rm -rf "/usr/share/dotnet"
sudo rm -rf "/usr/share/swift"
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "/usr/local/lib/android/sdk"
sudo rm -rf "/opt/hostedtoolcache/Python"
sudo rm -rf "/opt/hostedtoolcache/go"
sudo rm -rf "/opt/hostedtoolcache/CodeQL"
sudo rm -rf "/var/lib/gems"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
sudo apt-get clean -y
sudo apt-get autoremove -y
jobs:
# Stop previous runs
stop-previous-run:
runs-on: ubuntu-22.04
steps:
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ secrets.GITHUB_TOKEN }}
# Save necessary env variables to use them in next jobs
save-env:
runs-on: ubuntu-22.04
needs: stop-previous-run
if: always()
steps:
- name: Save env variables
id: save-env-variables
run: |
mkdir -p ./workflow
echo "${{ github.event.pull_request.number }}" > ./workflow/prNum
echo "${{ github.run_id }}" > ./workflow/runId
echo "${{ github.repository }}" > ./workflow/repoFullName
echo "${{ github.repository_owner }}" > ./workflow/ownerName
- name: Upload artifact
id: upload-artifact
uses: actions/upload-artifact@v3
with:
name: env_for_comment
path: workflow/
# Check if forked master is up to date with origin master in module federation examples repo
forked_master_status:
runs-on: ubuntu-22.04
needs: stop-previous-run
steps:
- name: Checkout
id: checkout
uses: actions/checkout@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
ref: ${{ github.event.pull_request.head.ref }}
fetch-depth: 0
- name: Check if forked master is up to date
id: check-forked-master
if: github.repository_owner == 'module-federation'
run: |
echo "${{ github.repository_owner }}"
git remote add base https://github.com/${{github.repository}}
git remote -v
git fetch --all
export FORKED_MASTER_SHA=$(git log -n 1 --pretty=format:"%H" origin/${{ github.event.pull_request.base.ref}})
export BASE_MASTER_SHA=$(git log -n 1 --pretty=format:"%H" base/${{ github.event.pull_request.base.ref }})
echo "$FORKED_MASTER_SHA"
echo "$BASE_MASTER_SHA"
if [ "$FORKED_MASTER_SHA" == "$BASE_MASTER_SHA" ];
then
echo "The forked master is up to date with the base master branch"
exit 0
else
echo "The forked master branch is not up to date with the base master branch, Please update your fork!"
exit 1
fi
# Setup matrix from changed samples by lerna ls --since origin/master command
setup-matrix:
runs-on: ubuntu-22.04
needs: forked_master_status
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Checkout
id: checkout-matrix
uses: actions/checkout@v3
with:
repository: ${{ github.event.pull_request.head.repo.full_name }}
ref: ${{ github.event.pull_request.head.ref }}
fetch-depth: 0
- name: Create matrix
id: set-matrix
run: |
npm i lerna@6 -g
all="$(npm run list:all --silent)"
diff="$(npm run list:changed --silent)"
matrix="$(node checkChangedWorkspaces.js "$all" "$diff")"
echo "matrix=$matrix" >> $GITHUB_OUTPUT
- name: Changed workspaces
id: changed-workspaces
run: |
echo '${{ steps.set-matrix.outputs.matrix }}'
# Install main dependencies (yarn install) + Create cache for Yarn and Cypress
install-main-dependencies:
needs: setup-matrix
if: ${{ needs.setup-matrix.outputs.matrix != '{"container":[]}' }}
runs-on: ubuntu-22.04
steps:
- name: Checkout code
id: checkout-code
uses: actions/checkout@v3
with:
repository: ${{ github.event.pull_request.head.repo.full_name }}
ref: ${{ github.event.pull_request.head.ref }}
fetch-depth: 0
- name: Free up some space
id: free-up-space
run: ${{ env.FILES_TO_DELETE }}
# Hash yarn.lock files to use it as a cache key, if yarn.lock files are changed, the cache will be invalidated
- name: Check Yarn hash
id: check-yarn-hash
run: |
yarnHash="$(npx hash-files -f '["**/yarn.lock"]' -a sha256)"
echo "yarnHash=$yarnHash" >> $GITHUB_OUTPUT
- name: Restore Yarn Global Cache
id: restore-yarn-global-cache
uses: actions/cache/restore@v3
with:
path: |
${{ env.YARN_CACHE_PATH }}
${{ env.CACHE_PATH }}
key: yarn-global-cache-${{ steps.check-yarn-hash.outputs.yarnHash }} # Can use time based key as well
restore-keys: |
yarn-global-cache-
- name: Check disk space before install
id: check-disk-space-before-install
run: |
df -h
- name: Install dependencies
id: install-dependencies
if: steps.restore-yarn-global-cache.outputs.cache-hit != 'true'
env:
NODE_OPTIONS: "--max_old_space_size=4096"
run: |
echo "Yarn has changed - installing dependencies ... "
npm install lerna@6 -g
lerna bootstrap
- name: Cache Yarn and Cypress
if: steps.restore-yarn-global-cache.outputs.cache-hit != 'true'
id: cache-yarn-cypress
uses: actions/cache/save@v3
with:
path: |
${{ env.YARN_CACHE_PATH }}
${{ env.CACHE_PATH }}
key: yarn-global-cache-${{ steps.check-yarn-hash.outputs.yarnHash }} # Can use time based key as well
- name: Check disk space after installation
id: check-disk-space-after-installation
run: |
df -h
# Run Cypress e2e tests for changed samples (additionally install deps for all changed samples if there is no any created cache in master branch) + Create artifacts for Cypress screenshots and videos
run-e2e-test:
needs: [setup-matrix, install-main-dependencies]
if: ${{ needs.setup-matrix.outputs.matrix != '{"container":[]}' }}
runs-on: ubuntu-22.04
timeout-minutes: 30
strategy:
fail-fast: false
matrix: ${{fromJson(needs.setup-matrix.outputs.matrix)}}
steps:
- name: Checkout
id: checkout-e2e
uses: actions/checkout@v3
with:
repository: ${{ github.event.pull_request.head.repo.full_name }}
ref: ${{ github.event.pull_request.head.ref }}
fetch-depth: 0
- name: Free up some space
id: free-up-space-e2e
run: ${{ env.FILES_TO_DELETE }}
- name: Check disk space before install
id: check-disk-space-before-install-e2e
run: |
df -h
# Hash yarn.lock files to use it as a cache key, if yarn.lock files are changed, the cache will be invalidated
- name: Check Yarn hash
id: check-yarn-hash
run: |
yarnHash="$(npx hash-files -f '["**/yarn.lock"]' -a sha256)"
echo "yarnHash=$yarnHash" >> $GITHUB_OUTPUT
- name: Restore Yarn Global Cache
id: restore-yarn-global-cache-e2e
uses: actions/cache/restore@v3
with:
path: |
${{ env.YARN_CACHE_PATH }}
${{ env.CACHE_PATH }}
key: yarn-global-cache-${{ steps.check-yarn-hash.outputs.yarnHash }} # Can use time based key as well
restore-keys: |
yarn-global-cache
yarn-global-cache-
- name: Install deps
id: install-deps-e2e
if: steps.restore-yarn-global-cache-e2e.outputs.cache-hit != 'true'
env:
NODE_OPTIONS: "--max_old_space_size=4096"
run: |
echo "Yarn changed - install deps ... "
npm i lerna@6 -g
lerna bootstrap
- name: Install sample deps
id: install-sample-deps
# TODO Uncomment when yarn will work properly from the root and install all nessessary deps. Also please, add yarn install to the run section below instead of npx lerna exec
# if: steps.yarn-cache.outputs.cache-hit != 'true'
run: |
# npx lerna exec --stream --scope="${{ matrix.container }}*" --concurrency=1 "yarn install"
echo 'test'
- name: Cache Yarn and Cypress
if: steps.restore-yarn-global-cache-e2e.outputs.cache-hit != 'true'
id: cache-yarn-cypress
uses: actions/cache/save@v3
with:
path: |
${{ env.YARN_CACHE_PATH }}
${{ env.CACHE_PATH }}
key: yarn-global-cache-${{ steps.check-yarn-hash.outputs.yarnHash }} # Can use time based key as well
- name: Check disk space after install
id: check-disk-space-after-install-e2e
run: |
df -h
- name: Set up node
id: setup-node
uses: actions/setup-node@v3
with:
node-version: 16
- name: Run sample e2e tests
id: run-sample-e2e-tests
run: |
node -v
npx lerna run --scope=${{ matrix.container }} e2e:ci
- name: Create artifacts for Allure report
id: create-artifacts-allure-report
uses: actions/upload-artifact@v3
if: always()
with:
name: allure-results
path: 'cypress/results/allure-results'
retention-days: 7