ci: setup playwright #471
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build, Test, and Deploy | |
on: | |
pull_request: | |
types: | |
- opened | |
- synchronize | |
- reopened | |
push: | |
branches: | |
- master | |
jobs: | |
check-rebase: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Ensure full history is fetched | |
- name: Add upstream remote | |
run: | | |
# Add the upstream repository (base repo) | |
echo "Adding upstream remote..." | |
git remote add upstream https://github.com/siemens/ngx-datatable.git | |
git fetch upstream | |
echo "Upstream remote added and fetched." | |
- name: Attach to PR Branch | |
run: | | |
echo "Checking out the PR branch: ${{ github.head_ref }}" | |
git checkout ${{ github.head_ref }} | |
echo "Checked out branch: ${{ github.head_ref }}" | |
- name: Fetch the latest upstream master (or main) branch | |
run: | | |
echo "Fetching latest master from upstream..." | |
git fetch upstream master # or main if that's your default branch | |
echo "Fetched latest master branch from upstream." | |
- name: Verify PR and Upstream master State | |
run: | | |
UPSTREAM=master # Use 'main' if your default branch is named 'main' | |
echo "Target upstream branch: $UPSTREAM" | |
CURRENT=$(git rev-parse HEAD) | |
MERGED=$(git merge-base HEAD upstream/$UPSTREAM) | |
echo "Current commit hash: $CURRENT" | |
echo "Merged commit hash: $MERGED" | |
# Check if the branch is rebased or not | |
if [ "$MERGED" != "$CURRENT" ]; then | |
echo "This branch is not rebased with the latest $UPSTREAM." | |
echo "Run 'git rebase upstream/$UPSTREAM' locally to fix this." | |
exit 1 | |
else | |
echo "Branch is up-to-date with $UPSTREAM." | |
fi | |
build: | |
needs: check-rebase | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set Node Version | |
uses: actions/setup-node@v4 | |
with: | |
node-version: lts/iron | |
- name: Set the branch name | |
id: set_branch | |
run: | | |
BRANCH_NAME=${{ github.head_ref }} | |
echo "Branch name is: $BRANCH_NAME" | |
# Check for remote branch | |
REMOTE_BRANCH=$(git ls-remote --heads https://[email protected]/chintankavathia/ngx-datatable-snapshots.git $BRANCH_NAME) | |
echo "Remote branch lookup result: $REMOTE_BRANCH" | |
if [ -n "$REMOTE_BRANCH" ]; then | |
echo "Branch $BRANCH_NAME exists" | |
echo "branch=$BRANCH_NAME" >> $GITHUB_ENV | |
else | |
echo "Branch $BRANCH_NAME does not exist, defaulting to main" | |
echo "branch=main" >> $GITHUB_ENV | |
fi | |
- name: Clone Snapshot Repository | |
run: | | |
git clone https://[email protected]/chintankavathia/ngx-datatable-snapshots.git temp_snapshots | |
cd temp_snapshots | |
git checkout ${{ env.branch }} | |
env: | |
SNAPSHOT_REPO_TOKEN: ${{ secrets.SNAPSHOT_REPO_TOKEN }} | |
- name: Copy Snapshots to Playwright Folder | |
run: | | |
mkdir -p playwright/snapshots | |
cp -r temp_snapshots/snapshots/e2e playwright/snapshots/ | |
rm -rf temp_snapshots | |
- name: Install | |
uses: bahmutov/npm-install@v1 | |
- name: Build and package library | |
run: | | |
npm run package --if-present | |
env: | |
CI: true | |
- name: Format | |
run: | | |
npm run format:check --if-present | |
env: | |
CI: true | |
- name: Build | |
run: | | |
npm run build --if-present | |
env: | |
CI: true | |
- name: Test | |
run: | | |
npm run ci --if-present | |
env: | |
CI: true | |
- name: E2E Prepare | |
run: | | |
npm run e2e:prepare --if-present | |
env: | |
CI: true | |
- name: E2E | |
run: | | |
npm run vrt --if-present | |
env: | |
CI: true | |
- name: Build Docs | |
run: | | |
npm run build-docs --if-present | |
env: | |
CI: true | |
- name: Deploy Docs | |
uses: JamesIves/[email protected] | |
with: | |
branch: gh-pages | |
folder: dist/ngx-datatable | |
if: ${{ github.ref == 'refs/heads/master' }} |