Jump to content
Mike Torrettinni

What is part of your contiuos integration?

Recommended Posts

I'm putting a list of tasks together that I do for every update, release, or just in general around the project, so that I never forget anything and also to see what I can automate or streamline.

 

So, I'm interested in what kind of steps, tasks do you do in your CI process, manual and automated.

 

So far I have, in the process of update release:

 

manual, before automated:

- copy user guide files to common destination

- prepare change logs

 

run automated (cmd script):

- git commit (comment: version number)

- build project (msbuild script)

- create installers (Inno setup)

 

manual, after automated:

- to ftp

- prepare and send update emails

 

So, not a lot automated, yet. I don't run test cases, so I assume most of you will have this part of the build process.

 

At least I'm missing these tasks in automated part, which I still plan to integrate :

- backup projects and all important files, docs

- git Push

 

I assume some of you use FixInsight as part of the build process for final check before release, right?


Do you use any other tools for build process to check for code? Do you do any reports, like summary of code changes...

 

I can't even imagine what kind of task list a large team has, or someone who deploys to other platforms.

 

 

 

 

 

Share this post


Link to post

My last job I built a tool that integrated git into our workflow. Boy did it save a ton of errors and ensured we all did things the same way.

 

It was a kind of "dashboard" that I did my work through.

 

I also integrated a bunch of things that I found myself doing very regularly in my daily tasks. They were all very specific to the work we did, but it was extremely repetitive and automating parts of it made a huge difference.

 

But the biggest benefit was with git, for sure.

Share this post


Link to post

I as a non-programmer:

  • FixInsight - I use it continuously. Depending on the situation. You can check the whole project or just the current unit (that's instant)
  • EurekaLog - without it (or other similar products) it is out of the question
  • Tests - I can't do them. That's why I test everything manually. It's tiring. I don't like it at all. I have to force myself into it:classic_sad:
  • GIT - I only use it as an archive. I don't do any branches or test versions

Your whole process skeleton looks logical and good

Share this post


Link to post
51 minutes ago, David Schwartz said:

I also integrated a bunch of things that I found myself doing very regularly in my daily tasks. They were all very specific to the work we did, but it was extremely repetitive and automating parts of it made a huge difference.

I'm actually still at the point when I regularly check the automated parts... if git did it's work, if installers contain appropriate files, when I do ftp I always download the files to check... and some details change, get improved almost monthly. So, still in progress.

Share this post


Link to post

We have multiple sites that are development sites, test/qa sites or production sites. Each site can have one of three build tracks: Development, Pilot or Live. Update model can be automatic or manual. The config is kept in a database.

 

The Continua CI will push new builds automatically to the dev/test/qa sites that have been configured as automatic, only if the automated unit tests was a success, and uses the same PowerShell scripts that are used when pushing out a new version manually. This saves a lot of time during test/qa, when fixes are more frequent than for a live site.

 

The manual part consists of using a UI to select which site(s) that will get which executable(s), and db schema updates from the relevant build track.

 

Scripting based on a stored config minimizes the chance of pushing the wrong version to the wrong site. 

Share this post


Link to post
3 hours ago, Stano said:

Tests - I can't do them. That's why I test everything manually. It's tiring. I don't like it at all. I have to force myself into it

I know the feeling, no tests.

But I started running test for 'output', so if same input produces the same output from previous version. This is 'easier' than to write test cases for old code.

Share this post


Link to post

I wanted to use Jenkins, but since Jenkins X arrived I'm a kind of starred like a rabbit in front of a snake,

not konwing the status and future of Jenkins.

 

While Jenkins X is a dockerized version of Jenkins, but not really compatible and not my true favorite, I'm not sure where the roadmap and the developers will move.

Will Jenkins dissappear and get less active, or not ?

Will Jenkins be replaced by Jenkins X in the long run ?

Is Jenkins X just intended for different kind of customers ?

 

Meanwhile still some time has passed by, and Jenkins seemed still normal and active, but I haven't checked the current situation for a least a few months now.

 

 

Share this post


Link to post
13 hours ago, Mike Torrettinni said:

At least I'm missing these tasks in automated part, which I still plan to integrate :

- backup projects and all important files, docs

- git Push

I think perhaps you are coming at this from the wrong angle.. git push is your backup (assuming you are using an offsite git server/service) - and should also be the trigger for automation in CI - ie you push your git commits, the CI server detects those changes and fires off a build, runs your unit tests, builds your installer, ftp's the files to the server and sends out email notificiations. 

 

(vendor plug)

 

These days CI is very accessible even for solo developers. Our Continua CI product is free for a single concurrent build and a single build agent (installed on the same machine as the server) - other than that it's fully functional, unlimited configurations (and users) - perfect for solo developers and it's very easy to scale it up (add licenses, install extra agents as needed).  It only takes a few minute to install and get up and running with a build process -

 

 

The video shows using mercurial, visual studio and nunit, but it works just as well using git, delphi and dunitx.

 

https://www.finalbuilder.com/resources/blogs/building-delphi-projects-with-continua-ci

 

 

If you really want to expand your automation then take a look at FinalBuilder (built with delphi) - over 600 built in actions that cover version control (git, mercurial, svn and a bunch of others), compilation (delphi 3 - 11, msbuild, vs etc) - install builders (innosetup, installshield etc), deployment (FTP/FPTS/SFTP/SSH) and a too many others to mention here. 

 

The cool thing about FinalBuilder is you get to develop and debug your build process in an IDE that lets you step through your build process, stop on breakpoints, watch variables etc.. and then your build project can be checked into version control along with your source code and your CI server can run FinalBuilder to build your projects (using the console version of FinalBuilder). 

 

Of course Continua CI and FinalBuilder play very nicely together - we build FinalBuilder, Automise and Continua CI with FinalBuilder an Continua CI.  

 

https://www.finalbuilder.com/resources/blogs/continuous-integration-with-finalbuilder

 

 

  • Like 2

Share this post


Link to post
12 hours ago, Vincent Parrett said:

I think perhaps you are coming at this from the wrong angle..

The push is last action in my process. I only make new build when is ready (enough changes implemented) and then run the whole process. When all is done, I verify the commits and if all aligns I push.

 

I don't really see Github as a backup,  I see it more as a storage. But need to automate another backup to local disk. I use Archive from SourceTree that creates zip already. Perhaps this can be automated, or I guess directly from git.

 

Thanks, Continua CI looks interesting.

 

Share this post


Link to post
37 minutes ago, Mike Torrettinni said:

Thanks, Continua CI looks interesting.

I have used it with a number of clients to good effect; highly recommended.

 

 

Share this post


Link to post

we are using gitflow + merge request 

 

CI pipeline(Gitlab runner) looks like 

- precheck like changelog/tags validation 

- build

   - prepare resources like versioninfo, build info, theme, licences, changelog ....

   - build dcc32

   - postprocessing (like dfm packing clearing) 

- tests

- updater and update 

- setups inno + msi 

- deploy (based on branch like upload to web for testerd when mr is merged to develop ...)

   

 

 

Share this post


Link to post
15 minutes ago, DPStano said:

- precheck like changelog

what does this mean, automated changelogs? or this is manual pre-check?

Share this post


Link to post

the changelog is part of commit message like

 

commit title

[changelog]

- bla bla bla

- bla

 

each mr has to have at least one commit with changelog with fixed structure, it will not stop pipeline just auto label merge request with "missing-changelog" or something like that...

 

 

Share this post


Link to post

Interesting, my commit messages are not same as what users see, need. Commits are more about code change, while changelog gets end user feature change info, so I need to manually write them.

Share this post


Link to post

you have to track code changes and some changelog info together, when there are more like 100 commits in each release you are not able to look at every commit and write some info to release notes so normally you would have a file like changelog.md and every change should be written there before the merge, but when you are working on multiple branches with multiple developers its pain for constant rebase and conflict solving (you are constantly rewriting same line) so you will end up with multiple changelog.md files or ideally will move changelog from any tracked git file and now you have like two options write changelog to commit message or merge request description ... first one is simpler for processing so we started with that... and it working nicely ... and before new version release all commit's changelog lines are processed and some nice markdown file is created and uploaded to the web.

Edited by DPStano
  • Thanks 1

Share this post


Link to post
4 hours ago, corneliusdavid said:

Does anyone use TaskRunner for automated builds/CI?

No, but the video looks a bit confusing to me with all the parameters setup. Perhaps my simple builds are just not suitable, too simple for it.

 

On 10/22/2021 at 8:04 PM, Vincent Parrett said:

Our Continua CI product is free for a single concurrent build and a single build agent (installed on the same machine as the server)

I only see download for client/server version. Does it also come in a standalone, client only version, or does it need server running all the time?

Share this post


Link to post
18 minutes ago, Mike Torrettinni said:

I only see download for client/server version. Does it also come in a standalone, client only version, or does it need server running all the time?

It's a continuous integration server - it's designed to run as a service running all the time. It monitors your source code repositories (git, svn etc) for changes and triggers builds based on those changes. It can only do that when it's running.

 

If you just want to automate the build process without doing continuous integration, then look at FinalBuilder. It's a desktop IDE application (there is also a console version included). 

Share this post


Link to post
31 minutes ago, Vincent Parrett said:

look at FinalBuilder. It's a desktop IDE application (there is also a console version included). 

I re-read this topic and I assume my tasks are still way too simple for FinalBuilder:

 

Even though I have more tasks now and a few more are coming, I guess still staying with batch files, for now.

Share this post


Link to post
19 minutes ago, Mike Torrettinni said:

I re-read this topic and I assume my tasks are still way too simple for FinalBuilder:

Download a trial version and see for yourself. Yes, you will need to give us your email address so we can send you a code and you will get a few follow up emails that are not sales, just trying to help you evaluate the product - we use drip.com for those emails and you can unsubscribe quite easily. 

 

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×