Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GPII-3228: Implement changes in the provisioning and npm scripts in order to produce automatic installers on CI #51

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion Vagrantfile
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,4 @@ Vagrant.configure(2) do |config|
end

config.vm.provision "shell", path: "provisioning/Build.ps1", args: "-originalBuildScriptPath \"C:\\vagrant\\provisioning\\\""
config.vm.provision "shell", path: "provisioning/Installer.ps1", args: "-provisioningDir \"C:\\vagrant\\provisioning\\\""
end
5 changes: 5 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@
"start": "npm run build && electron main.js",
"dev": "npm run build && electron main.js ./configs app.dev",
"build": "grunt compileMessages",
"buildDevInstaller": "npm run installer:build",
"buildReleaseInstaller": "npm run installer:setVersion && npm run installer:build && npm run installer:rename",
"installer:build": "powershell -NoProfile -ExecutionPolicy Unrestricted -Command ./provisioning/Installer.ps1 -provisioningDir './provisioning'",
"installer:setVersion": "git config core.fileMode false && powershell -NoProfile -ExecutionPolicy Unrestricted -Command fluid-publish --test cleanCmd='echo NOOP'",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a bit funky - didn't we decide to from now on only ever roll installers/builds from npm artefacts? In which case we should be able to just fish this value from our own package.json

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is funky, yes. Let's say that this is a first spike on this, given that we would like to start creating installers automatically as commits get into master (or better said, in the "cloud-one" branch very soon), no matter whether they are ready to be shipped or not.

In an ideal release model, I would expect the "releaser" to publish the artifacts on npm, commit the bumped version of the module and create the installer locally.
In fact, I'm not sure we want to perform a real "release" after every commit/pr gets into master. Another approach would be to only create an installer every time we bump the version in the gpii-app's package.json, but still, automatic creation of installers as they land master is something that has been requested for some time.

Backing to your original question about rolling installers from npm artifacts, that would be the ideal thing to do, but would require some extra work in the provisioning scripts and on CI as well. I'm not sure whether you prefer to absolutely go for it now or just start doing "something" in line with what we would like to end up with and as a temporary way of providing installers in an automatic way.

Anyway, happy to know your thoughts on this, maybe it's worth having a call, at this moment, it's been just Alfredo and I who have tried to put all the pieces together and come up with this first step.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can CI just sneak the build number (ie, the "285" from the url in #51 (comment)) into a file?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can CI just sneak the build number (ie, the "285" from the url in #51 (comment)) into a file?

I guess that the output log is being stored in the CI but outside the windows VM, so I'm not sure this is a good approach, specially if we need to test this in a local dev environment.

"installer:rename": "powershell ./provisioning/RenameInstaller.ps1 -provisioningDir './provisioning' -version '%npm_package_version%'",
"pretest": "npm run pretest:clean && npm run build && npm run pretest:instrument",
"pretest:clean": "node node_modules/rimraf/bin.js coverage instrumented reports build && node ./node_modules/mkdirp/bin/cmd.js coverage instrumented reports",
"pretest:instrument": "node tests/lib/instrumentSource.js",
Expand Down
3 changes: 3 additions & 0 deletions provisioning/Installer.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@ $appDir = Join-Path $stagingWindowsDir "app"
# Install electron-packager globally.
# TODO: Define electron-packager invocation in npm scripts.
Invoke-Command $npm "install electron-packager -g" $projectDir
# Useful when we are going to bump the version - maybe should go into Npm.ps1
Invoke-Command $npm "install fluid-publish -g" $projectDir


# Npm install the application, this needs to be done for packaging.
Invoke-Command $npm "install" $projectDir
Expand Down
20 changes: 20 additions & 0 deletions provisioning/RenameInstaller.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<#
This script renames the Windows installer according to the version received when called.
#>

param (
[string]$provisioningDir = (Split-Path -parent $PSCommandPath), # Default to script path.
[string]$version
)

# Turn verbose on, change to "SilentlyContinue" for default behaviour.
$VerbosePreference = "continue"

# Store the project folder of the script (root of the repo) as $projectDir.
$projectDir = (Get-Item $provisioningDir).parent.FullName

$currentName = (Get-ChildItem -Path .\installer\ *.msi).FullName
$newName = Join-Path (Join-Path $projectDir "installer") ("GPII." + $version + ".msi")

Write-Output "Renaming the installer $currentName as $newName"
Rename-Item $currentName $newName