Skip to content

Commit

Permalink
Merge branch 'master' into docs/mdx-to-md
Browse files Browse the repository at this point in the history
# Conflicts:
#	tools/website-test/build.rs
#	website/README.md
Madoshakalaka committed Jan 12, 2022
2 parents df813ca + f05ba41 commit 9c3f7ca
Showing 156 changed files with 5,696 additions and 2,677 deletions.
6 changes: 6 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -6,3 +6,9 @@ updates:
interval: "weekly"
day: "friday"
open-pull-requests-limit: 5

- package-ecosystem: "npm"
directory: "/website"
schedule:
interval: "daily"
target-branch: "master"
267 changes: 204 additions & 63 deletions .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
@@ -1,94 +1,235 @@
name: Benchmark

on:
pull_request:
if: >-
(github.event.action == 'labeled' && github.event.label.name == 'performance') ||
(github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'performance'))
branches: [master]
types: [labeled, synchronize]

workflow_dispatch:
branches: [master]
push:
branches:
- master
pull_request_target:
types: [labeled, synchronize, opened, reopened]

permissions:
# deployments permission to deploy GitHub pages website
deployments: write
# contents permission to update benchmark contents in gh-pages branch
contents: write

jobs:
build:
results:
runs-on: ubuntu-latest
needs: benchmark

steps:
- uses: actions/checkout@v2
with:
repository: yewstack/js-framework-benchmark

- name: Configure benchmark
run: |
replace="yew = { git = \"${REPO_HTML_URL}\", branch = \"${BRANCH}\" }"
input=$(cat frameworks/keyed/yew/Cargo.toml)
output=$(echo "$input" | sed -e "s@yew = .*}@$replace@g")
if [[ "$input" == "$output" ]]; then
echo "ERROR: failed to configure Cargo.toml"
exit 1
fi
echo "$output" > frameworks/keyed/yew/Cargo.toml
echo "$output"
env:
# REPO_HTML_URL: ${{ github.event.pull_request.head.repo.html_url }}
REPO_HTML_URL: https://github.com/voidpumpkin/yew.git
# HEAD_REF: ${{ github.event.pull_request.head.ref }}
BRANCH: master

- name: Setup ChromeDriver
uses: nanasess/setup-chromedriver@master
- run: |
touch results.json
echo '${{ needs.benchmark.outputs.results }}' >> results.json
- name: Setup Rust
uses: actions-rs/toolchain@v1
# gh-pages branch is updated and pushed automatically with extracted benchmark data
- name: Store benchmark result
uses: benchmark-action/github-action-benchmark@v1
with:
toolchain: stable
name: "Yew master branch benchmarks (Lower is better)"
tool: "customSmallerIsBetter"
output-file-path: results.json
gh-pages-branch: "gh-pages"
# Access token to deploy GitHub Pages branch
github-token: ${{ secrets.GITHUB_TOKEN }}
# Push and deploy GitHub pages branch automatically
alert-threshold: "200%"
alert-comment-cc-users: "@yewstack/yew"
comment-always: ${{ github.event_name != 'pull_request_target' || contains(github.event.pull_request.labels.*.name, 'performance') }}
comment-on-alert: true
# Don't push to gh-pages if its a pull request
auto-push: ${{ github.event_name != 'pull_request_target' }}
save-data-file: ${{ github.event_name != 'pull_request_target' }}

benchmark:
runs-on: ubuntu-latest
outputs:
results: ${{ steps.results.outputs.stdout }}

- uses: actions-rs/install@v0.1
steps:
- uses: actions/checkout@v2
with:
crate: wasm-bindgen-cli
version: latest
use-tool-cache: true
path: "./yew"

- uses: actions-rs/install@v0.1
- uses: actions/checkout@v2
with:
crate: wasm-pack
version: latest
use-tool-cache: true
repository: krausest/js-framework-benchmark
path: "./js-framework-benchmark"

- uses: actions-rs/install@v0.1
- uses: actions-rs/toolchain@v1
with:
crate: https
version: latest
use-tool-cache: true
toolchain: stable
target: wasm32-unknown-unknown
override: true
profile: minimal

- name: Start Server
run: http -p 8080 &
- uses: jetli/wasm-pack-action@v0.3.0
with:
version: "latest"

- name: Setup Node
uses: actions/setup-node@v1
with:
node-version: 12
node-version: 16

- name: npm Install
- uses: Swatinem/rust-cache@v1
with:
working-directory: yew

- uses: actions/cache@v2
with:
path: ~/.npm
key: ${{ runner.os }}-benchmark-${{ hashFiles('js-framework-benchmark/package-lock.json') }}-${{ hashFiles('js-framework-benchmark/webdriver-ts/package-lock.json') }}
restore-keys: |
${{ runner.os }}-benchmark-
${{ runner.os }}
- name: save yew-struct setup
shell: bash
run: |
npm install
(cd webdriver-ts && npm install)
(cd webdriver-ts-results && npm install)
mkdir yew-struct-setup
cp -r js-framework-benchmark/frameworks/keyed/yew/* yew-struct-setup/
cd yew-struct-setup/bundled-dist
rm -rf ./*
# Will be enabled after https://github.com/krausest/js-framework-benchmark/pull/985 gets merged
# - name: save yew-hooks setup
# shell: bash
# run: |
# mkdir yew-hooks-setup
# cp -r js-framework-benchmark/frameworks/keyed/yew-hooks/* yew-hooks-setup/
# cd yew-hooks-setup/bundled-dist
# rm -rf ./*

- name: replace framework version in yew
shell: bash
run: |
replace=" \"frameworkVersion\": \"\""
input=$(cat yew-struct-setup/package.json)
output=$(echo "$input" | sed -e "s@\"frameworkVersion\": .*\"@$replace@g")
if [[ "$input" == "$output" ]]; then
echo "ERROR: failed to configure framework version"
exit 1
fi
echo "$output" > yew-struct-setup/package.json
echo "$output"
- name: Build
# Will be enabled after https://github.com/krausest/js-framework-benchmark/pull/985 gets merged
# - name: replace framework version in yew-hooks
# shell: bash
# run: |
# replace=" \"frameworkVersion\": \"\""
# input=$(cat yew-hooks-setup/package.json)
# output=$(echo "$input" | sed -e "s@\"frameworkVersion\": .*\"@$replace@g")
# if [[ "$input" == "$output" ]]; then
# echo "ERROR: failed to configure framework version"
# exit 1
# fi
# echo "$output" > yew-hooks-setup/package.json
# echo "$output"

- name: delete all frameworks
shell: bash
run: |
npm run build-prod
(cd webdriver-ts && npm run build-prod)
cd js-framework-benchmark/frameworks/keyed
rm -rf ./*
cd ../non-keyed
rm -rf ./*
- name: Benchmark
run: npm run bench -- --headless
- name: create framework folders
shell: bash
run: |
cd js-framework-benchmark/frameworks/keyed
mkdir yew-struct
# Will be enabled after https://github.com/krausest/js-framework-benchmark/pull/985 gets merged
# mkdir yew-hooks

- name: copy necessary framework files
shell: bash
run: |
cp -r yew-struct-setup/* js-framework-benchmark/frameworks/keyed/yew-struct/
# Will be enabled after https://github.com/krausest/js-framework-benchmark/pull/985 gets merged
# cp -r yew-hooks-setup/* js-framework-benchmark/frameworks/keyed/yew-hooks/

- name: build benchmark-struct app
shell: bash
run: |
cd yew/tools/benchmark-struct
npm ci
npm run build-prod-without-tools-install
- name: build benchmark-hooks app
shell: bash
run: |
cd yew/tools/benchmark-hooks
npm ci
npm run build-prod-without-tools-install
- name: move dist files
shell: bash
run: |
mv yew/tools/benchmark-struct/bundled-dist js-framework-benchmark/frameworks/keyed/yew-struct/
# Will be enabled after https://github.com/krausest/js-framework-benchmark/pull/985 gets merged
# mv yew/tools/benchmark-hooks/bundled-dist js-framework-benchmark/frameworks/keyed/yew-hooks/

- name: js-framework-benchmark npm ci
shell: bash
run: |
cd js-framework-benchmark
npm ci
- name: js-framework-benchmark npm start
shell: bash
run: |
cd js-framework-benchmark
npm start &
- name: js-framework-benchmark/webdriver-ts npm ci
shell: bash
run: |
cd js-framework-benchmark/webdriver-ts
npm ci
npm install chromedriver --chromedriver-force-download
- name: js-framework-benchmark/webdriver-ts npm run compile
shell: bash
run: |
cd js-framework-benchmark/webdriver-ts
npm run compile
- name: js-framework-benchmark npm run build-prod
shell: bash
run: |
cd js-framework-benchmark
npm run build-prod
- name: Results
run: npm run results
- name: js-framework-benchmark/webdriver-ts npm run bench
shell: bash
run: |
cd js-framework-benchmark/webdriver-ts
npm run bench -- --headless
- name: Log results
- name: transform results into json
shell: bash
run: |
msg=$(cd results_diff && cargo run)
echo "$msg"
cd js-framework-benchmark/webdriver-ts/results
touch temp.txt
echo "[" >> temp.txt
for filename in *.json; do cat ${filename} >> temp.txt; echo "," >> temp.txt; done
sed -i '$ s/.$//' temp.txt #remove trailing comma
echo "]" >> temp.txt
mv temp.txt results.json
- name: Build process-benchmark-results
shell: bash
run: |
cd yew
cargo build --release -p process-benchmark-results
- name: transform results to be fit for display benchmark-action/github-action-benchmark@v1
uses: mathiasvr/command-output@v1
id: results
with:
run: cat js-framework-benchmark/webdriver-ts/results/results.json | ./yew/target/release/process-benchmark-results
10 changes: 8 additions & 2 deletions .github/workflows/build-website.yml
Original file line number Diff line number Diff line change
@@ -20,15 +20,21 @@ jobs:
PR_INFO_FILE: ".PR_INFO"
steps:
- uses: actions/checkout@v2

- name: Setup node
uses: actions/setup-node@v1
with:
node-version: "14.x"
node-version: "16"

- name: Build
- name: Check Translations
run: |
cd website
npm install
npm run check-translations
- name: Build
run: |
cd website
npm run build
- name: Upload build artifact
5 changes: 5 additions & 0 deletions .github/workflows/publish-examples.yml
Original file line number Diff line number Diff line change
@@ -61,6 +61,11 @@ jobs:
continue
fi
# ssr does not need trunk
if [[ "$example" == "simple_ssr" ]]; then
continue
fi
echo "building: $example"
(
cd "$path"
7 changes: 7 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -101,3 +101,10 @@ Below, you can find some useful guidance and best practices on how to write APIs

- [The Rust API Guidelines](https://rust-lang.github.io/api-guidelines/)
- [Elegant Library APIs in Rust](https://deterministic.space/elegant-apis-in-rust.html)

## Website

The source code of our website ([https://yew.rs](https://yew.rs)) is in the [website directory](website).
Most of the times, edits can be done in markdown.

[website/README.md](website/README.md) has more detailed instructions.
5 changes: 5 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -14,6 +14,7 @@ members = [
"examples/counter",
"examples/dyn_create_destroy_apps",
"examples/file_upload",
"examples/function_memory_game",
"examples/function_todomvc",
"examples/futures",
"examples/game_of_life",
@@ -26,6 +27,7 @@ members = [
"examples/password_strength",
"examples/portals",
"examples/router",
"examples/simple_ssr",
"examples/timer",
"examples/todomvc",
"examples/two_apps",
@@ -35,6 +37,9 @@ members = [

# Tools
"tools/changelog",
"tools/process-benchmark-results",
"tools/benchmark-struct",
"tools/benchmark-hooks",
]
exclude = [
# Tools
Loading

0 comments on commit 9c3f7ca

Please sign in to comment.