[Aviraj] ci changes #7
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, Release, and Deploy | |
on: | |
push: | |
branches: [main] # Deploy on main branch updates | |
tags: ['v*'] # Create release on version tags | |
workflow_dispatch: # Allow manual trigger | |
permissions: | |
contents: write # Required for creating releases | |
pages: write # Required for deploying to Pages | |
id-token: write # Required for deploying to Pages | |
# Environment for Pages deployment | |
env: | |
GITHUB_PAGES_URL: ${{ github.event.repository.html_url }} | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup Emscripten | |
uses: mymindstorm/setup-emsdk@v12 | |
with: | |
version: latest | |
actions-cache-folder: 'emsdk-cache' | |
- name: Verify Emscripten Installation | |
run: emcc --version | |
- name: Create Build Directory | |
run: mkdir build | |
- name: Configure CMake | |
run: | | |
cd build | |
emcmake cmake .. | |
- name: Build | |
run: | | |
cd build | |
emmake make | |
ls -la | |
- name: Prepare Deployment Files | |
run: | | |
mkdir -p dist | |
# Copy build artifacts | |
if [ -f "build/terminal.wasm" ]; then | |
cp build/terminal.wasm dist/ | |
else | |
echo "terminal.wasm not found in build directory" | |
exit 1 | |
fi | |
if [ -f "build/terminal.js" ]; then | |
cp build/terminal.js dist/terminal.generated.js | |
else | |
echo "terminal.js not found in build directory" | |
exit 1 | |
fi | |
# Copy source files | |
cp terminal.js dist/ | |
cp config.js dist/ | |
cp index.html dist/ | |
echo "Contents of dist directory:" | |
ls -la dist/ | |
# Create release if this is a tag push | |
- name: Create Release | |
if: startsWith(github.ref, 'refs/tags/') | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: | | |
dist/terminal.wasm | |
dist/terminal.generated.js | |
dist/terminal.js | |
dist/config.js | |
dist/index.html | |
body: | | |
WebAssembly Terminal Release | |
- terminal.wasm: WebAssembly binary | |
- terminal.generated.js: Emscripten generated JavaScript | |
- terminal.js: Terminal implementation | |
- config.js: WebAssembly configuration | |
- index.html: Web interface | |
Try it live at: ${{ env.GITHUB_PAGES_URL }}/wasm_terminal | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# Upload the dist directory for Pages deployment | |
- name: Upload Pages artifact | |
uses: actions/upload-pages-artifact@v2 | |
with: | |
path: dist | |
# Deploy to GitHub Pages | |
deploy: | |
needs: build | |
runs-on: ubuntu-latest | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
steps: | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v2 |