Hacking Automatic builds of popular 3DS CFW/Tools

GBHAKC75

Well-Known Member
OP
Member
Joined
Jan 26, 2008
Messages
406
Trophies
0
XP
563
Country
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,

gnmmarechal

Well-Known Member
Member
GBAtemp Patron
Joined
Jul 13, 2014
Messages
6,036
Trophies
2
Age
25
Location
https://gs2012.xyz
Website
gs2012.xyz
XP
5,957
Country
Portugal
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,

Arubaro

Soulspace Guardian
Member
Joined
Sep 4, 2015
Messages
1,669
Trophies
0
Age
32
XP
586
Country
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
 

GBHAKC75

Well-Known Member
OP
Member
Joined
Jan 26, 2008
Messages
406
Trophies
0
XP
563
Country
France
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.

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 :)

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

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 :/
 

gnmmarechal

Well-Known Member
Member
GBAtemp Patron
Joined
Jul 13, 2014
Messages
6,036
Trophies
2
Age
25
Location
https://gs2012.xyz
Website
gs2012.xyz
XP
5,957
Country
Portugal
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 :/
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?
 
  • Like
Reactions: GBHAKC75

GBHAKC75

Well-Known Member
OP
Member
Joined
Jan 26, 2008
Messages
406
Trophies
0
XP
563
Country
France

gnmmarechal

Well-Known Member
Member
GBAtemp Patron
Joined
Jul 13, 2014
Messages
6,036
Trophies
2
Age
25
Location
https://gs2012.xyz
Website
gs2012.xyz
XP
5,957
Country
Portugal
  • Like
Reactions: GBHAKC75

gnmmarechal

Well-Known Member
Member
GBAtemp Patron
Joined
Jul 13, 2014
Messages
6,036
Trophies
2
Age
25
Location
https://gs2012.xyz
Website
gs2012.xyz
XP
5,957
Country
Portugal
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 ! :)
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.

--------------------- MERGED ---------------------------

By the way, would it be possible to, instead of buildNumber, somehow get the commit?
 
  • Like
Reactions: GBHAKC75

GBHAKC75

Well-Known Member
OP
Member
Joined
Jan 26, 2008
Messages
406
Trophies
0
XP
563
Country
France
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.

--------------------- MERGED ---------------------------

By the way, would it be possible to, instead of buildNumber, somehow get the commit?

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,
  • Like
Reactions: gnmmarechal

keyra

Spoderman self proclamed fan
Member
Joined
Dec 23, 2008
Messages
820
Trophies
0
XP
635
Country
France
i must be stupid but how do i know if your luma is older than the one one alex's builds?
 

GBHAKC75

Well-Known Member
OP
Member
Joined
Jan 26, 2008
Messages
406
Trophies
0
XP
563
Country
France
i must be stupid but how do i know if your luma is older than the one one alex's builds?

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.
 
  • Like
Reactions: gnmmarechal

gnmmarechal

Well-Known Member
Member
GBAtemp Patron
Joined
Jul 13, 2014
Messages
6,036
Trophies
2
Age
25
Location
https://gs2012.xyz
Website
gs2012.xyz
XP
5,957
Country
Portugal

GBHAKC75

Well-Known Member
OP
Member
Joined
Jan 26, 2008
Messages
406
Trophies
0
XP
563
Country
France
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.

--------------------- MERGED ---------------------------


Did it go down?

EDIT: nvm, my internet's crap.

You scared me ! :blush:

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

gnmmarechal

Well-Known Member
Member
GBAtemp Patron
Joined
Jul 13, 2014
Messages
6,036
Trophies
2
Age
25
Location
https://gs2012.xyz
Website
gs2012.xyz
XP
5,957
Country
Portugal

GBHAKC75

Well-Known Member
OP
Member
Joined
Jan 26, 2008
Messages
406
Trophies
0
XP
563
Country
France

gnmmarechal

Well-Known Member
Member
GBAtemp Patron
Joined
Jul 13, 2014
Messages
6,036
Trophies
2
Age
25
Location
https://gs2012.xyz
Website
gs2012.xyz
XP
5,957
Country
Portugal
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.
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.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Veho @ Veho: Mkay.