Jenkins + Artifactory in Red Hat - docker

Good morning, I have a server with Red Hat Enterprise 7.6 (it can only be this one) installed and I have to install jenkins + jfrog artifactory.
The easiest way to do this would be with docker or installing them on the machine? The docker I already installed them but I do not know which is the most correct way to use them.
The docker seems to me better in the matter of I need to have other tools in that server and everything in container. In the future this machine will also have gitlab.
Thank you for your help

Docker Compose will be your best option and is the recommended option from JFrog's point of view for the scenario you're describing. We've added a bunch of examples of docker-compose scripts to our GitHub repos that should give you a great start.

You can user docker-compose tool.
Combine all required services in one yaml file.

Related

Run a gitlab CI pipeline in Docker container

Absolute beginner in DevOps here. I have a Gitlab repo that I would like to build and run its tests in the Gitlab pipeline CI.
So far, I'm only testing locally on my machine with a specific runner. There's a lot information out there and I'm starting to get lost with what to use and how to use it.
How would I go about creating a container with the tools that I need ? (VS compiler, cmake, git, etc...)
My application contains an SDK that only works on windows, so I'm not sure building on another platform would work at all, so how do I select a windows based container?
How would I use that container in the yml file in gitlab so that I can build my solution and run my tests?
Any specific documentation links or suggestions are welcomed and appreciated.
How would I go about creating a container with the tools that I need ? (VS compiler, cmake, git, etc...)
you can install those tools before the pipeline script runs. I usually do this in before_script.
If there's large-ish packages that need to be installed on every pipeline run, I'd recommend that you make yourown image, with all the required build dependencies, push it to GitLab and then just use it as your job image.
My application contains an SDK that only works on windows, so I'm not sure building on another platform would work at all, so how do I select a windows based container?
If you're using gitlab.com - Windows runners are currently in beta, but available for use.
SaaS runners on Windows are in beta and shouldn’t be used for production workloads.
During this beta period, the shared runner quota for CI/CD minutes applies for groups and projects in the same manner as Linux runners. This may change when the beta period ends, as discussed in this related issue.
If you're self-hosting - setup your own runner on Windows.
How would I use that container in the yml file in gitlab so that I can build my solution and run my tests?
This really depends on:
previous parts (you're using GL.com / self hosted)
how your application is built
what infrastructure you have access to
What I'm trying to say is that I feel like I can't give you a good answer without quite some more information

Creating Dockerfile quickly

I wanted a docker image with adoptopenjdk in alpine; installed with:
maven 3.6.3
kubectl latest
helm latest
git
maybe openshift
Is there a quick way to select a base image and then the aforementioned tools and get a Dockerfile, which I can further edit perhaps? It seems like something like that would be great to have and I expected it to be available. I went to Dockerhub and searching the tags, I can get maybe just the adoptopenjdk or maven or kubectl but not all-in-one bundle of my choosing. If there doesn't exist a thing like that what is the best way to go about it?
I would prefer pulling some separately, there’s none much differences thou.

Using Jenkins Container to build Delphi applications

I wish to setup Jenkins using Docker to build different projects, some are in Delphi, some in node.js + AngularJS.
For the node.js and Angular, I think it can be done with a Linux container, but for what concerns the Delphi I think I have to use a Windows container or an agent build on windows container.
I've tried googling around but I've not found any docker container build on windows and Jenkins agent.
Anyone has got a similar need and found a clean and easy way to set up such an enviorment?
Thanks

How to start docker containers using shell commands in Jenkins

I'm trying to start two containers (each with different image) using Jenkins shell commands. I tried installing docker extension in Jenkins and/or setting docker in global configuration tools. I am also doing all this in a pipeline. After executing docker run... I'm getting Docker: not found error in Jenkins console output.
I am also having a hard time finding a guide on the internet that describes exactly what I wish to accomplish. If it is of any importance, I'm trying to start a Selenium Grid and a Selenium Chrome Node and then using maven (that is configured and works correctly) send a test suite on that node.
If u have any experience with something similiar to what I wish to accomplish, please share your thoughts as what the best approach is to this situation.
Cheers.
That's because docker images that you probably create within your pipeline cannot also run (become containers) within the pipeline environment, because that environment isn't designed to also host applications.
You need to find a hosting provider for your docker images (e.g. Azure or GCP). Once you set up the hosting part, you need to add a step to your pipeline to upload/push the image to that provider's docker registry or to the free public Docker Hub. Then, finally, add a step to your pipeline to send a command to your hosting, to download the image from whichever docker registry you chose, and to launch the image into a container (this last part of download and launch is covered by docker run). Only at that point you have a running app.
Good luck.
Somewhat relevant (maybe it'll help you understand how some of those things work):
Command docker build is comparable to the proces of producing an installer package such as MSI.
Docker image is comparable to an installation package (e.g. MSI).
Command docker run is comparable to running an installer package with the goal of installing an app. So, using same analogy, running an MSI installs an app.
Container is comparable to installed application. Just like an app, docker container can run or be in stopped state. This depends on the environment, which I referred to as "hosting" above.
Just like you can build an MSI package on one machine and run it on other machines, you build docker images on one machine (pipeline host, in your case), but you need to host them in environments that support that.

Jenkins - Docker integration

I'm looking for the best way to integrate Docker into Jenkins to execute build/test commands.
The best source I have found is this blog post:
http://blog.howareyou.com/post/62157486858/continuous-delivery-with-docker-and-jenkins-part-i
It basically offers to wrap all execution commands with "docker run".
I would like to see better integrations with Jenkins plugin but I couldn't find anything in this area.
Could anyone suggest a good way to proceed? Is there any project on the way to address this?
Thanks
There's a second blog post which goes into more detail about the setup. The missing piece was dockerize which makes the Jenkins & Docker integration painless. If you look into the Ruby app example, there's a Vagrantfile which will set everything up for you, use that as the starting point for your own setup.
Wouldn't you just create a shell script to setup the docker environment as you normally would (or better still push the docker container in to a private repo) and get Jenkins to pull it down and run the test suite inside docker using the daemonised mode?
Maybe you could use directory shares to drop the output of the test data so that Jenkins can read it and display?
Hopefully a point in the right direction...
This plugin might be what you are looking for.

Resources