javisar / ONI-Modloader-Mods

Oxygen not Included Mods for ONI-Modloader
MIT License
69 stars 68 forks source link

Should we set up some CI tool for the repository? #99

Open den-kozlov opened 5 years ago

den-kozlov commented 5 years ago

@javisar, do you think it is worth to setup some CI tool to automate releases? It allows us to get rid of binaries on VCS, which causes conflicts on every merge. Build can be triggered on every accepted pull request so binaries will alway be up-to-date.

I can invest some of my time into this.

javisar commented 5 years ago

It could be worth. I would be great in fact, that annoying dlls... Tbh, I haven't used CI with git. Go ahead if you want.

Flow86 commented 5 years ago

you could use appveyor for that, you could provide a (private) nuget package with the oni assembly dll file (I think that file is needed for compilation?) inside appveyor, let it automatically compile and publish the mod files via the github release api (much better place than a git repository to place binaries btw)

( see https://www.appveyor.com/docs/deployment/github/ )

den-kozlov commented 5 years ago

I've managed to set up the travis-ci build in my repo (https://github.com/Blindfold-Games/ONI-Blind-MODS). Binaries are provided via releases. I pull ONI dll's from my google drive, but private nuget package is a much better solution. I have no idea why I didn't tried that, but I definitely will. Thank you for the hint @Flow86. I've tried Appveyor at first, but couldn't find the way to turn off Post-Build events in the settings. I guess one should provide a custom build script to do that. And that's where they lost me :) @javisar I can share my Travis-CI config (or you can get .travis.yml from my repo) so you can deploy it. The most complex step in my build pipeline is refreshing ONI libs on my google drive. If that could be simplified by means of nuget packages it would be great.

Flow86 commented 5 years ago

ah if you can build oni mods with mono too, then travis is much better than appveyor.

den-kozlov commented 5 years ago

ah if you can build oni mods with mono too, then travis is much better than appveyor.

Well yeah, I guess so. The entire Unity framework is based on Mono after all.

javisar commented 5 years ago

@Blindfold I'll try your yml. Thanks for the help. This sould work nicely with ONIModloader repo, but I'm not sure how to make it work for this mods repo. I mean, if I understand correctly, every time I make a simple change to a mod, travis will generate a new release for all the mods, and this seems to me an overkill. From the top of my mind, a simple solution could be, include the Mods (with the dlls) folder into gitignore, and use travis to generate them when changed. Idk if this is possible.

den-kozlov commented 5 years ago

@javisar Yes Travis does automatic build on each commit and accepted pull-request of each branch, but it won't do release automatically (at least in my config). Github requires that each release should be tagged. You have to do this manually by tagging specific commit when you are ready to release your mod-pack into the wild. So Travis will only archive and release mods when it builds a tagged branch. So you still have full control on what and when your are releasing. Just tag, push and wait for confirmation release from Travis. Simple. =)

jerviscui commented 4 years ago

sure