Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Streamline build processes with esbuild #10399

Merged
merged 43 commits into from
Jul 19, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
ff559c7
build workers, third party, and combine with eslint
ggetz May 11, 2022
4bb8024
combine output
ggetz May 11, 2022
355dd42
Updated build process
ggetz May 24, 2022
54ef709
Spec and worker fixes
ggetz May 25, 2022
eb60fbf
cleanup build tasks
ggetz May 25, 2022
f6cf110
clean up gulp tasks and naming
ggetz May 25, 2022
bddf66e
Remove requireJS from LICENSE and ThirdParty.json
ggetz May 25, 2022
e71c886
Update build guide
ggetz May 25, 2022
eb87e96
Tweak travis file
ggetz May 26, 2022
44b9610
karma specs and coverage
ggetz May 27, 2022
0871e6a
sourcemap by default for dev only
ggetz May 27, 2022
27bbdbf
Tweaks for CI
ggetz May 27, 2022
ec317da
Sandcastle
ggetz May 27, 2022
16a9c80
Fix up build output names and apps
ggetz May 27, 2022
7ac3fd0
coverage
ggetz Jun 2, 2022
d867651
Tweak specs
ggetz Jun 2, 2022
290bed0
Tweak build guide
ggetz Jun 2, 2022
3938feb
Tweak tests
ggetz Jun 2, 2022
4ecefb5
Merge branch 'main' into build
ggetz Jun 6, 2022
867ab1a
Cleanup documentation
ggetz Jun 6, 2022
6404f52
Test cleanup
ggetz Jun 6, 2022
1f99b62
Cleanup
ggetz Jun 6, 2022
018aca6
Tweak watched files
ggetz Jun 6, 2022
3293a5b
Cleanup coverage
ggetz Jun 8, 2022
4cf8ba1
Legal comments
ggetz Jun 9, 2022
318c276
Cleanup rollup dependencies
ggetz Jun 14, 2022
6a31cf1
Clarify documentation
ggetz Jun 15, 2022
8d7faae
Merge branch 'main' into build
ggetz Jun 15, 2022
312cb98
Fix build error and warning
ggetz Jun 22, 2022
9905c12
Merge branch 'main' into build
ggetz Jun 22, 2022
1fbc968
2020
ggetz Jun 22, 2022
213cdfc
Rollback script naming changes
ggetz Jun 22, 2022
6ae6cda
prettier
ggetz Jun 30, 2022
8bc8355
Remove worker changes
ggetz Jul 6, 2022
3a8e5c8
Remove extraneous "the"
ggetz Jul 12, 2022
0a19ae3
Merge branch 'main' into build
ggetz Jul 13, 2022
095033d
Update CHANGES.md
ggetz Jul 13, 2022
17babe9
Tweak workers, remove pervasive spread operations
ggetz Jul 13, 2022
ad0dc45
prettier
ggetz Jul 13, 2022
24c4590
Merge branch 'main' into build
ggetz Jul 15, 2022
d6b9a96
Fix typo
ggetz Jul 15, 2022
c575a3f
Feedback update
ggetz Jul 19, 2022
7fd59fd
Tweak node target
ggetz Jul 19, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 1 addition & 19 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,29 +23,11 @@ Thumbs.db
/Source/Workers/**
!/Source/Workers/cesiumWorkerBootstrapper.js
!/Source/Workers/transferTypedArrayTest.js
!/Source/Workers/package.json

Source/ThirdParty/_commonjsHelpers*
Source/ThirdParty/Autolinker.js
Source/ThirdParty/bitmap-sdf.js
Source/ThirdParty/dompurify.js
Source/ThirdParty/earcut.js
Source/ThirdParty/draco_decoder.wasm
Source/ThirdParty/Workers/draco_decoder_nodejs.js
Source/ThirdParty/grapheme-splitter.js
Source/ThirdParty/jsep.js
Source/ThirdParty/kdbush.js
Source/ThirdParty/ktx-parse.js
Source/ThirdParty/lerc.js
Source/ThirdParty/mersenne-twister.js
Source/ThirdParty/meshoptimizer.js
Source/ThirdParty/nosleep.js
Source/ThirdParty/pako.js
Source/ThirdParty/protobufjs.js
Source/ThirdParty/rbush.js
Source/ThirdParty/topojson.js
Source/ThirdParty/Tween.js
Source/ThirdParty/Uri.js
Source/ThirdParty/zip.js
Source/ThirdParty/Workers/pako_inflate.min.js
Source/ThirdParty/Workers/pako_deflate.min.js
Source/ThirdParty/Workers/z-worker-pako.js
Expand Down
8 changes: 4 additions & 4 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ script:
- npm --silent run markdownlint
- npm --silent run prettier-check

- npm --silent run build
- npm --silent run build -- --node

- npm --silent run coverage -- --browsers FirefoxHeadless --webgl-stub --failTaskOnError --suppressPassed

- travis_wait 20 npm --silent run makeZipFile -- --concurrency 1
- npm pack &> /dev/null

- npm --silent run buildApps
- npm --silent run build-specs

- npm --silent run deploy-s3 -- -b cesium-dev -d cesium/$TRAVIS_BRANCH --confirm -c 'no-cache'
- npm --silent run deploy-status -- --status success --message Deployed
Expand All @@ -28,7 +28,7 @@ script:

# Various Node.js smoke-screen tests
- node -e "const Cesium = require('./');"
- NODE_ENV=development node index.cjs
- NODE_ENV=production node index.cjs
- NODE_ENV=development node Specs/test.cjs
- NODE_ENV=production node Specs/test.cjs

- npm --silent run cloc
6 changes: 4 additions & 2 deletions Apps/CesiumViewer/CesiumViewer.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
window.CESIUM_BASE_URL = "../../Source/";
if (window.CESIUM_BASE_URL === undefined) {
window.CESIUM_BASE_URL = "../../Build/CesiumUnminified/";
}

import {
Cartesian3,
Expand All @@ -16,7 +18,7 @@ import {
Viewer,
viewerCesiumInspectorMixin,
viewerDragDropMixin,
} from "../../Source/Cesium.js";
} from "../../Build/CesiumUnminified/index.js";

function main() {
/*
Expand Down
1 change: 1 addition & 0 deletions Apps/CesiumViewer/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
window.CESIUM_BASE_URL = ".";
4 changes: 2 additions & 2 deletions Apps/Sandcastle/load-cesium-es6.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// This file loads the unbuilt ES6 version of Cesium
// into the global scope during local developmnet
window.CESIUM_BASE_URL = "../../../Source/";
import * as Cesium from "../../Source/Cesium.js";
window.CESIUM_BASE_URL = "../../../Build/CesiumUnminified/";
import * as Cesium from "../../Build/CesiumUnminified/index.js";
window.Cesium = Cesium;

// Since ES6 modules have no guaranteed load order,
Expand Down
5 changes: 0 additions & 5 deletions Apps/Sandcastle/standalone.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,6 @@
<script type="text/javascript" src="Sandcastle-header.js"></script>
<script type="text/javascript" src="Sandcastle-client.js"></script>
<script type="text/javascript" src="ThirdParty/pako.min.js"></script>
<script
type="text/javascript"
src="../../Build/CesiumUnminified/Cesium.js"
nomodule
></script>
<script type="module" src="load-cesium-es6.js"></script>
<script type="text/javascript" src="Sandcastle-helpers.js"></script>
<style>
Expand Down
5 changes: 0 additions & 5 deletions Apps/Sandcastle/templates/bucket-requirejs.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,6 @@
/>
<title>Cesium Demo</title>
<script type="text/javascript" src="../Sandcastle-header.js"></script>
<script
type="text/javascript"
src="../../../Build/CesiumUnminified/Cesium.js"
nomodule
></script>
<script type="module" src="../load-cesium-es6.js"></script>
</head>
<body
Expand Down
4 changes: 4 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
##### Breaking Changes :mega:

- Tilesets and entities now use `ModelExperimental` by default. This can still be changed by setting `ExperimentalFeatures.enableModelExperimental = false`. [#10530](https://github.com/CesiumGS/cesium/pull/10530)
- Built `Cesium.js` is no longer AMD format. This may or may not be a breaking change depending on how you use Cesium in your app. See our [blog post](TODO) for the full details. [#10399](https://github.com/CesiumGS/cesium/pull/10399)
- If you were ingesting individual ESM-style modules from the combined file `Build/Cesium/Cesium.js` or `Build/CesiumUnminified/Cesium.js`, instead use `Build/Cesium/index.js` or `Build/CesiumUnminified/index.js` respectively.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't Cesium now 100% require a bundler to use modules? (And a bundler that allows for node resolution rules at that). Or are we still embedding third party code?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're embedding the third-party code in these builds. In the blog post I mention that production apps that use their own bundler should be using modules directly Source, which does not have third party code bundled. Which is what we've previously recommended as well if I understand correctly.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have previously recommended it, but since we embedded ThirdParty code in source, you didn't need a bundler to use them. Now you do.

Another problem I just noticed is that package.json lists everything as a dev dependency, which may not be correct because that means if I npm install Cesium and then try to use Source it's going to pull in modules that don't exist because they are not a dependency or peerDependency.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gotcha, I see the distinction. For the point about the bundler, I will update both CHANGES.md and the blog post with the requirement.

For the latter, I will package.json such that modules in Source/ThirdParty are now marked as direct dependencies. Sound correct?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. It's unfortunate because people who want to use the bundled Cesium.js still need to sync those dependencies but there's no other way that I know of to do it and have all usage-types work.

Copy link
Contributor

@thw0rted thw0rted Jul 20, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey all, speaking of package.json, would this be a good time to address #9212 as well? It's really important to get the exports right, I had a workaround but had to get rid of it to be able to use another important dependency at all...

ETA: to clarify, any resource that you intend for people to be able to bundle or extract separately (CSS, images, maybe data files like terrain height / IAU JSON) should have its own exports entry, and excluding those entries makes consumption of the resources effectively impossible.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @thw0rted, thanks for pointing this out! We have some additional thoughts on related improvements beyond just this PR, including considering #9212. We'll add our thoughts or any updates to that issue.

- `CESIUM_BASE_URL` should be set to either `Build/Cesium` or `Build/CesiumUnminfied`.
- Built `Cesium.js` has gone from `12.5MB` to `8.4MB` unminified and from `4.3MB` to `3.6MB` minified. `Cesium.js.map` has gone from `22MB` to `17.2MB`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should probably be absolutely top of the list with 📣, it's not a breaking change and it's a huge deal.


##### Additions :tada:

Expand Down
90 changes: 54 additions & 36 deletions Documentation/Contributors/BuildGuide/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
- [Quickstart](#quickstart)
- [Get the Code](#get-the-code)
- [Build the Code](#build-the-code)
- [Development Server](#development-server)
- [Build Output](#build-output)
- [Build Scripts](#build-scripts)
- [Travis and Continuous Integration](#travis-and-continuous-integration)
- [Configure a Different S3 Bucket](#configure-a-different-s3-bucket)
Expand All @@ -29,8 +31,6 @@

4. Navigate to : [`http://localhost:8080/`](http://localhost:8080)

_NOTE: If you change branches, you might have to rebuild._

---

## Get the Code
Expand All @@ -55,7 +55,7 @@ _NOTE: If you change branches, you might have to rebuild._

Prerequisites:

- Install [Node.js](http://nodejs.org/) on your system. Building Cesium requires Node 6.x or newer.
- Install [Node.js](http://nodejs.org/) on your system. Building Cesium requires Node 14.x or newer.
ggetz marked this conversation as resolved.
Show resolved Hide resolved

Cesium uses [npm modules](https://docs.npmjs.com/getting-started/what-is-npm) for development, so after syncing, you need to run `npm install` from the Cesium root directory:

Expand All @@ -69,6 +69,12 @@ Once all modules have been installed, run `npm run build` to actually build the
npm run build
```

Alternatively, if you want to edit source files and see the changes reflected for testing, use `npm run build-watch`.

```bash
npm run build-watch
```

Cesium ships with a simple HTTP server for testing, run `npm start` after building to use it:

```bash
Expand All @@ -82,12 +88,7 @@ Then browse to [http://localhost:8080/](http://localhost:8080/). The landing pag
- **Test Suites** : tests using [Jasmine](https://jasmine.github.io/). [Testing guide here.](https://github.com/CesiumGS/cesium/blob/main/Documentation/Contributors/TestingGuide/README.md#testing-guide)
- **Documentation** : reference documentation built from source. [Documentation guide here.](https://github.com/CesiumGS/cesium/blob/main/Documentation/Contributors/DocumentationGuide/README.md#documentation-guide)

Cesium can be used in two different ways. Cesium can be either a set of modules using [Asynchronous Module Definition (AMD)](https://github.com/amdjs/amdjs-api/wiki/AMD), or it can be built as one combined file containing all modules. The basics:

- `npm run build` will build AMD Cesium. This also builds Cesium Viewer and Sandcastle.
- `npm run minifyRelease` creates the built version of Cesium. This also builds Hello World.

Read the complete list of build scripts below for more details.
### Development Server

By default, the server only allows connections from your local machine. To allow connections from other machines, pass
the `--public` option to npm. Note the extra `--` is intentional and required by npm.
Expand All @@ -96,12 +97,26 @@ the `--public` option to npm. Note the extra `--` is intentional and required by
npm start -- --public
```

The development server has a few other options as well, which you can see by pasing the `--help` parameter:
The development server has a few other options as well, which you can see by passing the `--help` parameter:

```bash
npm start -- --help
```

### Build Output

Cesium offers a few different distributions. When developing, make sure to pick the one that fits your app's architecture.

- [IIFE (immediately-invoked function expression)](https://developer.mozilla.org/en-US/docs/Glossary/IIFE) - A pre-processed bundle and optimized for the browser, which defines a `Cesium` global variable upon loading `Build/Cesium/Cesium.js`. While much of our documentation uses IIFE-style globals for ease-of-use, we do not recommend this approach for production apps.
- [ESM (ECMAScript modules)](https://nodejs.org/api/esm.html) - Standard for packaging JS code which is supported by most browsers and NodeJS. Modules use `import` and `export` statements. Unprocessed, individual modules are available in the `Source` directory, accessible by importing `Source/Cesium.js`; A single pre-processed bundle by importing `Build/Cesium/index.js`.
- [CJS (CommonJS)](https://nodejs.org/api/modules.html) - A pre-processed, bundled module packaged for running in NodeJS accessible by requiring `index.cjs`.

In much of our documentation, we use IIFE as it can be easily loaded with a CDN and defines a global _Cesium_ variable with all modules attached.

For a production app, we recommend using the `Source` modules directly which will allow your build tool of choice to reduce the final release's size using tree shaking.

Read the complete list of build scripts and options below for more details.

While you can use the editor of your choice to develop Cesium, certain files, such as `glsl` and new tests, require that
the `build` task be executed in order for the changes to take effect. You can use the `build-watch` script to have this
happen automatically.
Expand All @@ -119,40 +134,43 @@ npm run [target-name]
Here's the full set of scripts and what they do.

- **Build scripts** -- build and package the source code and documentation
- `build` - A fast, developer-oriented build that prepares the source tree for use as standard [Asynchronous Module Definition (AMD)](https://github.com/amdjs/amdjs-api/wiki/AMD) modules, suitable for running tests and most examples (some Sandcastle examples require running `combine`). Run this when a GLSL shader is changed since the .glsl file is converted to a .js file with a string for the GLSL source. This runs automatically when saving files in Eclipse.
- `build-watch` - A never-ending task that watches your file system for changes to Cesium and runs `build` on the source code as needed.
- `combine` - Runs `build`, plus the [the RequireJS optimizer](http://requirejs.org/docs/optimization.html) to combine Cesium and [the Almond AMD loader](http://requirejs.org/docs/faq-optimization.html#wrap) to produce all-in-one files in the `Build/Cesium` directory that exposes the entire Cesium API attached to a single global `Cesium` object. This version is useful if you don't want to use the modules directly with a standard AMD loader.
- `minify` - Runs `combine`, plus [minifies](<http://en.wikipedia.org/wiki/Minification_(programming)>) Cesium.js.
- `combineRelease` - Runs `combine`, plus uses the optimizer to remove debugging code that validates function input and throws DeveloperErrors. The removed sections are marked with `//>>includeStart('debug', pragmas.debug);` blocks in the code.
- `minifyRelease` - Runs `minify`, and removes debugging code.
- `requirejs` - Used internally by the build system and can not be called directly.
- `buildApps` - Builds the example applications (such as Cesium Viewer) to produce self-contained, minified, deployable versions in the `Build` directory. This script requires a release build of Cesium, run the `release` script to build one if needed.
- `generateDocumentation` - Generates HTML documentation in `Build/Documentation` using [JSDoc 3](https://github.com/jsdoc3/jsdoc). More [details here](https://github.com/rahwang/cesium/tree/main/Documentation/Contributors/DocumentationGuide).
- `build` - A fast, developer-oriented build that bundles the source modules to produce all-in-one files in the `Build/CesiumUnminified` directory that exposes the entire Cesium API attached to a single global `Cesium` object. Run this when a GLSL shader is changed since the .glsl file is converted to a .js file with a string for the GLSL source.
- `--minify` - [Minifies](<http://en.wikipedia.org/wiki/Minification_(programming)>) the output for optimized loading. Specifying this option will output to `Build/Cesium`.
- `--removePragmas` - Optimizes the output by removing debugging code that validates function input and throws `DeveloperError`s. The removed sections are marked with `//>>includeStart('debug', pragmas.debug);` blocks in the code.
- `--node` - Bundles an `index.cjs` module targeted for use in NodeJS
- `build-watch` - A never-ending task that watches your file system for changes to Cesium and builds the source code as needed. All `build` options are also available for this task.
- `minify` - Bundles the source modules and [minifies](<http://en.wikipedia.org/wiki/Minification_(programming)>) to produce an all-in-one files in the `Build/Cesium` directory.
- `combineRelease` - Bundles plus removes debugging code that validates function input and throws DeveloperErrors. The removed sections are marked with `//>>includeStart('debug', pragmas.debug);` blocks in the code.
sanjeetsuhag marked this conversation as resolved.
Show resolved Hide resolved
- `minifyRelease` - Bundles, minifies, and removes debugging code.
- `buildApps` - Builds the example applications (such as Cesium Viewer) to produce self-contained, minified, deployable versions in the `Build` directory.
- `generateDocumentation` - Generates HTML documentation in `Build/Documentation` using [JSDoc 3](https://github.com/jsdoc3/jsdoc). See the [Documentation Guide](../DocumentationGuide/README.md) for more details.
- `build-ts` - Generates a TypeScript definitions file for the Cesium library
- `build-third-party` - Generates `ThirdParty.json`, a file which lists the latest licensing information of installed third party modules
- `release` - A full release build that creates a shippable product, including generating documentation.
- `makeZipFile` - Builds a zip file containing all release files. This includes the source tree (suitable for use from an AMD-aware application), plus the combined and minified Cesium.js files, the generated documentation, the test suite, and the example applications (in both built and source form).
- `makeZipFile` - Builds a zip file containing all release files. This includes the source ESM modules, bundled ESM and IIFE format `Cesium.js`, plus the bundled minified versions of ESM and IIFE, the generated documentation, the test suite, and the example applications (in both built and source form).
- **Utility scripts** -- code coverage, static code analysis, and other utilities
- `coverage` - Runs coverage and opens the default browser with the results.
- `eslint` - Runs [ESLint](http://eslint.org/), a static code analysis tool, on the entire source tree.
- `eslint-watch` - A never-ending task that watches your file system for changes to Cesium and runs ESLint on any changed source files.
- `markdownlint` - Runs [markdownlint](https://github.com/DavidAnson/markdownlint) on the Markdown files used for documentation.
- `clean` - Removes all generated build artifacts.
- `clean` - Removes all generated build artifacts
- `cloc` - Runs [CLOC](https://github.com/AlDanial/cloc) to count the lines of code on the Source and Specs directories. This requires [Perl](http://www.perl.org/) to execute.
- `coverage` - Runs coverage and opens the default browser with the results
- `eslint` - Runs [ESLint](http://eslint.org/), a static code analysis tool, on the entire source tree
- `prettier` - Formats the code base using [Prettier](https://prettier.io/)
- `prettier-check` - Verifies prettier formatting, but does not write the output
- **Testing scripts** -- build and run the unit tests
- `test` - Runs all tests with [Karma](http://karma-runner.github.io/0.13/index.html) using the default browser specified in the Karma config file.
- `test-all` - Runs all tests with Karma using all browsers installed on the current system.
- `test-non-webgl` - Runs only non-WebGL tests.
- `test-webgl` - Runs only WebGL tests.
- `test-webgl-stub` - Runs all tests using the WebGL stub, which WebGL calls a noop and ignores related test expectations.
- `test-webgl-validation` - Runs all tests with Karma and enables low-level WebGL validation.
- `test-release` - Runs all tests on the minified release version of built Cesium.
- `test-all` - Runs all tests with Karma using all browsers installed on the current system
- `test-non-webgl` - Runs only non-WebGL tests
- `test-webgl` - Runs only WebGL tests
- `test-webgl-stub` - Runs all tests using the WebGL stub, which WebGL calls a noop and ignores related test expectations
- `test-webgl-validation` - Runs all tests with Karma and enables low-level WebGL validation
- `test-release` - Runs all tests on the minified release version of built Cesium
- **Deployment scripts**
- `deploy-s3` - Deploys the built CesiumJS files, the npm package, and the zip file to Amazon S3. This requires having credentials set up for the S3 bucket to which you are deploying.
- `deploy-status` - Set the deployment statuses in GitHub, for use with Travis.
- `deploy-set-version` - Sets the version of `package.json`, for use with Travis.
- `deploy-s3` - Deploys the built CesiumJS files, the npm package, and the zip file to Amazon S3. This requires having credentials set up for the S3 bucket to which you are deploying
- `deploy-status` - Sets the deployment statuses in GitHub, for use with Travis
- `deploy-set-version` - Sets the version of `package.json`, for use with Travis

## Travis and Continuous Integration

Cesium uses [Travis](https://travis-ci.com/) for continuous integration. The Travis configuration and all the steps of the build process are defined in `travis.yml`. The blog post [Cesium Continuous Integration](http://cesium.com/blog/2016/04/07/Cesium-Continuous-Integration/) contains an in-depth explaination of the travis build process.
Cesium uses [Travis](https://travis-ci.com/) for continuous integration. The Travis configuration and all the steps of the build process are defined in `travis.yml`. The blog post [Cesium Continuous Integration](http://cesium.com/blog/2016/04/07/Cesium-Continuous-Integration/) contains an in-depth explanation of the travis build process.
ggetz marked this conversation as resolved.
Show resolved Hide resolved

Travis triggers a build whenever someone opens a pull request or pushes code to the Cesium repository. After the build has completed, at the bottom on the pull request, the status of the build is shown and you can access the build by clicking the "Details" link.

Expand Down Expand Up @@ -200,7 +218,7 @@ To configure the additional commit statuses on GitHub for your fork of Cesium, y

- In GitHub, go to "Settings" and "Personal access tokens"
- Click "Generate new token" and confirm your password when prompted
- Give a breif description of the token such as "Travis Statuses" and select "repo:status" and click "Generate token"
- Give a brief description of the token such as "Travis Statuses" and select "repo:status" and click "Generate token"
- `repo:status` gives the token access to only commit statuses

![Token Access](token.jpg)
Expand Down
Loading