On Thu, 19 Oct 2017 03:04:15 +0800 Ben Lau <xben...@gmail.com> wrote:
> I am still new to QBS. I am looking for a suggestion about how to write and > run a custom script by QBS. > > Besides building the binary, developers may need additional custom scripts > for deployment, code analysis, starting a mock server for testing etc. This > kind of task may not have a file output locally. > > Can I write this kind of script by QBS? I usually write this kind of > script as a shell script, but it is not a cross-platform solution which > does not work with Windows. You should be able to use the normal mechanisms that are also used for building. Here's a sketch for for remote deployment (untested): Product { name: "remote deployer" type: ["mydeploytarget"] // You typically don't want to do uploads after every build, so this product's rules are not // executed unless you specifically request it. builtByDefault: false // Assuming you want to upload e.g. some tar archive you've created from your build. Depends { name: "mypackage" } // These as well as the rule below would typically be moved into a dedicated module // for better re-usability, but it's easier to demonstrate with a self-contained // product. property string remoteUser property string serverName property string targetDir Rule { // The target type(s) of your dependency/dependencies. inputsFromDependencies: ["archiver.archive"] Artifact { // Just a dummy. Does not have to get created. We should probably // have syntactic sugar for this. filePath: "deploydummy" fileTags: ["mydeploytarget"] } prepare: { var targetString = product.remoteUser + '@' + product.serverName + '/' + product.targetDir; var cmd = new Command("scp", [input.filePath, targetString]); cmd.description = "uploading " + input.fileName; return [cmd]; } } } Now this should upload your archive (possibly rebuilding if necessary): $ qbs -p "remote deployer" Christian _______________________________________________ Qbs mailing list Qbs@qt-project.org http://lists.qt-project.org/mailman/listinfo/qbs