Skip to content

test deployment

test deployment #45

Workflow file for this run

name: Demo Deployment
on:
push:
branches:
- main
- 'gcweb-pr*'
- demo-deploy
jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
# Step 1: Checkout the repository and initialize submodules
- name: Checkout repository
uses: actions/checkout@v3
with:
submodules: recursive # Initializes and updates submodules automatically
# Step 2: Set up Node.js and Bower
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install Bower
run: npm install -g bower
# Step 3: Install dependencies and build demo files
- name: Install dependencies
run: npm install --legacy-peer-deps
- name: Build Demo Files (GCWeb)
run: |
grunt demo --branch=${{ github.ref_name }}
docker compose up -d
sleep 20
docker compose down
- name: Build Demo Files (WET-BOEW)
run: grunt dist
# Step 4: Copy built files directly to the root of the gh-pages directory
- name: Copy Built Files to gh-pages Root
run: |
# Ensure the gh-pages directory exists
mkdir -p ${{ github.workspace }}/gh-pages
# Copy the contents of ~sites and dist directly to the root of gh-pages without retaining subdirectories
if [ -d "./~sites" ]; then
rsync -av --remove-source-files --exclude='*/' ./~sites/ ${{ github.workspace }}/gh-pages/
fi
if [ -d "./dist" ]; then
rsync -av --remove-source-files --exclude='*/' ./dist/ ${{ github.workspace }}/gh-pages/
fi
# Step 5: Initialize or Update gh-pages Branch
- name: Initialize or Update gh-pages Branch
run: |
GHPAGES_PATH="${{ github.workspace }}/gh-pages"
# Remove gh-pages directory if it exists to start clean
if [ -d "$GHPAGES_PATH" ]; then
rm -rf "$GHPAGES_PATH"
fi
# Clone the gh-pages branch if it exists, or create it if not
git clone https://github.com/${{ github.repository_owner }}/GCWeb.git "$GHPAGES_PATH"
cd "$GHPAGES_PATH"
if git rev-parse --verify origin/gh-pages; then
git checkout gh-pages
git pull origin gh-pages
else
git checkout --orphan gh-pages
git rm -rf .
touch .nojekyll
git add .nojekyll
git commit -m "Initialize gh-pages branch"
git push --force origin gh-pages
fi
# Set Git user identity for commits in this environment
git config user.name "GitHub Actions"
git config user.email "[email protected]"
# Add or update the submodule for the demo if necessary
if [ ! -d "GCWeb" ]; then
git submodule add -b master https://github.com/ServiceCanada/wet-boew-demos.git GCWeb
fi
# Check if .gitmodules exists before attempting to add it
if [ -f .gitmodules ]; then
git add .gitmodules
fi
git add GCWeb
git commit -m "Update submodule GCWeb" --allow-empty
git pull --rebase origin gh-pages || true # Sync with remote, ignore rebase errors
# Step 6: Configure Remote with GitHub Token for Authentication
- name: Configure Remote with GitHub Token
run: |
cd ${{ github.workspace }}/gh-pages
# Set the remote URL to use the GitHub token for authentication
git remote set-url origin https://${{ secrets.GH_PAT }}@github.com/${{ github.repository_owner }}/GCWeb.git
# Step 7: Force Push to gh-pages
- name: Force Push to gh-pages
run: |
cd ${{ github.workspace }}/gh-pages
# Repack the repository to avoid any potential issues with large or corrupt objects
git gc --prune=now
git repack -a -d --depth=250 --window=250
# Force push changes to gh-pages with authentication
git push origin gh-pages --force