test deployment #36
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: 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 | |
- name: Build Demo Files (WET-BOEW) | |
run: grunt dist | |
# Step 4: Copy built files to the gh-pages directory | |
- name: Copy Built Files to gh-pages | |
run: | | |
# Ensure the gh-pages directory exists | |
mkdir -p ${{ github.workspace }}/gh-pages | |
# Copy the built files to gh-pages | |
if [ -d "./~sites" ]; then rsync -av ./~sites/ ${{ github.workspace }}/gh-pages/; fi | |
if [ -d "./dist" ]; then rsync -av ./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 | |
# Move into the gh-pages directory and configure user for commits | |
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 | |
# Commit any changes in submodules | |
git add .gitmodules GCWeb | |
git commit -m "Update submodule GCWeb" --allow-empty | |
git pull --rebase origin gh-pages || true # Sync with remote, ignore rebase errors | |
# Step 6: Force Push to gh-pages Branch | |
- name: Force Push to gh-pages | |
run: | | |
cd ${{ github.workspace }}/gh-pages | |
git push origin gh-pages --force |