diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 00000000..e0ebb128 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,129 @@ +image: +- Visual Studio 2017 +#- Ubuntu1804 + +branches: + except: + - l10n_master + +environment: + WIN_PKG: C:\Users\appveyor\.pkg-cache\v2.5\fetched-v10.4.1-win-x64 + +stack: node 10 + +init: +- ps: | + if($isWindows -and $env:DEBUG_RDP -eq "true") { + iex ((new-object net.webclient).DownloadString(` + 'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) + } +- sh: sudo apt-get update +- sh: sudo apt-get -y install pkg-config libxss-dev libsecret-1-dev rpm +- ps: | + if($isWindows) { + Install-Product node 10 + $env:PATH = "C:\Program Files (x86)\Resource Hacker;${env:PATH}" + if(Test-Path -Path $env:WIN_PKG) { + $env:VER_INFO = "true" + } + } + +install: +- ps: | + $env:PACKAGE_VERSION = (Get-Content -Raw -Path .\src\package.json | ConvertFrom-Json).version + $env:RELEASE_NAME = "Version ${tagName}" + $env:PROD_DEPLOY = "false" + if($env:APPVEYOR_REPO_TAG -eq "true" -and $env:APPVEYOR_RE_BUILD -eq "True") { + $env:PROD_DEPLOY = "true" + echo "This is a production deployment." + } + if($isWindows) { + choco install reshack --no-progress + choco install cloc --no-progress + cloc --include-lang TypeScript,JavaScript,HTML,Sass,CSS --vcs git + .\make-versioninfo.ps1 + } + +before_build: +- node --version +- npm --version + +build_script: +- cmd: | + if defined VER_INFO ResourceHacker -open %WIN_PKG% -save %WIN_PKG% -action delete -mask ICONGROUP,1, + if defined VER_INFO ResourceHacker -open version-info.rc -save version-info.res -action compile + if defined VER_INFO ResourceHacker -open %WIN_PKG% -save %WIN_PKG% -action addoverwrite -resource version-info.res +- npm install +- npm run rebuild +- ps: | + if($isLinux) { + npm run dist:lin + } + else { + npm run dist:win:ci + npm run reset + npm run dist:cli + } +- cmd: 7z a ./dist-cli/bwdc-windows-%PACKAGE_VERSION%.zip ./dist-cli/windows/bwdc.exe +- cmd: 7z a ./dist-cli/bwdc-macos-%PACKAGE_VERSION%.zip ./dist-cli/macos/bwdc +- cmd: 7z a ./dist-cli/bwdc-linux-%PACKAGE_VERSION%.zip ./dist-cli/linux/bwdc +- ps: | + if($isWindows) { + checksum -f="./dist/bwdc-windows-${env:PACKAGE_VERSION}.zip" ` + -t sha256 | Out-File ./dist/bwdc-windows-sha256-${env:PACKAGE_VERSION}.txt + checksum -f="./dist/bwdc-macos-${env:PACKAGE_VERSION}.zip" ` + -t sha256 | Out-File ./dist/bwdc-macos-sha256-${env:PACKAGE_VERSION}.txt + checksum -f="./dist/bwdc-linux-${env:PACKAGE_VERSION}.zip" ` + -t sha256 | Out-File ./dist/bwdc-linux-sha256-${env:PACKAGE_VERSION}.txt + } +- ps: | + if($isLinux) { + Push-AppveyorArtifact ./dist/Bitwarden-Connector-${env:PACKAGE_VERSION}-x86_64.AppImage + } + else { + Push-AppveyorArtifact .\dist\Bitwarden-Connector-Portable-${env:PACKAGE_VERSION}.exe + Push-AppveyorArtifact .\dist\Bitwarden-Connector-Installer-${env:PACKAGE_VERSION}.exe + Push-AppveyorArtifact .\dist\bwdc-windows-%PACKAGE_VERSION%.zip + Push-AppveyorArtifact .\dist\bwdc-mac-%PACKAGE_VERSION%.zip + Push-AppveyorArtifact .\dist\bwdc-linux-%PACKAGE_VERSION%.zip + Push-AppveyorArtifact .\dist\bwdc-windows-sha256-%PACKAGE_VERSION%.txt + Push-AppveyorArtifact .\dist\bwdc-mac-sha256-%PACKAGE_VERSION%.txt + Push-AppveyorArtifact .\dist\bwdc-linux-sha256-%PACKAGE_VERSION%.txt + } + +on_finish: + - ps: | + if($isWindows -and $env:DEBUG_RDP -eq "true") { + $blockRdp = $true + iex ((new-object net.webclient).DownloadString(` + 'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) + } + +for: +- + matrix: + only: + - image: Visual Studio 2017 + cache: + - '%LOCALAPPDATA%\electron -> appveyor.yml' + - '%LOCALAPPDATA%\electron-builder -> appveyor.yml' + - 'C:\Users\appveyor\.pkg-cache\ -> package.json' + +- + matrix: + only: + - image: Ubuntu1804 + cache: + - '/home/appveyor/.cache/electron -> appveyor.yml' + - '/home/appveyor/.cache/electron-builder -> appveyor.yml' + +deploy: + tag: $(APPVEYOR_REPO_TAG_NAME) + release: $(RELEASE_NAME) + provider: GitHub + auth_token: $(GH_TOKEN) + artifact: /.*\.zip/,/.*\.txt/ + force_update: true + on: + branch: master + APPVEYOR_REPO_TAG: true diff --git a/make-versioninfo.ps1 b/make-versioninfo.ps1 new file mode 100644 index 00000000..1bb77fc8 --- /dev/null +++ b/make-versioninfo.ps1 @@ -0,0 +1,33 @@ +$major,$minor,$patch = $env:PACKAGE_VERSION.split('.') + +$versionInfo = @" + +1 VERSIONINFO +FILEVERSION $major,$minor,$patch,0 +PRODUCTVERSION $major,$minor,$patch,0 +FILEOS 0x40004 +FILETYPE 0x1 +{ +BLOCK "StringFileInfo" +{ + BLOCK "040904b0" + { + VALUE "CompanyName", "8bit Solutions LLC" + VALUE "ProductName", "Bitwarden" + VALUE "FileDescription", "Bitwarden Directory Connector CLI" + VALUE "FileVersion", "$env:PACKAGE_VERSION" + VALUE "ProductVersion", "$env:PACKAGE_VERSION" + VALUE "OriginalFilename", "bwdc.exe" + VALUE "InternalName", "bwdc" + VALUE "LegalCopyright", "Copyright 8bit Solutions LLC" + } +} + +BLOCK "VarFileInfo" +{ + VALUE "Translation", 0x0409 0x04B0 +} +} +"@ + +$versionInfo | Out-File ./version-info.rc