Hi Chris, Looks good.
Regarding the problem with the missing graphviz. We could do a stash after the build and lets the site stages run all on the git-websites node. What do you think? Sebastian > Am 28.02.2018 um 12:00 schrieb Christofer Dutz <christofer.d...@c-ware.de>: > > Ok I think I have a valid solution > > I left things pretty much the way they were, but excluded most of the plugin > executions that would usually kick in in the deploy step. > Now it seems as only the steps we want are executed. I definitely like this > now as now we are really only deploying things if all tests pass. > So now untested code in an upstream module can't break everything downstream. > > Unfortunately we additionally had a second problem: Fontawesome 5 was > released recently and therefore the download of 4.7 was discontinued and this > caused the build to fail. I removed the dependency to that as I could not > trace down any usage of this anywhere in the generated site. This also > greatly reduces the amount of stuff having to be deployed. > > Please have a look at my changes. > > Chris > > > > > Am 28.02.18, 09:22 schrieb "Christofer Dutz" <christofer.d...@c-ware.de>: > > Ok, > > bringing back the discussion I just had with Sebastian (has problems > accessing the mailing list at his current customer). > > I see the following problems with the current build pipeline: > 1. The second "deploy" execution runs the build and tests double > 2. The site should be generated on the same node as the tests are run > (currently not happening when using the Site-Generation Job, but should be) > > The reason Sebastian split up "Build & Test" and "Deploy" was to prevent > things being deployed if the tests fail, which makes sense. > > I would propose to re-unite the build, test, site-generation and > sonar-analysis to one step (Maven is built to handle all of this, I see no > benefit in splitting this up). > Additionally we activate the experimental "deployAtEnd" switch of the > deploy plugin. This should only deploy anything if all modules builds are > finished and the deploy phase of the last module is executed. > > What do you think? > > Chris > > > > > Am 27.02.18, 18:43 schrieb "Christofer Dutz" <christofer.d...@c-ware.de>: > > By the way, > > as it seems there is no clean solution to be able to run the > rawsockets tests without a dedicated VM, I ordered one from infra today. > This VM can be configured to our needs and we no longer have to jump > any hoops. This VM will be a Jenkins node (probably labeled plc4x) which is > only available to our projects build jobs. If we need anything installed, we > can add it to the puppet scripts for it and the changes will get deployed. > > I really hope this way we'll get rid of some of the most annoying > problems we were fighting with and keep the build simple at the same time. > > The option of building docker images for running integration-tests > sounded extremely complicated from my point of view. > > The option to not execute the raw socket tests is not really an > option, I think as I think the main CI server should execute all tests and > not just a subset. > > Chris > > > > Am 27.02.18, 18:15 schrieb "Christofer Dutz" > <christofer.d...@c-ware.de>: > > Hi Sebastian, > > I just noticed two things with the new piepeline. It now correctly > is able to deploy the site from the main build, so that's cool. > Unfortunately it seems that now the site is no longer able to > generate the images in via blockdiag etc. > > Also I did notice that the split between build and deploy has a > very undesirable side effect: > > - Build does a "clean install", which does clean, compile, test, > integration-test > - Deploy does a "deploy", which does compile, test, > integration-test, deploy > > So most of the build is executed twice, we should eliminate that, > however I don't think Maven likes this sort of split-up and I doubt a "mvn > deploy:deploy" will automatically know what to deploy. > > Right now I would suggest to bring the deploy back to the "build > master" as it's only deployed when built on master. > > > Chris > > > > Am 24.02.18, 16:55 schrieb "Christofer Dutz" > <christofer.d...@c-ware.de>: > > Hi Sebastian, > > I finally managed to have my flu-infected brain have a look at > the changes. I do agree it l looks a lot cleaner this way. I also like the > way the Jenkins jobs now look. > Hopefully now we could also do the following things: > - Add a "site-deploy" step that is only executed on the master > branch, which deploys the site. In order for this to work, we would need to > enforce this part being executed on a node tagged with "git-websites" as only > these can actually push to the git-site branch. > > The second thing is a little more complex: > - In order to run the RawSocket tests, we need to have libpcap > with setuid root or have to execute the tests as root. Both is not possible > on the normal Jenkins VMs for good reasons. There would however be an option > to fire up a Docker container and run the tests inside that. Unfortunately I > need a lot of help with setting up something like that (Ideally this would be > handled in Maven and not in the Jenkinsfile, as this way the test-results and > coverages are cleanly integrated with the rest of the build) > > Seems the docker-maven-plugin from Fabric8 would be a possible > solution, but I remember that Fabric8 has been cancelled by RedHat ... would > it still be ok to use that plugin? > > http://info.michael-simons.eu/2016/08/25/integration-testing-with-docker-and-maven/ > > Chris > > > > Am 22.02.18, 13:02 schrieb "Sebastian Rühl" > <sebastian.ruehl...@googlemail.com>: > > Hi Together, > > Today I found the time to move from scripted pipeline to > declarative pipeline. > This opens a much better integration into Jenkins and > makes the Jenkinsfile much more readable. > > Small changes to before: > - The build stage is split into two (Build, Build master) > where I converted the if statement to stage conditions. > - Testsresults are reported to Jenkins and can now easily > be seen in the build view > - Toolmanagement is moved to native integration (so no > need for explicitly defining envs anyomore) > > What I want to do next is to use the native sonar > integration. This will then use the sonar configuration defined in Jenkins > and ad a sonar link into Jenkins. Then we also could define a build-breaker > for quality gates in the future. > > Sebastian > > > > > > > > >