summaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
authorAli Mohammad Pur <ali.mpfard@gmail.com>2022-11-22 17:09:00 +0330
committerAli Mohammad Pur <Ali.mpfard@gmail.com>2022-11-26 02:23:15 +0330
commit7c93724ee028723fd9243ae28bc78764a78ee275 (patch)
tree3f80d387668feb6c862a1d4f852422c91fd89c93 /.github/workflows
parentf1029316888b5a4034085547f3b1e2db2ca1bd42 (diff)
downloadserenity-7c93724ee028723fd9243ae28bc78764a78ee275.zip
Meta: Build and deploy the WebAssembly LibJS REPL on merge
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/wasm.yml100
1 files changed, 100 insertions, 0 deletions
diff --git a/.github/workflows/wasm.yml b/.github/workflows/wasm.yml
new file mode 100644
index 0000000000..cb8bbaa034
--- /dev/null
+++ b/.github/workflows/wasm.yml
@@ -0,0 +1,100 @@
+name: Build Wasm Modules
+on: [ push, pull_request ]
+
+env:
+ SERENITY_SOURCE_DIR: ${{ github.workspace }}
+
+concurrency: wasm
+
+jobs:
+ build:
+ runs-on: ubuntu-22.04
+ if: github.repository == 'SerenityOS/serenity'
+ strategy:
+ fail-fast: false
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-python@v4
+ with:
+ python-version: '3.x'
+ - name: "Install Ubuntu dependencies"
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y ninja-build emscripten gcc-12 g++-12 libstdc++-12-dev
+ - name: "Check versions"
+ run: |
+ set +e
+ emcc --version
+ ninja --version
+ gcc --version
+ - name: "Create build directories"
+ run: |
+ mkdir -p ${{ github.workspace }}/Build/lagom-tools/TZDB
+ mkdir -p ${{ github.workspace }}/Build/lagom-tools/UCD
+ mkdir -p ${{ github.workspace }}/Build/lagom-tools/CLDR
+ mkdir -p ${{ github.workspace }}/Build/wasm
+ - name: "TimeZoneData cache"
+ uses: actions/cache@03e00da99d75a2204924908e1cca7902cafce66b
+ with:
+ path: ${{ github.workspace }}/Build/lagom-tools/TZDB
+ key: TimeZoneData-${{ hashFiles('Meta/CMake/time_zone_data.cmake') }}
+ - name: "UnicodeData cache"
+ uses: actions/cache@03e00da99d75a2204924908e1cca7902cafce66b
+ with:
+ path: ${{ github.workspace }}/Build/lagom-tools/UCD
+ key: UnicodeData-${{ hashFiles('Meta/CMake/unicode_data.cmake') }}
+ - name: "UnicodeLocale cache"
+ uses: actions/cache@03e00da99d75a2204924908e1cca7902cafce66b
+ with:
+ path: ${{ github.workspace }}/Build/lagom-tools/CLDR
+ key: UnicodeLocale-${{ hashFiles('Meta/CMake/locale_data.cmake') }}
+ - name: "Build host lagom tools"
+ run: |
+ cmake -GNinja \
+ -B ${{ github.workspace }}/Build/lagom-tools \
+ -S ${{ github.workspace }}/Meta/Lagom \
+ -DBUILD_LAGOM=OFF \
+ -DCMAKE_C_COMPILER=gcc-12 \
+ -DCMAKE_CXX_COMPILER=g++-12 \
+ -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/Build/lagom-tools \
+ -Dpackage=LagomTools
+
+ ninja -C ${{ github.workspace }}/Build/lagom-tools install
+ - name: "Create wasm build environment"
+ run: |
+ emcmake cmake -GNinja \
+ -B ${{ github.workspace }}/Build/wasm \
+ -S ${{ github.workspace }}/Meta/Lagom \
+ -DLagomTools_DIR=${{ github.workspace }}/Build/lagom-tools/share/LagomTools \
+ -DBUILD_LAGOM=ON \
+ - name: "Build libjs.{js,wasm}"
+ run: |
+ ninja -C ${{ github.workspace }}/Build/wasm libjs.js
+ - name: "Show me what you built :)"
+ run: |
+ ls -l ${{ github.workspace }}/Build/wasm
+
+ - name: "Checkout linusg/libjs-website"
+ if: github.ref == 'refs/heads/master'
+ uses: actions/checkout@v3
+ with:
+ repository: linusg/libjs-website
+ path: libjs-website
+
+ - name: "Prepare updated REPL data"
+ if: github.ref == 'refs/heads/master'
+ run: |
+ cp ${{ github.workspace }}/Build/wasm/libjs.js libjs-website/repl/libjs.js
+ cp ${{ github.workspace }}/Build/wasm/libjs.wasm libjs-website/repl/libjs.wasm
+ echo 'Module.SERENITYOS_COMMIT = "${{ github.sha }}";' >> libjs-website/repl/libjs.js
+
+ - name: "Deploy to GitHub Pages"
+ if: github.ref == 'refs/heads/master'
+ uses: JamesIves/github-pages-deploy-action@4.1.1
+ with:
+ git-config-name: BuggieBot
+ git-config-email: buggiebot@serenityos.org
+ branch: main
+ repository-name: linusg/libjs-website
+ token: ${{ secrets.BUGGIEBOT }}
+ folder: libjs-website