Automatic builds of popular 3DS CFW/Tools

Discussion in '3DS - Flashcards & Custom Firmwares' started by GBHAKC75, Dec 30, 2016.

  1. GBHAKC75
    OP

    GBHAKC75 GBAtemp Fan

    Member
    397
    182
    Jan 26, 2008
    France
    Hi everyone.

    I've configured a build infrastructure for 3DS Tools and CFWs, using Jenkins.
    For every code change on these projects, they're automatically built and ready to be used.

    Download server : https://jenkins.hakujou.fr/

    PLEASE BE CAREFUL : THE BUILDS CAN BE DANGEROUS IF THERE'S A MISTAKE ON CODE
    ONLY USE THIS IF YOU KNOW THE RISKS

    Supported projects :
    Supported exploits :
    Removed :

    FAQ :

    "Why ? We already have nightly builds for those"
    While that's true, this is a bit different. Existing websites with nightlies are using bash scripts to perform the builds and add them to websites. There's nothing wrong with that, but when there's enterprise-grade tools to do precisely this kind of tasks (named CI : Continuous Integration), I don't really see the point of using a script which may break against a real CI tool. So I use Jenkins, a very popular open-source CI tool used even in enterprises.

    "I'd like <SomeHomebrew> to be added. Is it possible ?"
    Sure ! Just asks me, with Git link of the project.
    Please note I can't add Windows-only software (such as PKHeX) as they're using C# with Windows proprietary libs and therefore can't be built on Linux servers.
     
    Last edited by GBHAKC75, Sep 9, 2017


  2. gnmmarechal

    gnmmarechal Kirigiri > Naoto

    Member
    GBAtemp Patron
    gnmmarechal is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    4,666
    2,822
    Jul 13, 2014
    Portugal
    https://gs2012.xyz
    Nice stuff! But shouldn't you name Corbenik as Skeith? You were compiling it as such, correct? As for how I'm pulling the files...

    Well... It's simple, I currently just download the field from a URL set in a file in my server. I just need a static URL to Corbenik (Skeith, I guess).

    About compiling other stuff..... Well, users know, or should know, that nightlies aren't stable builds and can indeed contain bugs. So IMO, it shouldn't matter too much.
     
    Last edited by gnmmarechal, Dec 30, 2016
  3. Arubaro

    Arubaro Soulspace Guardian

    Member
    1,669
    470
    Sep 4, 2015
    I'm not a big fan of nightlies, but is a fact that this helps debugging apps until the next stable version is released, so I'm grateful
     
  4. GBHAKC75
    OP

    GBHAKC75 GBAtemp Fan

    Member
    397
    182
    Jan 26, 2008
    France
    Thanks. I asked myself the very same question, but as @chaoskagami said, he doesn't plan to do releases for now and Skeith is just the name for Corbenik nightlies. The way I see it it's still Corbenik. I can change it pretty easily if that's a problem anyway :)

    So you need an URL like "https://dl.hakujou.fr/Luma3DS/latest" ? I can do that with symlinks if needed, that's not a problem.

    I understand, but some people just don't understand that and want to try the latest software anyway. While it should be avoided, I still fear the fact that someone will try to install some new A9LH and brick his 3DS... I'll focus on less "risky" softwares for now (such as FBI) and see later for more risky ones :)

    It's pretty much the opinion that I have. Jenkins is really great because it provides console output for every builds so it's easy to see what breaks, which commit breaks it and why (which is the point of CI), that's my main reason to have done this project.
    I'd like to open Jenkins to everyone but it's connected to my AD setup and I don't really want to expose my users to everyone :/
     
  5. gnmmarechal

    gnmmarechal Kirigiri > Naoto

    Member
    GBAtemp Patron
    gnmmarechal is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    4,666
    2,822
    Jul 13, 2014
    Portugal
    https://gs2012.xyz
    Something like EasyRPG Player would be great, if you did something like:
    http://dl.hakujou.fr/Corbenik/latest-build.zip for the build
    and something like
    http://dl.hakujou.fr/Corbenik/latestver for the actual commit/version name, I suppose?
     
    GBHAKC75 likes this.
  6. GBHAKC75
    OP

    GBHAKC75 GBAtemp Fan

    Member
    397
    182
    Jan 26, 2008
    France
  7. gnmmarechal

    gnmmarechal Kirigiri > Naoto

    Member
    GBAtemp Patron
    gnmmarechal is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    4,666
    2,822
    Jul 13, 2014
    Portugal
    https://gs2012.xyz
    GBHAKC75 likes this.
  8. GBHAKC75
    OP

    GBHAKC75 GBAtemp Fan

    Member
    397
    182
    Jan 26, 2008
    France
    Okay, I finally exposed Jenkins, it's easier and I managed to separate my users.
    It's the exact same structure for me : https://jenkins.hakujou.fr

    The dev can also see console output this way, it might be useful to them.

    Have fun ! :)
     
    Last edited by GBHAKC75, Dec 30, 2016
    gnmmarechal and Arubaro like this.
  9. gnmmarechal

    gnmmarechal Kirigiri > Naoto

    Member
    GBAtemp Patron
    gnmmarechal is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    4,666
    2,822
    Jul 13, 2014
    Portugal
    https://gs2012.xyz
    Awesome, thanks! This will be implemented soon (this afternoon), and then, after getting someone to test it (as I didn't bring my 3DS with me and won't have it until the 3rd of January x.x), I'll add it to the stable updater.

    — Posts automatically merged - Please don't double post! —

    By the way, would it be possible to, instead of buildNumber, somehow get the commit?
     
    GBHAKC75 likes this.
  10. GBHAKC75
    OP

    GBHAKC75 GBAtemp Fan

    Member
    397
    182
    Jan 26, 2008
    France
    You could parse it from here : https://jenkins.hakujou.fr/job/3DS/job/Corbenik/6/git/

    But a "cleaner" way to handle this would be to use Jenkins API, like this : https://jenkins.hakujou.fr/job/3DS/job/Corbenik/lastBuild/api/xml?xpath=//lastBuiltRevision/SHA1
     
    Last edited by GBHAKC75, Dec 30, 2016
    gnmmarechal likes this.
  11. keyra

    keyra Spoderman self proclamed fan

    Member
    818
    210
    Dec 23, 2008
    France
    i must be stupid but how do i know if your luma is older than the one one alex's builds?
     
  12. gnmmarechal

    gnmmarechal Kirigiri > Naoto

    Member
    GBAtemp Patron
    gnmmarechal is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    4,666
    2,822
    Jul 13, 2014
    Portugal
    https://gs2012.xyz
    huh, it shouldn't be. It compiles every commit, so it may actually be more recent?
     
  13. GBHAKC75
    OP

    GBHAKC75 GBAtemp Fan

    Member
    397
    182
    Jan 26, 2008
    France
    You can compare against commit number. Look in GitHub which one is the latest and which site has it.
    But as said, it builds automatically (and very quickly) the project at any commit so the latest version should always be there.
     
    gnmmarechal likes this.
  14. keyra

    keyra Spoderman self proclamed fan

    Member
    818
    210
    Dec 23, 2008
    France
    hmmmz i see the commit version on alex but not on yours that"s why
     
  15. GBHAKC75
    OP

    GBHAKC75 GBAtemp Fan

    Member
    397
    182
    Jan 26, 2008
    France
  16. gnmmarechal

    gnmmarechal Kirigiri > Naoto

    Member
    GBAtemp Patron
    gnmmarechal is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    4,666
    2,822
    Jul 13, 2014
    Portugal
    https://gs2012.xyz
    Actually, I might just use your Luma3DS URLs in StarUpdater-UN. I'll update Corbenik CFW Updater: RE, and then I'll look into Luma.

    — Posts automatically merged - Please don't double post! —

    Did it go down?

    EDIT: nvm, my internet's crap.
     
  17. GBHAKC75
    OP

    GBHAKC75 GBAtemp Fan

    Member
    397
    182
    Jan 26, 2008
    France
    You scared me ! :blush:

    IMHO you really should considering using Jenkins API for those projects. It's waaaaaay cleaner than parsing project window.
     
  18. gnmmarechal

    gnmmarechal Kirigiri > Naoto

    Member
    GBAtemp Patron
    gnmmarechal is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    4,666
    2,822
    Jul 13, 2014
    Portugal
    https://gs2012.xyz
  19. GBHAKC75
    OP

    GBHAKC75 GBAtemp Fan

    Member
    397
    182
    Jan 26, 2008
    France
    No it doesn't, but I can zip some files through build process if needed.
    Is there a problem with that zip, though ? Looks fine to me.

    EDIT : Oh, the problem is the "out" folder in it ? I'll look into it.
     
  20. gnmmarechal

    gnmmarechal Kirigiri > Naoto

    Member
    GBAtemp Patron
    gnmmarechal is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    4,666
    2,822
    Jul 13, 2014
    Portugal
    https://gs2012.xyz
    Yep. The updater function to extract both skeith and corbenik is exactly the same, with only the skeith directory changing, so this zip having a different structure would require me to make another function for Skeith.
    The zip should have the same structure as Corbenik/Skeith, with everything directly inside it.