mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-01-12 11:08:10 +08:00
71 lines
2.6 KiB
Markdown
71 lines
2.6 KiB
Markdown
|
# Building N1 with Continuous Integration
|
||
|
|
||
|
script/grunt ci
|
||
|
|
||
|
N1 is designed to be built into a production app for Mac, Windows, and Linux.
|
||
|
Only Nylas core team members currently have access to produce a production
|
||
|
build.
|
||
|
|
||
|
Production builds are code-signed with a Nylas, Inc. certificate and include a
|
||
|
handful of other proprietary assets such as custom fonts and sounds.
|
||
|
|
||
|
We currently use [Travis](https://travis-ci.org/nylas/N1) to build on Mac &
|
||
|
Windows and AppVeyor to build on Windows.
|
||
|
|
||
|
A build can be run from a local machines by Jenkins or manually; however,
|
||
|
several environment variables must be setup.:
|
||
|
|
||
|
**ALL ENVIRONMENT VARIABLES ARE ENCRYPTED**
|
||
|
|
||
|
They exist in an encrypted file that only Travis can read in
|
||
|
`build/resources/certs/set_env.sh`
|
||
|
|
||
|
**IMPORTANT** Do NOT remove the `2>/dev/null 1>/dev/null` in the
|
||
|
`before_install` scripts. If any of commands fail we don't want to leak
|
||
|
sensitive data in the output.
|
||
|
|
||
|
That file must be decrypted and `source`d before the environment variables can
|
||
|
use.
|
||
|
|
||
|
If not building on Travis, the environment variables must be manually decrypted
|
||
|
via gpg and sourced
|
||
|
|
||
|
We use [Travis encryption](https://docs.travis-ci.com/user/encrypting-files/)
|
||
|
and AppVeyor encryption to store the certificates, keys, and passwords
|
||
|
|
||
|
To login to GitHub and clone the Nylas submodule with private assets you need
|
||
|
to clone recursively (or `git submodule init; git submodule update`) with a
|
||
|
valid SSH key or login username and password.
|
||
|
|
||
|
We have a CI GitHub account: https://github.com/nylas-deploy-scripts
|
||
|
The password for that account is stored in the environment variable:
|
||
|
- `GITHUB_CI_ACCOUNT_PASSWORD`
|
||
|
|
||
|
For signing builds on Mac only when the certificates are already in the
|
||
|
Keychain (not Travis):
|
||
|
- `XCODE_KEYCHAIN` - The name of the Mac keychain that contains the
|
||
|
certificates and private key.
|
||
|
- `XCODE_KEYCHAIN_PASSWORD` - Th password to that keychain.
|
||
|
- `KEYCHAIN_ACCESS` - Alternatively, the `XCODE_KEYCHAIN` and
|
||
|
`XCODE_KEYCHAIN_PASSWORD` in a single colon-separated string.
|
||
|
|
||
|
Alternatively, on Travis we decrypt the actual certificate files and create a
|
||
|
temporary keychain. To do this we need the password to the private key. That's
|
||
|
stored in:
|
||
|
- `APPLE_CODESIGN_KEY_PASSWORD`
|
||
|
|
||
|
For signing builds on Windows only:
|
||
|
- `CERTIFICATE_FILE` - The Windows certificate
|
||
|
- `CERTIFICATE_PASSWORD` - The password for the private key on the cert
|
||
|
|
||
|
To download Electron:
|
||
|
- `NYLAS_GITHUB_OAUTH_TOKEN` - The OAuth token to use for GitHub API requests. See
|
||
|
https://github.com/atom/grunt-download-electron
|
||
|
|
||
|
To upload built artifacts to S3:
|
||
|
- `AWS_ACCESS_KEY_ID`
|
||
|
- `AWS_SECRET_ACCESS_KEY`
|
||
|
|
||
|
To notify when builds are done:
|
||
|
- `NYLAS_INTERNAL_HOOK_URL` - Nylas internal Slack token and url
|