mirror of
https://github.com/balena-io/etcher.git
synced 2025-07-23 11:16:39 +00:00
Merge pull request #4009 from balena-io/migrate-docs
Docs to Docusaurus
This commit is contained in:
commit
4e9039c244
1
.github/workflows/flowzone.yml
vendored
1
.github/workflows/flowzone.yml
vendored
@ -27,3 +27,4 @@ jobs:
|
|||||||
repo_description: "Flash OS images to SD cards & USB drives, safely and easily."
|
repo_description: "Flash OS images to SD cards & USB drives, safely and easily."
|
||||||
repo_homepage: https://etcher.io/
|
repo_homepage: https://etcher.io/
|
||||||
repo_enable_wiki: true
|
repo_enable_wiki: true
|
||||||
|
cloudflare_website: "etcher"
|
||||||
|
19
README.md
19
README.md
@ -53,9 +53,10 @@ confidence.
|
|||||||
2. Update and install:
|
2. Update and install:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt-get update
|
sudo apt-get update #you can use apt instead of apt-get as well
|
||||||
sudo apt-get install balena-etcher-electron
|
sudo apt-get install balena-etcher-electron
|
||||||
```
|
```
|
||||||
|
>Note: after v1.7.9 the package name changed to `balena-etcher` (no electron at the end)
|
||||||
|
|
||||||
##### Uninstall
|
##### Uninstall
|
||||||
|
|
||||||
@ -87,6 +88,7 @@ apt-get update
|
|||||||
```sh
|
```sh
|
||||||
sudo dnf install -y balena-etcher-electron
|
sudo dnf install -y balena-etcher-electron
|
||||||
```
|
```
|
||||||
|
>Note: after v1.7.9 the package name changed to `balena-etcher` (no electron at the end)
|
||||||
|
|
||||||
###### Uninstall
|
###### Uninstall
|
||||||
|
|
||||||
@ -110,6 +112,7 @@ rm /etc/yum.repos.d/balena-etcher-source.repo
|
|||||||
```sh
|
```sh
|
||||||
sudo yum install -y balena-etcher-electron
|
sudo yum install -y balena-etcher-electron
|
||||||
```
|
```
|
||||||
|
>Note: after v1.7.9 the package name changed to `balena-etcher` (no electron at the end)
|
||||||
|
|
||||||
###### Uninstall
|
###### Uninstall
|
||||||
|
|
||||||
@ -134,6 +137,7 @@ rm /etc/yum.repos.d/balena-etcher-source.repo
|
|||||||
sudo zypper up
|
sudo zypper up
|
||||||
sudo zypper install balena-etcher-electron
|
sudo zypper install balena-etcher-electron
|
||||||
```
|
```
|
||||||
|
>Note: after v1.7.9 the package name changed to `balena-etcher` (no electron at the end)
|
||||||
|
|
||||||
##### Uninstall
|
##### Uninstall
|
||||||
|
|
||||||
@ -169,6 +173,19 @@ yay -S balena-etcher
|
|||||||
```sh
|
```sh
|
||||||
yay -R balena-etcher
|
yay -R balena-etcher
|
||||||
```
|
```
|
||||||
|
#### WinGet (Windows)
|
||||||
|
|
||||||
|
This package is updated by [gh-action](https://github.com/vedantmgoyal2009/winget-releaser), and is kept up to date automatically.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
winget install balenaEtcher #or Balena.Etcher
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Uninstall
|
||||||
|
|
||||||
|
```sh
|
||||||
|
winget uninstall balenaEtcher
|
||||||
|
```
|
||||||
|
|
||||||
#### Chocolatey (Windows)
|
#### Chocolatey (Windows)
|
||||||
|
|
||||||
|
@ -12,67 +12,29 @@ over the commit history.
|
|||||||
- Be able to automatically reference relevant changes from a dependency
|
- Be able to automatically reference relevant changes from a dependency
|
||||||
upgrade.
|
upgrade.
|
||||||
|
|
||||||
The guidelines are inspired by the [AngularJS git commit
|
|
||||||
guidelines][angular-commit-guidelines].
|
|
||||||
|
|
||||||
Commit structure
|
Commit structure
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
Each commit message consists of a header, a body and a footer. The header has a
|
Each commit message needs to specify the semver-type. Which can be `patch|minor|major`.
|
||||||
special format that includes a type, a scope and a subject.
|
See the [Semantic Versioning][semver] specification for a more detailed explanation of the meaning of these types.
|
||||||
|
See balena commit guidelines for more info about the whole commit structure.
|
||||||
|
|
||||||
```
|
```
|
||||||
<type>(<scope>): <subject>
|
<semver-type>: <subject>
|
||||||
|
```
|
||||||
|
or
|
||||||
|
```
|
||||||
|
<subject>
|
||||||
<BLANK LINE>
|
<BLANK LINE>
|
||||||
<body>
|
<details>
|
||||||
<BLANK LINE>
|
<BLANK LINE>
|
||||||
<footer>
|
Change-Type: <semver-type>
|
||||||
```
|
```
|
||||||
|
|
||||||
The subject should not contain more than 70 characters, including the type and
|
The subject should not contain more than 70 characters, including the type and
|
||||||
scope, and the body should be wrapped at 72 characters.
|
scope, and the body should be wrapped at 72 characters.
|
||||||
|
|
||||||
Type
|
|
||||||
----
|
|
||||||
|
|
||||||
Must be one of the following:
|
|
||||||
|
|
||||||
- `feat`: A new feature.
|
|
||||||
- `fix`: A bug fix.
|
|
||||||
- `minifix`: A minimal fix that doesn't warrant an entry in the CHANGELOG.
|
|
||||||
- `docs`: Documentation only changes.
|
|
||||||
- `style`: Changes that do not affect the meaning of the code (white-space,
|
|
||||||
formatting, missing semi-colons, JSDoc annotations, comments, etc).
|
|
||||||
- `refactor`: A code change that neither fixes a bug nor adds a feature.
|
|
||||||
- `perf`: A code change that improves performance.
|
|
||||||
- `test`: Adding missing tests.
|
|
||||||
- `chore`: Changes to the build process or auxiliary tools and libraries.
|
|
||||||
- `upgrade`: A version upgrade of a project dependency.
|
|
||||||
|
|
||||||
Scope
|
|
||||||
-----
|
|
||||||
|
|
||||||
The scope is required for types that make sense, such as `feat`, `fix`,
|
|
||||||
`test`, etc. Certain commit types, such as `chore` might not have a clearly
|
|
||||||
defined scope, in which case its better to omit it.
|
|
||||||
|
|
||||||
Subject
|
|
||||||
-------
|
|
||||||
|
|
||||||
The subject should contain a short description of the change:
|
|
||||||
|
|
||||||
- Use the imperative, present tense.
|
|
||||||
- Don't capitalize the first letter.
|
|
||||||
- No dot (.) at the end.
|
|
||||||
|
|
||||||
Footer
|
|
||||||
------
|
|
||||||
|
|
||||||
The footer contains extra information about the commit, such as tags.
|
|
||||||
|
|
||||||
**Breaking Changes** should start with the word BREAKING CHANGE: with a space
|
|
||||||
or two newlines. The rest of the commit message is then used for this.
|
|
||||||
|
|
||||||
Tags
|
Tags
|
||||||
----
|
----
|
||||||
|
|
||||||
@ -121,125 +83,4 @@ Closes: https://github.com/balena-io/etcher/issues/XXX
|
|||||||
Fixes: https://github.com/balena-io/etcher/issues/XXX
|
Fixes: https://github.com/balena-io/etcher/issues/XXX
|
||||||
```
|
```
|
||||||
|
|
||||||
### `Change-Type: <type>`
|
|
||||||
|
|
||||||
This tag is used to determine the change type that a commit introduces. The
|
|
||||||
following types are supported:
|
|
||||||
|
|
||||||
- `major`
|
|
||||||
- `minor`
|
|
||||||
- `patch`
|
|
||||||
|
|
||||||
This tag can be omitted for commits that don't change the application from the
|
|
||||||
user's point of view, such as for refactoring commits.
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
|
|
||||||
```
|
|
||||||
Change-Type: major
|
|
||||||
Change-Type: minor
|
|
||||||
Change-Type: patch
|
|
||||||
```
|
|
||||||
|
|
||||||
See the [Semantic Versioning][semver] specification for a more detailed
|
|
||||||
explanation of the meaning of these types.
|
|
||||||
|
|
||||||
### `Changelog-Entry: <message>`
|
|
||||||
|
|
||||||
This tag is used to describe the changes introduced by the commit in a more
|
|
||||||
human style that would fit the `CHANGELOG.md` better.
|
|
||||||
|
|
||||||
If the commit type is either `fix` or `feat`, the commit will take part in the
|
|
||||||
CHANGELOG. If this tag is not defined, then the commit subject will be used
|
|
||||||
instead.
|
|
||||||
|
|
||||||
You explicitly can use this tag to make a commit whose type is not `fix` nor
|
|
||||||
`feat` appear in the `CHANGELOG.md`.
|
|
||||||
|
|
||||||
Since whatever your write here will be shown *as it is* in the `CHANGELOG.md`,
|
|
||||||
take some time to write a decent entry. Consider the following guidelines:
|
|
||||||
|
|
||||||
- Use the imperative, present tense.
|
|
||||||
- Capitalize the first letter.
|
|
||||||
|
|
||||||
There is no fixed length limit for the contents of this tag, but always strive
|
|
||||||
to make as short as possible without compromising its quality.
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
|
|
||||||
```
|
|
||||||
Changelog-Entry: Fix EPERM errors when flashing to a GPT drive.
|
|
||||||
```
|
|
||||||
|
|
||||||
Complete examples
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
```
|
|
||||||
fix(GUI): ignore extensions before the first non-compressed extension
|
|
||||||
|
|
||||||
Currently, we extract all the extensions from an image path and report back
|
|
||||||
that the image is invalid if *any* of the extensions is not valid , however
|
|
||||||
this can cause trouble with images including information between dots that are
|
|
||||||
not strictly extensions, for example:
|
|
||||||
|
|
||||||
elementaryos-0.3.2-stable-i386.20151209.iso
|
|
||||||
|
|
||||||
Etcher will consider `20151209` to be an invalid extension and therefore
|
|
||||||
will prevent such image from being selected at all.
|
|
||||||
|
|
||||||
As a way to allow these corner cases but still make use of our enforced check
|
|
||||||
controls, the validation routine now only consider extensions starting from the
|
|
||||||
first non compressed extension.
|
|
||||||
|
|
||||||
Change-Type: patch
|
|
||||||
Changelog-Entry: Don't interpret image file name information between dots as image extensions.
|
|
||||||
Fixes: https://github.com/balena-io/etcher/issues/492
|
|
||||||
```
|
|
||||||
|
|
||||||
***
|
|
||||||
|
|
||||||
```
|
|
||||||
upgrade: etcher-image-write to v5.0.2
|
|
||||||
|
|
||||||
This version contains a fix to an `EPERM` issue happening to some Windows user,
|
|
||||||
triggered by the `write` system call during the first ~5% of a flash given that
|
|
||||||
the operating system still thinks the drive has a file system.
|
|
||||||
|
|
||||||
Change-Type: patch
|
|
||||||
Changelog-Entry: Upgrade `etcher-image-write` to v5.0.2.
|
|
||||||
Link: https://github.com/balena-io-modules/etcher-image-write/blob/master/CHANGELOG.md#502---2016-06-27
|
|
||||||
Fixes: https://github.com/balena-io/etcher/issues/531
|
|
||||||
```
|
|
||||||
|
|
||||||
***
|
|
||||||
|
|
||||||
```
|
|
||||||
feat(GUI): implement update notifier functionality
|
|
||||||
|
|
||||||
Auto-update functionality is not ready for usage. As a workaround to
|
|
||||||
prevent users staying with older versions, we now check for updates at
|
|
||||||
startup, and if the user is not running the latest version, we present a
|
|
||||||
modal informing the user of the availiblity of a new version, and
|
|
||||||
provide a call to action to open the Etcher website in his web browser.
|
|
||||||
|
|
||||||
Extra features:
|
|
||||||
|
|
||||||
- The user can skip the update, and tell the program to delay the
|
|
||||||
notification for 7 days.
|
|
||||||
|
|
||||||
Misc changes:
|
|
||||||
|
|
||||||
- Center modal with flexbox, to allow more flexibility on the modal height.
|
|
||||||
interacting with the S3 server.
|
|
||||||
- Implement `ManifestBindService`, which now serves as a backend for the
|
|
||||||
`manifest-bind` directive to allow the directive's functionality to be
|
|
||||||
re-used by other services.
|
|
||||||
- Namespace checkbox styles that are specific to the settings page.
|
|
||||||
|
|
||||||
Change-Type: minor
|
|
||||||
Changelog-Entry: Check for updates and show a modal prompting the user to download the latest version.
|
|
||||||
Closes: https://github.com/balena-io/etcher/issues/396
|
|
||||||
```
|
|
||||||
|
|
||||||
[angular-commit-guidelines]: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit
|
|
||||||
[semver]: http://semver.org
|
[semver]: http://semver.org
|
||||||
|
@ -17,11 +17,11 @@ Developing
|
|||||||
|
|
||||||
#### Common
|
#### Common
|
||||||
|
|
||||||
- [NodeJS](https://nodejs.org) (at least v6.11)
|
- [NodeJS](https://nodejs.org) (at least v16.11)
|
||||||
- [Python 2.7](https://www.python.org)
|
- [Python 3](https://www.python.org)
|
||||||
- [jq](https://stedolan.github.io/jq/)
|
- [jq](https://stedolan.github.io/jq/)
|
||||||
- [curl](https://curl.haxx.se/)
|
- [curl](https://curl.haxx.se/)
|
||||||
- [npm](https://www.npmjs.com/) (version 6.7)
|
- [npm](https://www.npmjs.com/)
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
@ -33,16 +33,16 @@ You might need to run this with `sudo` or administrator permissions.
|
|||||||
|
|
||||||
- [NSIS v2.51](http://nsis.sourceforge.net/Main_Page) (v3.x won't work)
|
- [NSIS v2.51](http://nsis.sourceforge.net/Main_Page) (v3.x won't work)
|
||||||
- Either one of the following:
|
- Either one of the following:
|
||||||
- [Visual C++ 2015 Build Tools](http://landinghub.visualstudio.com/visual-cpp-build-tools) containing standalone compilers, libraries and scripts
|
- [Visual C++ 2019 Build Tools](https://visualstudio.microsoft.com/vs/features/cplusplus/) containing standalone compilers, libraries and scripts
|
||||||
- Install the [windows-build-tools](https://github.com/felixrieseberg/windows-build-tools) via npm with `npm install --global windows-build-tools`
|
- The [windows-build-tools](https://github.com/felixrieseberg/windows-build-tools#windows-build-tools) should be installed along with NodeJS
|
||||||
- [Visual Studio Community 2015](https://www.microsoft.com/en-us/download/details.aspx?id=48146) (free) (other editions, like Professional and Enterprise, should work too)
|
- [Visual Studio Community 2019](https://visualstudio.microsoft.com/vs/) (free) (other editions, like Professional and Enterprise, should work too)
|
||||||
**NOTE:** Visual Studio 2015 doesn't install C++ by default. You have to rerun the
|
**NOTE:** Visual Studio doesn't install C++ by default. You have to rerun the
|
||||||
setup, select "Modify" and then check `Visual C++ -> Common Tools for Visual
|
setup, select "Modify" and then check `Visual C++ -> Common Tools for Visual
|
||||||
C++ 2015` (see http://stackoverflow.com/a/31955339)
|
C++` (see http://stackoverflow.com/a/31955339)
|
||||||
- [MinGW](http://www.mingw.org)
|
- [MinGW](http://www.mingw.org)
|
||||||
|
|
||||||
You might need to `npm config set msvs_version 2015` for node-gyp to correctly detect
|
You might need to `npm config set msvs_version 2019` for node-gyp to correctly detect
|
||||||
the version of Visual Studio you're using (in this example VS2015).
|
the version of Visual Studio you're using (in this example VS2019).
|
||||||
|
|
||||||
The following MinGW packages are required:
|
The following MinGW packages are required:
|
||||||
|
|
||||||
@ -61,7 +61,7 @@ as well.
|
|||||||
|
|
||||||
#### Linux
|
#### Linux
|
||||||
|
|
||||||
- `libudev-dev` for libusb (install with `sudo apt install libudev-dev` for example)
|
- `libudev-dev` for libusb (for example install with `sudo apt install libudev-dev`, or on fedora `systemd-devel` contains the required package)
|
||||||
|
|
||||||
### Cloning the project
|
### Cloning the project
|
||||||
|
|
||||||
@ -70,28 +70,13 @@ git clone --recursive https://github.com/balena-io/etcher
|
|||||||
cd etcher
|
cd etcher
|
||||||
```
|
```
|
||||||
|
|
||||||
### Installing npm dependencies
|
|
||||||
|
|
||||||
**NOTE:** Please make use of the following command to install npm dependencies rather
|
|
||||||
than simply running `npm install` given that we need to do extra configuration
|
|
||||||
to make sure native dependencies are correctly compiled for Electron, otherwise
|
|
||||||
the application might not run successfully.
|
|
||||||
|
|
||||||
If you're on Windows, **run the command from the _Developer Command Prompt for
|
|
||||||
VS2015_**, to ensure all Visual Studio command utilities are available in the
|
|
||||||
`%PATH%`.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
make electron-develop
|
|
||||||
```
|
|
||||||
|
|
||||||
### Running the application
|
### Running the application
|
||||||
|
|
||||||
#### GUI
|
#### GUI
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Build the GUI
|
# Build the GUI
|
||||||
npm run webpack
|
npm run webpack #or npm run build
|
||||||
# Start Electron
|
# Start Electron
|
||||||
npm start
|
npm start
|
||||||
```
|
```
|
||||||
@ -119,10 +104,6 @@ systems as they can before sending a pull request.
|
|||||||
*The test suite is run automatically by CI servers when you send a pull
|
*The test suite is run automatically by CI servers when you send a pull
|
||||||
request.*
|
request.*
|
||||||
|
|
||||||
We also rely on various `make` targets to perform some common tasks:
|
|
||||||
|
|
||||||
- `make lint`: Run the linter.
|
|
||||||
- `make sass`: Compile SCSS files.
|
|
||||||
|
|
||||||
We make use of [EditorConfig] to communicate indentation, line endings and
|
We make use of [EditorConfig] to communicate indentation, line endings and
|
||||||
other text editing default. We encourage you to install the relevant plugin in
|
other text editing default. We encourage you to install the relevant plugin in
|
||||||
@ -132,20 +113,7 @@ process.
|
|||||||
Updating a dependency
|
Updating a dependency
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
Given we use [npm shrinkwrap][shrinkwrap], we have to take extra steps to make
|
- Commit *both* `package.json` and `package-lock.json`.
|
||||||
sure the `npm-shrinkwrap.json` file gets updated correctly when we update a
|
|
||||||
dependency.
|
|
||||||
|
|
||||||
Use the following steps to ensure everything goes flawlessly:
|
|
||||||
|
|
||||||
- Run `make electron-develop` to ensure you don't have extraneous dependencies
|
|
||||||
you might have brought during development, or you are running older
|
|
||||||
dependencies because you come from another branch or reference.
|
|
||||||
|
|
||||||
- Install the new version of the dependency. For example: `npm install --save
|
|
||||||
<package>@<version>`. This will update the `npm-shrinkwrap.json` file.
|
|
||||||
|
|
||||||
- Commit *both* `package.json` and `npm-shrinkwrap.json`.
|
|
||||||
|
|
||||||
Diffing Binaries
|
Diffing Binaries
|
||||||
----------------
|
----------------
|
||||||
|
@ -8,10 +8,14 @@ Releasing
|
|||||||
|
|
||||||
### Release Types
|
### Release Types
|
||||||
|
|
||||||
- **snapshot** (default): A continues snapshot of current master, made by the CI services
|
- **draft**: A continues snapshot of current master, made by the CI services
|
||||||
- **production**: Full releases
|
- **pre-release** (default): A continues snapshot of current master, made by the CI services
|
||||||
|
- **release**: Full releases
|
||||||
|
|
||||||
|
Draft release is created from each PR, tagged with the branch name.
|
||||||
|
All merged PR will generate a new tag/version as a *pre-release*.
|
||||||
|
Mark the pre-release as final when it is necessary, then distribute the packages in alternative channels as necessary.
|
||||||
|
|
||||||
### Flight Plan
|
|
||||||
|
|
||||||
#### Preparation
|
#### Preparation
|
||||||
|
|
||||||
@ -33,9 +37,8 @@ Releasing
|
|||||||
- [Update the website](https://github.com/balena-io/etcher-homepage)
|
- [Update the website](https://github.com/balena-io/etcher-homepage)
|
||||||
- Wait 2-3 hours for analytics (Sentry, Amplitude) to trickle in and check for elevated error rates, or regressions
|
- Wait 2-3 hours for analytics (Sentry, Amplitude) to trickle in and check for elevated error rates, or regressions
|
||||||
- If regressions arise; pull the release, and release a patched version, else:
|
- If regressions arise; pull the release, and release a patched version, else:
|
||||||
- [Upload deb & rpm packages to Bintray](#uploading-packages-to-bintray)
|
- [Upload deb & rpm packages to Cloudfront](#uploading-packages-to-cloudfront)
|
||||||
- [Upload build artifacts to Amazon S3](#uploading-binaries-to-amazon-s3)
|
- Post changelog with `#release-notes` tag on internal chat
|
||||||
- Post changelog with `#release-notes` tag on Flowdock
|
|
||||||
- If this release packs noteworthy major changes:
|
- If this release packs noteworthy major changes:
|
||||||
- Write a blog post about it, and / or
|
- Write a blog post about it, and / or
|
||||||
- Write about it to the Etcher mailing list
|
- Write about it to the Etcher mailing list
|
||||||
@ -57,46 +60,16 @@ export ANALYTICS_AMPLITUDE_TOKEN="xxxxxx"
|
|||||||
|
|
||||||
**NOTE:** Make sure to adjust the path as necessary (here the Etcher repository has been cloned to `/home/$USER/code/etcher`)
|
**NOTE:** Make sure to adjust the path as necessary (here the Etcher repository has been cloned to `/home/$USER/code/etcher`)
|
||||||
|
|
||||||
```bash
|
|
||||||
./scripts/build/docker/run-command.sh -r x64 -s . -c "make distclean"
|
|
||||||
```
|
|
||||||
|
|
||||||
##### Generating artifacts
|
##### Generating artifacts
|
||||||
|
|
||||||
```bash
|
The artifacts are generated by the CI and published as draft-release or pre-release.
|
||||||
# x64
|
`electron-builder` is used to create the packaged application.
|
||||||
|
|
||||||
# Build Debian packages
|
|
||||||
./scripts/build/docker/run-command.sh -r x64 -s . -c "make electron-develop && make RELEASE_TYPE=production electron-installer-debian"
|
|
||||||
# Build RPM packages
|
|
||||||
./scripts/build/docker/run-command.sh -r x64 -s . -c "make electron-develop && make RELEASE_TYPE=production electron-installer-redhat"
|
|
||||||
# Build AppImages
|
|
||||||
./scripts/build/docker/run-command.sh -r x64 -s . -c "make electron-develop && make RELEASE_TYPE=production electron-installer-appimage"
|
|
||||||
|
|
||||||
# x86
|
|
||||||
|
|
||||||
# Build Debian packages
|
|
||||||
./scripts/build/docker/run-command.sh -r x86 -s . -c "make electron-develop && make RELEASE_TYPE=production electron-installer-debian"
|
|
||||||
# Build RPM packages
|
|
||||||
./scripts/build/docker/run-command.sh -r x86 -s . -c "make electron-develop && make RELEASE_TYPE=production electron-installer-redhat"
|
|
||||||
# Build AppImages
|
|
||||||
./scripts/build/docker/run-command.sh -r x86 -s . -c "make electron-develop && make RELEASE_TYPE=production electron-installer-appimage"
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Mac OS
|
#### Mac OS
|
||||||
|
|
||||||
**ATTENTION:** For production releases you'll need the code-signing key,
|
**ATTENTION:** For production releases you'll need the code-signing key,
|
||||||
and set `CSC_NAME` to generate signed binaries on Mac OS.
|
and set `CSC_NAME` to generate signed binaries on Mac OS.
|
||||||
|
|
||||||
```bash
|
|
||||||
make electron-develop
|
|
||||||
|
|
||||||
# Build the zip
|
|
||||||
make RELEASE_TYPE=production electron-installer-app-zip
|
|
||||||
# Build the dmg
|
|
||||||
make RELEASE_TYPE=production electron-installer-dmg
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Windows
|
#### Windows
|
||||||
|
|
||||||
**ATTENTION:** For production releases you'll need the code-signing key,
|
**ATTENTION:** For production releases you'll need the code-signing key,
|
||||||
@ -105,38 +78,10 @@ and set `CSC_LINK`, and `CSC_KEY_PASSWORD` to generate signed binaries on Window
|
|||||||
**NOTE:**
|
**NOTE:**
|
||||||
- Keep in mind to also generate artifacts for x86, with `TARGET_ARCH=x86`.
|
- Keep in mind to also generate artifacts for x86, with `TARGET_ARCH=x86`.
|
||||||
|
|
||||||
```bash
|
|
||||||
make electron-develop
|
|
||||||
|
|
||||||
# Build the Portable version
|
### Uploading packages to Cloudfront
|
||||||
make RELEASE_TYPE=production electron-installer-portable
|
|
||||||
# Build the Installer
|
|
||||||
make RELEASE_TYPE=production electron-installer-nsis
|
|
||||||
```
|
|
||||||
|
|
||||||
### Uploading packages to Bintray
|
Log in to cloudfront and upload the `rpm` and `deb` files.
|
||||||
|
|
||||||
```bash
|
|
||||||
export BINTRAY_USER="username@account"
|
|
||||||
export BINTRAY_API_KEY="youruserapikey"
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./scripts/publish/bintray.sh -c "etcher" -t "production" -v "1.2.1" -o "etcher" -p "debian" -y "debian" -r "x64" -f "dist/etcher-electron_1.2.1_amd64.deb"
|
|
||||||
./scripts/publish/bintray.sh -c "etcher" -t "production" -v "1.2.1" -o "etcher" -p "debian" -y "debian" -r "x86" -f "dist/etcher-electron_1.2.1_i386.deb"
|
|
||||||
./scripts/publish/bintray.sh -c "etcher" -t "production" -v "1.2.1" -o "etcher" -p "redhat" -y "redhat" -r "x64" -f "dist/etcher-electron-1.2.1.x86_64.rpm"
|
|
||||||
./scripts/publish/bintray.sh -c "etcher" -t "production" -v "1.2.1" -o "etcher" -p "redhat" -y "redhat" -r "x86" -f "dist/etcher-electron-1.2.1.i686.rpm"
|
|
||||||
```
|
|
||||||
|
|
||||||
### Uploading binaries to Amazon S3
|
|
||||||
|
|
||||||
```bash
|
|
||||||
export S3_KEY="..."
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./scripts/publish/aws-s3.sh -b "balena-production-downloads" -v "1.2.1" -p "etcher" -f "dist/<filename>"
|
|
||||||
```
|
|
||||||
|
|
||||||
### Dealing with a Problematic Release
|
### Dealing with a Problematic Release
|
||||||
|
|
||||||
|
@ -7,44 +7,9 @@ systems.
|
|||||||
Release Types
|
Release Types
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
Etcher supports **production** and **snapshot** release types. Each is
|
Etcher supports **pre-release** and **final** release types as does Github. Each is
|
||||||
published to a different S3 bucket, and production release types are code
|
published to Github releases.
|
||||||
signed, while snapshot release types aren't and include a short git commit-hash
|
The release version is generated automatically from the commit messasges.
|
||||||
as a build number. For example, `1.0.0-beta.19` is a production release type,
|
|
||||||
while `1.0.0-beta.19+531ab82` is a snapshot release type.
|
|
||||||
|
|
||||||
In terms of comparison: `1.0.0-beta.19` (production) < `1.0.0-beta.19+531ab82`
|
|
||||||
(snapshot) < `1.0.0-rc.1` (production) < `1.0.0-rc.1+7fde24a` (snapshot) <
|
|
||||||
`1.0.0` (production) < `1.0.0+2201e5f` (snapshot). Keep in mind that if you're
|
|
||||||
running a production release type, you'll only be prompted to update to
|
|
||||||
production release types, and if you're running a snapshot release type, you'll
|
|
||||||
only be prompted to update to other snapshot release types.
|
|
||||||
|
|
||||||
The build system creates (and publishes) snapshot release types by default, but
|
|
||||||
you can build a specific release type by setting the `RELEASE_TYPE` make
|
|
||||||
variable. For example:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
make <target> RELEASE_TYPE=snapshot
|
|
||||||
make <target> RELEASE_TYPE=production
|
|
||||||
```
|
|
||||||
|
|
||||||
We can control the version range a specific Etcher version will consider when
|
|
||||||
showing the update notification dialog by tweaking the `updates.semverRange`
|
|
||||||
property of `package.json`.
|
|
||||||
|
|
||||||
Update Channels
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Etcher has a setting to include the unstable update channel. If this option is
|
|
||||||
set, Etcher will consider both stable and unstable versions when showing the
|
|
||||||
update notifier dialog. Unstable versions are the ones that contain a `beta`
|
|
||||||
pre-release tag. For example:
|
|
||||||
|
|
||||||
- Production unstable version: `1.4.0-beta.1`
|
|
||||||
- Snapshot unstable version: `1.4.0-beta.1+7fde24a`
|
|
||||||
- Production stable version: `1.4.0`
|
|
||||||
- Snapshot stable version: `1.4.0+7fde24a`
|
|
||||||
|
|
||||||
Signing
|
Signing
|
||||||
-------
|
-------
|
||||||
@ -73,63 +38,19 @@ Packaging
|
|||||||
|
|
||||||
The resulting installers will be saved to `dist/out`.
|
The resulting installers will be saved to `dist/out`.
|
||||||
|
|
||||||
Run the following commands:
|
Run the following commands on all platforms with the right arguments:
|
||||||
|
|
||||||
### OS X
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make electron-installer-dmg
|
./node_modules/electron-builder build <...>
|
||||||
make electron-installer-app-zip
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### GNU/Linux
|
|
||||||
|
|
||||||
```sh
|
Publishing to Cloudfront
|
||||||
make electron-installer-appimage
|
|
||||||
make electron-installer-debian
|
|
||||||
```
|
|
||||||
|
|
||||||
### Windows
|
|
||||||
|
|
||||||
```sh
|
|
||||||
make electron-installer-zip
|
|
||||||
make electron-installer-nsis
|
|
||||||
```
|
|
||||||
|
|
||||||
Publishing to Bintray
|
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
We publish GNU/Linux Debian packages to [Bintray][bintray].
|
We publish GNU/Linux Debian packages to [Cloudfront][cloudfront].
|
||||||
|
|
||||||
Make sure you set the following environment variables:
|
Log in to cloudfront and upload the `rpm` and `deb` files.
|
||||||
|
|
||||||
- `BINTRAY_USER`
|
|
||||||
- `BINTRAY_API_KEY`
|
|
||||||
|
|
||||||
Run the following command:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
make publish-bintray-debian
|
|
||||||
```
|
|
||||||
|
|
||||||
Publishing to S3
|
|
||||||
----------------
|
|
||||||
|
|
||||||
- [AWS CLI][aws-cli]
|
|
||||||
|
|
||||||
Make sure you have the [AWS CLI tool][aws-cli] installed and configured to
|
|
||||||
access balena.io's production or snapshot S3 bucket.
|
|
||||||
|
|
||||||
Run the following command to publish all files for the current combination of
|
|
||||||
_platform_ and _arch_ (building them if necessary):
|
|
||||||
|
|
||||||
```sh
|
|
||||||
make publish-aws-s3
|
|
||||||
```
|
|
||||||
|
|
||||||
Also add links to each AWS S3 file in [GitHub Releases][github-releases]. See
|
|
||||||
[`v1.0.0-beta.17`](https://github.com/balena-io/etcher/releases/tag/v1.0.0-beta.17)
|
|
||||||
as an example.
|
|
||||||
|
|
||||||
Publishing to Homebrew Cask
|
Publishing to Homebrew Cask
|
||||||
---------------------------
|
---------------------------
|
||||||
@ -147,7 +68,7 @@ Post messages to the [Etcher forum][balena-forum-etcher] announcing the new vers
|
|||||||
of Etcher, and including the relevant section of the Changelog.
|
of Etcher, and including the relevant section of the Changelog.
|
||||||
|
|
||||||
[aws-cli]: https://aws.amazon.com/cli
|
[aws-cli]: https://aws.amazon.com/cli
|
||||||
[bintray]: https://bintray.com
|
[cloudfront]: https://cloudfront.com
|
||||||
[etcher-cask-file]: https://github.com/caskroom/homebrew-cask/blob/master/Casks/balenaetcher.rb
|
[etcher-cask-file]: https://github.com/caskroom/homebrew-cask/blob/master/Casks/balenaetcher.rb
|
||||||
[homebrew-cask]: https://github.com/caskroom/homebrew-cask
|
[homebrew-cask]: https://github.com/caskroom/homebrew-cask
|
||||||
[balena-forum-etcher]: https://forums.balena.io/c/etcher
|
[balena-forum-etcher]: https://forums.balena.io/c/etcher
|
||||||
|
@ -3,6 +3,11 @@ Etcher User Documentation
|
|||||||
|
|
||||||
This document contains how-tos and FAQs oriented to Etcher users.
|
This document contains how-tos and FAQs oriented to Etcher users.
|
||||||
|
|
||||||
|
Config
|
||||||
|
------
|
||||||
|
Etcher's configuration is saved to the `config.json` file in the apps folder.
|
||||||
|
Not all the options are surfaced to the UI. You may edit this file to tweak settings even before launching the app.
|
||||||
|
|
||||||
Why is my drive not bootable?
|
Why is my drive not bootable?
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
@ -218,3 +223,5 @@ macOS 10.10 (Yosemite) and newer versions][electron-supported-platforms].
|
|||||||
[unetbootin]: https://unetbootin.github.io
|
[unetbootin]: https://unetbootin.github.io
|
||||||
[windows-iot-dashboard]: https://developer.microsoft.com/en-us/windows/iot/downloads
|
[windows-iot-dashboard]: https://developer.microsoft.com/en-us/windows/iot/downloads
|
||||||
[woeusb]: https://github.com/slacka/WoeUSB
|
[woeusb]: https://github.com/slacka/WoeUSB
|
||||||
|
|
||||||
|
See [PUBLISHING](/docs/PUBLISHING.md) for more details about release types.
|
Loading…
x
Reference in New Issue
Block a user