-
-
Notifications
You must be signed in to change notification settings - Fork 800
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PlatformIO as Continuous Integration tool for embedded projects #108
Comments
Sent from Outlookhttp://taps.io/outlookmobile On Tue, Mar 3, 2015 at 2:51 PM -0800, "Ivan Kravets" <notifications@github.commailto:notifications@github.com> wrote: Aims PlatformIO is #1#1 tool for "Cloud Compiling" now. The one missing feature is to allow each developer/script to use PlatformIO in "Continuous Integration" manner. PlatformIO can build embedded projects for the different development platforms (Atmel AVR, Atmel SAM, TI MSP430, TI TIVA, Teensy, (soon Freescale FRDM, NXP LPC, Nordic RF51) and etc). Requirements The main aim is to promote PlatformIO as tool which is the best for "Continuous Integration". It should allow to specify src files, lib directories and boards which PlatformIO should use for running. Implementation It should be implemented via the new command platformio ci with the next options:
NOTE Using For example, let's use this project https://github.com/felis/USB_Host_Shield_2.0. We want to test a few examples with the different boards/platforms: clone repo and change directory to itplatformio ci --src="examples/Bluetooth/PS3SPP/PS3SPP.ino" --lib="." --board=uno --board=teensy31 --board=due Travis CI Yep :) PlatformIO could be the best friend of @travis-cihttps://github.com/travis-ci. Example of .travis.yml: language: python install: script: ... and etcWe have already implemented a lot of these things... See how does testing work with PlatformIO Exampleshttps://github.com/ivankravets/platformio/tree/develop/examples via Travis CI: Friends @valeroshttps://github.com/valeros, @aphelpshttps://github.com/aphelps, @robertinanthttps://github.com/robertinant, @PaulStoffregenhttps://github.com/PaulStoffregen, @aethanielhttps://github.com/aethaniel, @xxxajkhttps://github.com/xxxajk, @Lauszushttps://github.com/Lauszus, @pelikhanhttps://github.com/pelikhan, @ncolomerhttps://github.com/ncolomer, @bettabaconhttps://github.com/bettabacon, @eiginnhttps://github.com/eiginn, @Informatichttps://github.com/Informatic, @mac7https://github.com/mac7, @manashmndl<https://gi What do you think about it? Reply to this email directly or view it on GitHubhttps://github.com//issues/108. |
What's the advantage of this new command to just using 'platformio run' with appropriate options? |
Dear @pelikhan ,
There are a few options to disable prompts:
Which others systems you could propose?
@travis-ci doesn't allow to cache "something" for free account. This feature is available only for the premium accounts. |
Dear @aphelps,
Therefore, developers of libraries can add the only single If you like to keep your project in PlatformIO compatible structure, then you can use "platformio run" command for Continuous Integration systems. |
Jenkins is another one. Sent from Outlookhttp://taps.io/outlookmobile On Thu, Mar 5, 2015 at 1:32 PM -0800, "Ivan Kravets" <notifications@github.commailto:notifications@github.com> wrote: Dear @pelikhanhttps://github.com/pelikhan , What about those prompts? They are complete show stopper right now. There are a few options to disable prompts:
Travis support sounds great however it should limited to it. There are many other build systems. Which others systems you could propose? Travis supports a feature to cache certain folders, like npm-modules. You should update your example: installing a complete platformio drop on every build might quickly turn out costly for you. @travis-cihttps://github.com/travis-ci doesn't allow to cache "something" for free account. This feature is available only for the premium accounts. Reply to this email directly or view it on GitHubhttps://github.com//issues/108#issuecomment-77456433. |
Yeah, Jenkins is what I typically use for more serious projects. Also, thanks for the clarification on what all 'platformio ci' will be doing, that makes sense. |
Aims
PlatformIO is #1 tool for "Cloud Compiling" now. The one missing feature is to allow each developer/script to use PlatformIO in "Continuous Integration" manner. PlatformIO can build embedded projects for the different development platforms (Atmel AVR, Atmel SAM, TI MSP430, TI TIVA, Teensy, (soon Freescale FRDM, NXP LPC, Nordic RF51), frameworks (Arduino, mbed, libopencm3), and etc).
Requirements
The main aim is to promote PlatformIO as tool which is the best for "Continuous Integration". It should allow to specify
src
files,lib
directories andboard
s which PlatformIO should use for running.Implementation
It should be implemented via the new command
platformio ci [OPTIONS] SRC
where:SRC
is the list with source files/dirs.They should be copied tosrc
directory in new PlatformIO based project.Options:
-l, --lib
the list with source code of libraries which should be copied tolib
directory of PlatformIO project.-b, --board
the list with boards. All tests should be passed over them.NOTE
src
,--lib
and--board
can be MULTIPLE. GLOB syntax should by allowed.Using
For example, let's use this project https://github.com/felis/USB_Host_Shield_2.0. We want to test
PS3SPP.ino
example with the different boards/platforms:Travis CI
Yep :) PlatformIO could be the best friend of @travis-ci. Example of
.travis.yml
:We have already implemented a lot of these things... See how does testing work with PlatformIO Examples via Travis CI:
https://travis-ci.org/ivankravets/platformio/jobs/52805475
Friends @valeros, @aphelps, @robertinant, @PaulStoffregen, @aethaniel, @xxxajk, @Lauszus, @pelikhan, @ncolomer, @bettabacon, @eiginn, @Informatic, @mac7, @manashmndl, @MrCustomizer, @franciscoruiz, @elyulka
What do you think about it?
The text was updated successfully, but these errors were encountered: