Best choice for hosting Maven repository and continuous integration? - maven-2

Can anyone recommend a good hosting provider where we can host our Maven 2 repository and continuous integration process?
We're very open minded about the implementation and are willing to use any OS, CI software and repository software so long as it gets the job done well.
Thanks in advance

we are using nexus community edition (#see http://www.sonatype.com/products/nexus) for caching external artifacts and publishing internal releases and snapshots.
we evaluated some tools for continuous integration (#see http://continuum.apache.org , #see https://hudson.dev.java.net) and decided to use hudson because of its simplicity.

Sonatype will host your project artifacts if it is open source. See here for details.
You can get Bamboo hosting from one of their partners

I don't know any SaaS provider who hosts maven/nexus/sonar. I know of beanstalk and springloops. Both are SaaS provider but don't target your requirements. Maybe, you could use amazon ec2 and deploy you own virtual machine with nexus. Nexus Open Source and Hudson on EC2

Related

self-hosted snapcraft packages?

I am packaging and in-house app as snap and would like to use our own intranet server to distribute it to clients. As much as I read the docs of snap, it seems it is documenting only distribution through official snapcraft.io channels. Is there a way to download a snap from URL?
Please note: I am not concerned about security in this question. I am also not asking about private snap repositories on 3rd-party servers.

Apache ACE together with Apache Felix embedded in Tomcat?

I am wondering whether there is a more or less easy solution for the following situation.
We have a web application that is using OSGI bundles. The application is deployed in Tomcat and embeds the Apache Felix framework as described in the documentation of Apache Felix. These are the prerequisites which cannot be changed.
Is it possible to use Apache ACE with this setup in order to distribute the bundles? The target.jar of Apache ACE comes with its own OSGI container which seems to make it hard to combine it with the one in our application. Is there an easy way to achieve this? The Apache ACE documentation is not that elaborate in this point.
Yes, it is. Apart from the target.jar artifact, which includes the framework and the management agent, that management agent is also available as a separate bundle. That is what you need for your scenario.
Getting the management agent artifact is a matter of unjarring the target jar:
jar xf target.jar jar/org.apache.ace.agent.jar
Configuring the management agent is explained here:
http://ace.apache.org/user-doc/user-guide.html#running-a-target

OpenMEAP hosted on Apache Tomcat Server via OpenShift Community

I'm preparing a development environment primarily for developing enterprise class cross-platform mobile hybrid apps and after much research I've decided to implement OpenMEAP on an Apache RedHat Cloud OpenShift container for advanced app management and services. The combination of these two could be interesting competition to commercial Mobile Enterprise Application Platforms.
I have my Eclipse setup properly to publish OpenMEAP to OpenShift Community Cloud and I can successfully create, build and deploy the OpenMEAP SLIC to Android devices and emulators after carefully following the instructions in these guides and videos:
OpenMEAP Windows Installation Video
Get free Apache Tomcat Hosting in the Cloud for Java Applications at OpenShift Video
I have only warnings in the Eclipse project. When I publish openmeap-admin-web and openmeap-services-web to the OpenShift container the WAR files are published but they don't expand and therefore cannot be accessed from the tomcat server over the web. If I could get past this problem I could proceed with actual development instead of the exhausting environment prep.
I know it's a long shot but is anyone attempting to use OpenMEAP with OpenShift (or any other cloud based Tomcat server)? I would also like to discuss OpenMEAP database requirements for an OpenShift (or Cloud) Apache Tomcat setup.
Any comment is extremely appreciated.
I don't have any experience onboarding OpenMEAD to OpenShift, but there are some things on the OpenShift Online community that you can review to see if it helps:
1) Troubleshooting with Logs: https://www.openshift.com/faq/how-to-troubleshoot-application-issues-using-logs
2) Onboarding vanilla Tomcat: https://www.openshift.com/blogs/free-apache-tomcat-hosting-in-the-cloud-for-java-applications-its-called-openshift
The later is onboarding Tomcat with a DIY cartridge. What cartridges are you using?
Feel free to post to feedback to the OpenShift forums as well: https://www.openshift.com/forums/openshift
You can deploy OpenMEAP on OpenShift from their quickstart page.
Once you've created the quickstart, you'll need to add your authorization information to your Git repository. Making code changes will require you to set a public SSH key, and then to clone your new application Git repository onto your local machine. See the Getting Started page for more steps in this flow.
Step 1. Get Your Application UUID
Get your application uuid by going to the OpenShift Management Console and select the app name to copy the UUID or run this command: rhc app show $appname | grep -i uuid
Go to the administrative interface of the OpenMEAP instance: https://$appname-$yournamespace.rhcloud.com/openmeap-admin-web/interface/
Log in using the default credentials (userid/password): openshift/openmeap
From the Main Menu, navigate to Settings.
Under Global Settings & Preferences and Cluster Nodes set the following values:
External Service URL: https://$appname-$yournamespace.rhcloud.com/openmeap-services-web
File-system Storage Path Prefix: /var/lib/openshift/<application-uuid>/app-root/data
Admin Server Accessible Service Url Prefix: https://$appname-$yournamespace.rhcloud.com/openmeap-services-web
File-system Storage Path Prefix: /var/lib/openshift/<application-uuid>/app-root/data
Step 2. Build Your Mobile Clients!
Use: openmeap.slic.appMgmtServiceUrl=https://$appname-$yournamespace.rhcloud.com/openmeap-services-web/application-management
More Information
For OpenMEAP developer resources visit http://wiki.openmeap.com
For more info on OpenMEAP in general visit http://www.openmeap.com
Uses jbossews-2.0 with code from https://github.com/OpenMEAP/openshift-openmeap-quickstart

Vagrant in production

I've been reading about Vagrant, and I find it quite useful for my development. I am currently managing a series of services (mail, web, LDAP, file sharing, etc.), and often one of these falls and needs a quick backup. Is it possible (and recommended) to use Vagrant for these purposes?
So far I've virtual machines installed like real machines.
I would also like to know about an alternative to Vagrant which would allow me to setup a simple configuration file and put a virtual machine, for example, with Zimbra, and quickly have an alternate mail server, enable RabbitMQ, etc.
Vagrant should be used more like a staging environment to test your infrastructure changes. It should be your test bed for automated infrastructure changes.
The way we use it at my company is like so:
Create VMs for our managed servers in Vagrant.
Create puppet definitions for each server.
Create cucumber tests for each server.
Make infrastructure changes via puppet and add cucumber tests.
Launch our servers to test for failures.
Fix bugs, release and/or back to step 4.
Basically when we're happy with our changes, we'll pull our puppet changes into production to make it happen.
I'd not recommend using vagrant to manage VMs for real production. I'd use something else like razor, virsh, OpenStack or one of the many other vm management systems out there.
This page suggests that the Vagrant push command is meant for deploying to production:
https://www.hashicorp.com/blog/vagrant-push-one-command-to-deploy-any-application/
"Additionally, multiple config.push.define declarations can be in a Vagrantfile to define multiple pushes, perhaps one to staging and one to production, for example."
From my experience, Vagrant mainly used in a development environment.
Vagrant configuration and provisioning options are limited compared to Terraform for example.
If you are working on a cloud based environment, you can use Terraform for infrastructure provisioning.
If your environment is local or your VMs will be hosted on a datacenter, you can use Ansible, chef or puppet for you configuration management and automation.
Hashicorp just published Otto, which is meant to be the Vagrant's successor. It is designed to support deployment environments.
From their Github page:
The key features of Otto are:
Automatic development environments: Otto detects your application
type and builds a development environment tailored specifically for that
application, with zero or minimal configuration. If your application depends
on other services (such as a database), it'll automatically configure and
start those services in your development environment for you.
Built for Microservices: Otto understands dependencies and versioning
and can automatically deploy and configure an application and all
of its dependencies for any environment. An application only needs to
tell Otto its immediate dependencies; dependencies of dependencies are
automatically detected and configured.
Deployment: Otto knows how to deploy applications as well develop
them. Whether your application is a modern microservice, a legacy
monolith, or something in between, Otto can deploy your application to any
environment.
Docker: Otto can use Docker to download and start dependencies
for development to simplify microservices. Applications can be containerized
automatically to make deployments easier without changing the developer
workflow.
Production-hardened tooling: Otto uses production-hardened tooling to
build development environments (Vagrant),
launch servers (Terraform), configure
services (Consul), and more. Otto builds on
tools that powers the world's largest websites.
Otto automatically installs and manages all of this tooling, so you don't
have to.
I had the same question and have been investigating the use of Vagrant push which as per their documentation, as of version 1.7, Vagrant is capable of deploying or "pushing" application code in the same directory as your Vagrantfile to a remote such as an FTP server.
I'm considering having vagrant spin up in a VM for developers, while also giving you the option to deploy your code to a live server for production environments.
As mentioned by #andrerpena, Otto is the successor of Vagrant.
From www.ottoproject.io :
Otto can deploy your application. Users of Vagrant for years have wanted a way to deploy their Vagrant environments to production. Unfortunately, the Vagrantfile doesn't contain enough information to build a proper production environment with industry best practices. An Appfile is made to encode this knowledge, and deployment is a single command away.

What are the Maven 2 Coordinates for OpenDS SDK?

I have been playing around with the OpenDS SDK (not the full OpenDS Server/Platform) to implement a simple LDAP listener to front a service my application provides.
I have not been able to find the Maven 2 coordinates for such SDK. This is the SDK site https://www.opends.org/wiki/page/LDAPSDK
I would like to know if the dependency is available in any public Maven repository.
Thanks,
After contacting a person related to OpenDS, I learned that it is not likely that the OpenDS artifacts will be available at any Maven repository.
However, this same person pointed at OpenDJ (http://opendj.forgerock.org/) and the OpenDJ SDK available in this repository http://maven.forgerock.org/repo/
An alternative is the UnboundID LDAP SDK. UnboundID's LDAP SDK has some features not available in other SDKs, for example, an in-memory directory server and asynchronous operations. The standard edition is cost-free, but commercial support is available if required.