Run a remotely build project on three systems by tagging the commit.
Continuing work on the QR Code Generator project I noticed that I spend a lot of time on the local building of applications on my poor laptop. In addition, I could not build a mac version without a mac (I’m working on ubuntu). Travis CI solved my problem, it has a ready osx image for automatic testing and building projects. It was enough to write a configuration script for it and it was ready. Now when committing to the master, travis automatically tests the application, and if you added the commit tag with the new version number, additional steps will be made to deploy the application to the Windows, Mac, and Linux platforms and will be sent as a draft to the github release page.
/snap/snapcraft.yaml
sudo: false
language: node_js
node_js: "9.11.1"
before_install:
- cd app
cache:
directories:
- node_modules
- app/node_modules
- $HOME/.cache/electron
- $HOME/.cache/electron-builder
- $HOME/.npm/_prebuilds
env:
global:
- ELECTRON_CACHE=$HOME/.cache/electron
- ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder
jobs:
include:
- stage: Test
script:
- npm test
- stage: Deploy Windows & Mac
if: tag IS present
os: osx
osx_image: xcode10.1
script:
- npm run release -- --mac --win
before_cache:
- rm -rf $HOME/.cache/electron-builder/wine
- stage: Deploy linux
if: tag IS present
os: linux
dist: trusty
script:
- npm run release
Travis has a built-in caching system design, specify the path to the directory that you want to keep after each stage of the job list from the configuration file.
The npm run release
script is actually electron-builder -p always
, the command automatically sends build to github release. By adding the --mac
flag, he builds a project for OSX. The flag --win
is building a project for Windows. Building for Windows was done on OSX because there is an automated wine
installation needed to edit .exe
.
The necessary action that we need to do to send the project to the github release page is to add the GH_TOKEN
variable to the travisa configuration.
When adding a variable, be sure that you have not selected Display value in build log, travis build logs are available over the internet, so anyone can steal the key if they know where to look.
Now if you have such a configuration in the travis project, it will perform the tests yourself for you, and by doing git tag -a v1.0.1 -m 'v1.0.1' && git push origin --tags
travis will start to build an application release and send it to github release page
.
Link to qr code generator github repository.