On 26 March 2018 at 15:51, Bill Burke <bburke(a)redhat.com> wrote:
On Wed, Mar 21, 2018 at 9:52 AM, Stian Thorgersen
<sthorger(a)redhat.com>
wrote:
>
>
> On 20 March 2018 at 22:29, Bill Burke <bburke(a)redhat.com> wrote:
>>
>> I have a golang client utility (kcinit) that I need to integrate with
>> tests in our testsuite. Its possible to integrate golang with maven
>> using this maven plugin:
>>
>>
https://github.com/raydac/mvn-golang
>>
>> To integrate my tool into the arquillian testsuite, I've pulled in
>> this plugin to pull down and build my golang tool so that it can be
>> executed within a test. The way it works is that the maven plugin
>> will first download the Golang SDK and store it within ~/.mvnGolang.
>> It will also store any source code it pulls down and builds there. It
>> will build a binary that is specific to the platform it is running on
>> so this is perfect for our testsuite.
>>
>> Sound ok?
>
>
> That works. Would it be best to have a profile for it though? Rather than
> having it run every time developers build and test we can add a CI job
for
> it that would be ran on PRs. That way it's always tested on PRs, but you
> don't have to pay the price locally if you haven't touched kinit at all.
>
its not that bad (an extra 10 secs on my network). If somebody
complains I'll change it?
Ok, let's just leave it.
>>
>>
>> Next question is distribution. "kcinit" is a command line utility.
>> Should I add this to our current client tools directory in the disto
>> or create a separate dis zipt? Ok to include binaries for linux, osx,
>> and windows? This will require the maven plugin to individually
>> cross-compile for each platform. Its not superfast and our distro
>> build will be slower, but we will have one place to pull this stuff
>> together. I will need to eventually create an RPM for this tool so
>> that it can be automatically installed in Fedora/RHEL.
>
>
> I'd go with a separate dist. It's a client tool and having to download
and
> extract it from the large server zip would be annoying.
>
Don't really need a dist, per se, just need to build the binaries for
common platforms (osx x86, linux x86, and windows x86).
Is publishing downloads to community website automated? Will want a
separate download for each platform binary.
Yes, the whole build and release of Keycloak is automated with Jenkins
jobs. The binaries are just a single file right? So no need to use a ZIP or
anything and users can just download kcinit directly for their platform?
> Maybe it would be best to have a separate profile here as well? Something
> like distribution-cli. It can be disabled by default, but enabled when
we do
> releases. I know quite a lot of folks regularly builds the server dist
while
> doing development, myself included.
>
Yes, should definitely do this. cross-platform builds take awhile.
> For Keycloak we can definitively include binaries for all. Can the Maven
> plugin build all binaries on Linux? Or do you need to build it on the
> individual platforms? If the latter then we have a biggish problem to
figure
> out when releasing Keycloak.
>
Golang and the maven plugin can build all platform targets on any OS.
Makes me think that it may just be simpler to build the dist in the main
Keycloak repo. We already have some modules that are already only built as
part of jboss-release profile in distribution/pom.xml, so probably just do
that.
I can update the jobs that upload to
downloads.jboss.org and the website if
you want. Then you don't have to spend time figuring out that stuff as well.
--
Bill Burke
Red Hat