Guides
Guides

Deployment

In order to pre-compile our a connector we require every connector to be automatically be built, tested and deployed to Github Releases.

We have had good success using AppVeyor and Travis-CI as our automated build service.

AppVeyor

We use AppVeyor for our windows builds. See below for an example of appveyor.yml

environment: nodejs_version: 5.5.0 platform: - x64 - x86 shallow_clone: true skip_non_tags: true install: - ps: Install-Product node $env:nodejs_version $env:Platform - node --version - npm --version - node -e "console.log(process.arch);" - FOR /F "delims=" %%a IN ('node -e "console.log(require('./package.json').version)"') DO SET PACKAGE_VERSION=%%~a - SET PATH=C:\Program Files (x86)\MSBuild\12.0\bin\;%PATH% - SET GYP_MSVS_VERSION=2013 - if "%PLATFORM%" == "x64" set PATH=C:\Python27-x64;%PATH% - if "%PLATFORM%" == "x86" SET PATH=C:\python27;%PATH% - npm install --build-from-source --production - npm install meshblu-connector-packager - npm dedupe - npm install -g flatten-packages - flatten-packages - ps: >- if($env:platform -eq "x86") { $env:PACKAGER_ARCH="386" } else { $env:PACKAGER_ARCH="amd64" } - npm run package - ps: $root = Resolve-Path deploy; [IO.Directory]::GetFiles($root.Path, '*.*', 'AllDirectories') | % { Push-AppveyorArtifact $_ -FileName $_.Substring($root.Path.Length + 1) -DeploymentName Connector } build: off test: off deploy: - provider: GitHub description: 'Meshblu Connector Bundle' auth_token: secure: [appveyor-github-oauth-key] artifact: Connector draft: false prerelease: false on: branch: master appveyor_repo_tag: true

Travis CI

We use Travis for building on Linux and macOS. See below for an example .travis.yml configuration.

language: cpp os: - linux - osx addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-4.8 - g++-4.8-multilib - gcc-multilib - build-essential - libbluetooth-dev - libudev-dev - libusb-1.0-0-dev env: matrix: - PACKAGER_NODE_VERSION="5.5" PACKAGER_ARCH="amd64" MAIN_BUILD="true" - PACKAGER_NODE_VERSION="5.5" PACKAGER_ARCH="386" matrix: exclude: - os: osx env: PACKAGER_NODE_VERSION="5.5" PACKAGER_ARCH="386" branches: only: - "/^v[0-9]/" before_install: - PACKAGER_URL="https://meshblu-connector.octoblu.com/tools/packager/latest" - curl -fsS "${PACKAGER_URL}/travis_install_node.sh" -o /tmp/travis_install_node.sh - chmod +x /tmp/travis_install_node.sh - ". /tmp/travis_install_node.sh" - if [ "$TRAVIS_OS_NAME" == "linux" -a "$MAIN_BUILD" == "true" ]; then export NPM_PUBLISH="true"; fi install: - npm install --build-from-source script: - npm test before_deploy: - npm install --build-from-source --production - npm install meshblu-connector-packager - npm dedupe - npm install -g flatten-packages - flatten-packages - npm run package deploy: - provider: releases api_key: secure: [appveyor-encrypted-github-oauth-key] file_glob: true file: - "deploy/*" skip_cleanup: true on: tags: true - provider: npm email: serveradmin@octoblu.com api_key: secure: [travis-encrypted-npm-api-key] on: tags: true condition: "$NPM_PUBLISH = true"

Did this page help you?