Re: What about a Composer plugin?

426 views
Skip to first unread message

Bruno P. Kinoshita

unread,
Apr 24, 2013, 8:42:01 AM4/24/13
to jenkin...@googlegroups.com, edga...@gmail.com
Hi Renan,

I'm migrating a few projects from CodeIgniter (+bunch of libraries and sparks) to FuelPHP and to CodeIgniter+Composer, and am having to learn Composer.

> Is there any activity to integrate Composer and Jenkins?

Not that I'm aware of.

> Is there a better way to use Composer through Jenkins?

In my todo-list, right next to Composer is Phing. I haven't had time to read all the docs about Composer, but I want to understand if you have to run composer or if you can call it in phing scripts. What do you think?

>Do you think that suggestions is useful for community?

Definitely. I can help writing the plug-in, and can test it while I migrate my projects.

Thanks!

Bruno P. Kinoshita
http://kinoshita.eti.br
http://tupilabs.com

--- Em qua, 24/4/13, Renan de Lima <renan...@gmail.com> escreveu:

De: Renan de Lima <renan...@gmail.com>
Assunto: What about a Composer plugin?
Para: jenkin...@googlegroups.com
Cc: edga...@gmail.com
Data: Quarta-feira, 24 de Abril de 2013, 9:14

Hello all,

I use Jenkins at work for PHP projects. We are
starting adopt Composer in our systems cycle life. Unfortunately I've
not seen any integration between Composer and Jenkins CI.

For my organization we need basically two features:

1. Invoke Composer [build step]

Arguments:
- php path (optional, defaults to "/usr/bin/env php")
- composer path (optional, defaults to "/usr/bin/env composer" or a built-in composer executable)


- command (required... install/update/create-project/ validate... see https://getcomposer.org/doc/ 03-cli.md )
- options (free text to send to command line)


2. List Composer Package Versions [parameter]


Arguments:
- php path (optional, defaults to "/usr/bin/env php")
- composer path (optional, defaults to "/usr/bin/env composer" or a built-in composer executable)
- package name (required)


- stability (some checkboxes that users can pick: dev, alpha, beta, RC and/or stable, see https://getcomposer.org/doc/ 04-schema.md#minimum-stability )

So then...

Is there any activity to integrate Composer and Jenkins?
Is there a better way to use Composer through Jenkins?
Do you think that suggestions is useful for community?

thanks,

Renan de Lima

just a note, I don't know if it's necessary... Composer is a dependency manager for PHP http://getcomposer.org/

--

You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.

To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-de...@googlegroups.com.

For more options, visit https://groups.google.com/groups/opt_out.

 

 


Renan de Lima

unread,
Apr 25, 2013, 8:03:16 AM4/25/13
to jenkin...@googlegroups.com
Hi there,


I'm migrating a few projects from CodeIgniter (+bunch of libraries and sparks) to FuelPHP and to CodeIgniter+Composer, and am having to learn Composer.

> Is there any activity to integrate Composer and Jenkins?

Not that I'm aware of.

> Is there a better way to use Composer through Jenkins?

In my todo-list, right next to Composer is Phing. I haven't had time to read all the docs about Composer, but I want to understand if you have to run composer or if you can call it in phing scripts. What do you think?


Before talk about Composer, some words about build.xml. Actually we are moving from Phing to Ant for some reasons:
    - Ant makes projects more pluggable for IDEs, CI Servers... (less shell)
    - Ant is recommended in http://jenkins-php.org
    - Ant is faster than Phing
    - Ant parallel task is stable, Phing task is not
What do you think about this?

Getting back to Composer plugin... We are planning two kinds of job for every project:
    - build-job: for every project development line (trunk, branches...). This job executes quality checks as described in http://jenkins-php.org It also generates tags;
    - deploy-job: one per project, it sends files of a package version to the web servers.

For build-job, Composer is necessary to get dependencies before to run Ant/Phing build.xml (http://getcomposer.org/doc/03-cli.md#install and http://getcomposer.org/doc/03-cli.md#update). Here is the reason of "Invoke Composer".

Note: every project is plugged in a private repository (https://github.com/composer/satis and https://github.com/composer/packagist). So it's possible get projects from there by "require/require-dev" entry in a composer.json file or "create-project" command (http://getcomposer.org/doc/03-cli.md#create-project).

For deploy-job, users must pick up a version to deploy. We need use "List Composer Package Versions" (http://getcomposer.org/doc/03-cli.md#show) to send version value as argument to create-project command using "Invoke Composer" before send it to the servers.

In short I am willing to run Composer *before* Ant/Phing scripts in build-job, and *before* send files to the servers in deploy-job.

If possible, I would like to know more about your migration project and how you are planning this.

>Do you think that suggestions is useful for community?

Definitely. I can help writing the plug-in, and can test it while I migrate my projects.


It's my first contact with Jenkins CI Community. I don't know how plugins life cycle works neither how mature the idea must be to start coding. We have a laboratory sector to try some contexts as well. I have some Java skilled guys in my DevOps team, we can help when possible.

Ready to go! Just waiting your signal to start.

Some links to take a look:
https://github.com/composer/composer/issues/1490

Bruno P. Kinoshita

unread,
Apr 25, 2013, 3:01:17 PM4/25/13
to jenkin...@googlegroups.com
Hello, 

>Before talk about Composer, some words about build.xml. Actually we are moving from Phing to Ant for some reasons:
>    - Ant makes projects more pluggable for IDEs, CI Servers... (less shell)
>    - Ant is recommended in http://jenkins-php.org
>    - Ant is faster than Phing
>    - Ant parallel task is stable, Phing task is not
>What do you think about this?

ATM I'm using Ant as it's easier for me - I use Java and Maven or Ivy+Ant for most of my projects.

I only thought about Phing because I found its Eclipse plugin in the same update site of Composer plug-in [1].

> If possible, I would like to know more about your migration project and how you are planning this.

My current project is a website that uses Continuous Integration + Continuous Delivery with 
Ant + Rsync. We're adding applications (mobile apps, facebook, etc) and we'll need 
to add a few dependencies to this project. 

So far, the way we did this was by unzipping the PHP libraries to the CI application/libraries 
folder. What is not the more elegant solution, but works. Now we are working to create a 
REST API and add these libraries with Composer. 

One alternative is migrating from CI to FuelPHP, so we could drop TankAuth authentication 
library in favor of FuelPHP's bundled auth library, and use REST controllers provided 
by FuelPHP (no library needed for this too). 

One thing that I would like to see in this plug-in, is looking at my job and 
being able to spot all the dependencies (name/version) used in Composer.

> It's my first contact with Jenkins CI Community. I don't know how plugins 
> life cycle works neither how mature the idea must be to start coding. We 
> have a laboratory sector to try some contexts as well. I have some Java 
> skilled guys in my DevOps team, we can help when possible.
>
> Ready to go! Just waiting your signal to start.

I believe there is no plug-in for this, and a lot of PHP users would like to use it. 
If you create a GitHub repository to work on this plug-in, you can send me the link 
and I'll take a look to see if I can help you guys.

Once the code is stable enough, we can ask here to fork the repository, create the
Wiki page + JIRA component for this new plug-in and prepare for the initial release. 

How does that sound to you?

Cheers, 

--- Em qui, 25/4/13, Renan de Lima <renan...@gmail.com> escreveu:

De: Renan de Lima <renan...@gmail.com>
Assunto: Re: What about a Composer plugin?
Para: jenkin...@googlegroups.com
Data: Quinta-feira, 25 de Abril de 2013, 9:03

Hi there,

I'm migrating a few projects from CodeIgniter (+bunch of libraries and sparks) to FuelPHP and to CodeIgniter+Composer, and am having to learn Composer.

> Is there any activity to integrate Composer and Jenkins?

Not that I'm aware of.

> Is there a better way to use Composer through Jenkins?

In my todo-list, right next to Composer is Phing. I haven't had time to read all the docs about Composer, but I want to understand if you have to run composer or if you can call it in phing scripts. What do you think?


Before talk about Composer, some words about build.xml. Actually we are moving from Phing to Ant for some reasons:
    - Ant makes projects more pluggable for IDEs, CI Servers... (less shell)
    - Ant is recommended in http://jenkins-php.org
    - Ant is faster than Phing
    - Ant parallel task is stable, Phing task is not
What do you think about this?

Getting back to Composer plugin... We are planning two kinds of job for every project:
    - build-job: for every project development line (trunk, branches...). This job executes quality checks as described in http://jenkins-php.org It also generates tags;
    - deploy-job: one per project, it sends files of a package version to the web servers.

For build-job, Composer is necessary to get dependencies before to run Ant/Phing build.xml (http://getcomposer.org/doc/ 03-cli.md#install and http://getcomposer.org/doc/03- cli.md#update). Here is the reason of "Invoke Composer".

Note: every project is plugged in a private repository (https://github.com/composer/ satis and https://github.com/composer/ packagist). So it's possible get projects from there by "require/require-dev" entry in a composer.json file or "create-project" command (http://getcomposer.org/doc/ 03-cli.md#create-project).

For deploy-job, users must pick up a version to deploy. We need use "List Composer Package Versions" (http://getcomposer.org/doc/ 03-cli.md#show) to send version value as argument to create-project command using "Invoke Composer" before send it to the servers.

Renan de Lima

unread,
Apr 26, 2013, 8:08:04 PM4/26/13
to jenkin...@googlegroups.com
Bruno,

I've created https://github.com/renanbr/composer-plugin repository. You are collaborator =)
Next week some people will start coding, they also have access to manage pull request.

I'll ping composer-dev group about what we are doing.

Just a note, I will be back to the office in July. That's all I can do for now. I will give more effective feedbacks when I come back, anyway... it's done, we have a mission.

thanks

--
Renan de Lima Barbosa


--
You received this message because you are subscribed to a topic in the Google Groups "Jenkins Developers" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jenkinsci-dev/_GMqfk9U-ss/unsubscribe?hl=en.
To unsubscribe from this group and all its topics, send an email to jenkinsci-de...@googlegroups.com.

Bruno P. Kinoshita

unread,
Apr 26, 2013, 9:38:33 PM4/26/13
to jenkin...@googlegroups.com
Hi Renan, 

I've already added Composer to my CodeIgniter project and am now getting my feet wet with packagist, composer, eclipse+composer, etc.

I'll keep an eye on the repository and will create a branch to send some code too.

Just a note, I will be back to the office in July. That's all I can do for now. I will give more effective feedbacks when I come back, anyway... it's done, we have a mission.

Enjoy your vacation. As we say in Brazil: missão dada é missão cumprida :) (mission given is mission accomplished).
--- Em sex, 26/4/13, Renan de Lima <renan...@gmail.com> escreveu:
Reply all
Reply to author
Forward
0 new messages