PageBuilder Engine is a server-side + client-side rendering engine. It is designed for sites that consist of many separate pages that share a small number of templates that may be constantly changing.
Since PageBuilder Engine relies on private @wpmedia scoped packages, you must set an environment variable GITHUB_TOKEN during many of the installation or build steps. Ensure the token has at least read_packages enabled, and that it has already been authorized with the WPMedia SSO.
PageBuilder Engine uses a single master branch to produce multiple versions of the software that are identical except
for the version of Node they are running on. This is intended to simplify the upgrade process for customers, who have
historically been shy to upgrade because of the tendency for breaking code and configuration changes in major-version
releases. To ensure backward/forward compatibility, all automated tests are run against all supported and upcoming Node
versions.
Since the minor and patch versions of various Engine versions will not always align, their versions can be incremented
separately. This process is managed with the @changesets/cli package, which operates against the dummy-packages in
the .versions folder. Each dummy-package corresponds to one supported Engine version, and the version numbers are
automatically calculated and assigned in the GitHub Actions CI processes.
.versions/README.md.Merging into the master branch will trigger an official production release if (and only if) there are no changeset
files in the repo. If changeset files are detected, this will trigger a canary release instead.
You can run Engine either straight from this repo or using fusion-cli. Each have differences in setup, but same result runtime is achievable with minimal configuration. The steps below describe running Engine from this repo
npm i from the root ~/fusionnpm run start:adminUnit tests use Jest and will use a mix of packages installed from the root package.json and packages installed from the package.json files within each image (engine, resolver, etc). If you are seeing unexpected errors, make sure you run npm i in each folder.
Routing in Engine involves two primary components:
A third component is the resolver-generator,
which creates the resolver Lambda when Resolvers are modified in the
PageBuilder UI, but does not perform any actual routing.
The Fusion engine contains the core rendering functionality.
The Fusion admin is currently built on the
fusion-adminbranch of pb-web.
The Admin provides end users with website curation functionality.
The end goal is to replace pb-web with pb-admin.
The Engine developer experience mostly consists of:
Below is a list of available metrics emitted by Fusion components
| Metric | Description | Tags |
|---|---|---|
arc.fusion.origin.latency | Origin request time (milliseconds) | nile_env:[Origin Nile Environment] environment:[Arc Org-Env] arcSite:[Arc Site] |
| Metric | Description | Tags |
|---|---|---|
arc.fusion.cacheproxy.request_time | Overall Cache Proxy request time (milliseconds) | nile_env:[Cache-proxy Nile Environment] environment:[Arc Org (no env)] requestMethod:[GET, PUT, POST, DELETE] |
arc.fusion.cacheproxy.upstream_response_time | Upstream (Elasticache Cluster) latency (milliseconds) | nile_env:[Cache-proxy Nile Environment] environment:[Arc Org (no env)] requestMethod:[GET, PUT, POST, DELETE] |
| Metric | Description | Tags |
|---|---|---|
arc.fusion.cache.bytes | Size of returned cache object (bytes) | operation: [fetch] result:[success]source: [content source name] |
arc.fusion.cache.latency | Content cache latency (milliseconds) | operation: [fetch] result:[success, miss, error]source: [content source name] |
arc.fusion.compile.latency | Time to generate the rendering (milliseconds) | operation: [generate, setup, compile] |
arc.fusion.content.bytes | Content length in bytes (bytes) | operation:[fetch]source:[content source name] |
arc.fusion.content.latency | Latency to fetch content from a source (milliseconds) | operation:[fetch]result:[success, error]source:[content source name] |
arc.fusion.content.tracing.start | Content tracing start information | rootId:[id of calling request]traceId:[id of current request]source:[content source name]query:[content source query] |
arc.fusion.content.tracing.end | Content tracing end information | rootId:[id of calling request]traceId:[id of current request]status:[status code]source:[content source name]query:[content source query]value:[duration of http request (milliseconds)] |
arc.fusion.db.latency | Duration (milliseconds) to perform database operation | operation:[find, findOne, get, put] |
arc.fusion.render.latency | Time (ms) to render a component | render:[component] collection: [output-type, layout feature, chain] type:[feature type] |
PageBuilder Engine releases are documented in confluence here (internal) and displayed to our clients publically in ALC here.
For details on publishing new Engine version, see ./documentation/maintainers/PUBLISH.md.
Jenkinsfile (see example below)pipeline {
agent any
stages {
stage('Hello') {
steps {
echo 'Hello from repo branch'
}
}
}
}
Prerequisite: To SSH into the Build Server you will need a pem certificate. Ask someone on the engine team for it.
chmod 400 [path to pem file]ssh -i [path to pem file] [email protected]docker exec -ti jenkins bashsudo docker exec -it --user root jenkins bash
/data/jenkins/
/var/jenkins_home
Content type
Image
Digest
sha256:6e51e8010…
Size
8.5 MB
Last updated
3 months ago
docker pull washpost/fusion-cache-proxy