And now, you can donate Bitcoins to me as well! Just click on that little blue button on the right that says “Donate Bitcoins”. And there is a reason for that – the stupid donate button doesn’t work. Using rake to automate tasks – A pretty comprehensive introduction to rake tasks.īuilding Delphi with Ruby – the EDN article from Ed Vander Hoek, including a generic framework for Delphi Rakefiles but which is limited in version support.Ī Simple Delphi Rakefile – A straightforward rake file for Delphi apps from Shawn Oster.ĭespite all my slaving over a hot keyboard, bringing you a never ending supply of intellectually stimulating and hopelessly useful content, in the entire history of this website, no one has ever donated to me via PayPal. Rake RDocs – The official rake documentation. Using Rake – An introduction to Rake by Thoughtworker Martin Fowler. Further steps for your project might be adding in your acceptance tests or automatically generating and publishing some release notes from your git logs. Simple, repeatable and easy to extend when you have more steps to your pipeline. You can build your releases, create the manifest and upload all with: Upload_to_s3(mac_name, 'myproject/downloads/' + mac_name)ĭesc "Builds, zips and uploads the artefacts and manifests" Upload_to_s3(win_name, 'myproject/downloads/' + win_name) # differ, you will need to extract the version from the generated ist instead. # Call get_version on the Win32 executable.
#DELPHI CARET POSITION TEDIT ZIP#
Upload_to_s3(File.join(get_cwd(), 'manifest.xml'), 'myproject/manifests/manifest.xml')ĭesc "Builds the Windows zip distributable" Write_update_manifest_to(File.join(get_cwd(), 'manifest.xml'), v) V = get_version(get_executable_path(:Win32)) Release_project('MyProject.dproj', 'MacOS32')ĭesc "Writes the manifest out to manifest.xml in the current working dir" Puts 'Building Project MyProject.dproj for Mac'
#DELPHI CARET POSITION TEDIT MAC OS X#
Release_project('MyProject.dproj', 'Win32')ĭesc "Builds the Mac OS X release of MyProject.dproj" Puts 'Building Project MyProject.dproj for Windows' Rake tasks can also have parameters, this might be useful if you wanted to pass in a version number manually at build or publish time.īack to our project pipeline from earlier, here are a selection of tasks that wrap everything together:ĭesc "Builds the Win32 release of MyProject.dproj" Rake tasks can also have parallel prerequisite dependencies like this: Rake tasks can be standalone or can have prerequisite dependencies: The next step is to put it into composite parts and draw up a set of tasks. You will need to define the access keys, secret keys, endpoints and bucket.
To start with, we define a function which will run msbuild after running rsvars.bat to setup the environment:ĭef release_project(project_file, platform)īuildcmd = "msbuild # to upload to S3" If you’re not familiar with ruby, I’d suggest RubyMonk.
If you’re already familiar with Ruby or Python then you will find building Rakefiles much easier. The msbuild driven versions of Delphi make building your Delphi project considerably simpler than trying to wrangle the appropriate dcc32 flags. So I thought I’d cover enough Rake to get you started with a Delphi Rakefile. There were a couple of articles about using Rake with Delphi, one from Ed Vander Hoek and another from Shawn Oster but they were both a little out of date for my purposes. Rake is a fairly mature Ruby based build tool which Martin Fowler has written about in the past. Upload the applications binary zip files to Amazon S3 For this particular application, there were several steps:īuild the application in Release configuration for each platform (Win32 and MacOS32)Ĭreate a manifest XML file with the version for auto-update purposes As with any Continuous Delivery pipeline, the first step is to map out the steps involved in getting the application to the customer. I wanted a build tool to run the builds of my multi-platform targeted Delphi XE2 application because it was getting tedious to publish. It’s not a secret that I’m a big advocate of Continuous Delivery and I’ve also found that I’ve been using a lot of Ruby and Python development workflow tooling recently because I like those languages in this setting and I find the tools to be relatively easy to use (I recently wrote about Fabric for push deployments).