I am developing software for an ATtiny826 microcontroller in the Arduino IDE. To do this, I have to use a core for the 826 that is only supported up to Arduino IDE v1.8.13. For these reasons I've found that it is easier to have this project in a portable version of the Arduino IDE so that I can maintain an isolated working environment from other Arduino projects.
What I would love to do is to be able to have the entire portable Arduino IDE install, which contains the sketch I'm using in the ATtiny826 as well as the core and the libraries I'm using, as a github repository so I can have stable positions to roll the entire directory back to, if for instance, I or someone else I'm working with tests out a new version of the core, or adds a library that somehow negatively impacts the performance of the actual software, or our ability to upload it to the microcontroller. Almost all of the commits we regularly push to the repo would be the main .ino file, but if we experiment with updating the core, libraries, or even the IDE, I would like to be able to track these changes as well and potentially setup new stable versions of the entire install with these updated changes. Anyone else that may join the project in the future could easily grab this directory and start working on it immediately on their computer without worrying about having proper versions, libraries, etc. installed.
I know enough to know that making the entire portable install a github repository is very likely NOT the correct solution, but not enough to know what is. I have started looking into "Releases" on github and potentially only having the .ino file directory tracked through github and then attaching the Arduino IDE .exe and other binary files to the releases, but what I would prefer is to have the entire Arduino IDE directory (along with our preferences, .ino files, etc.) and structure preserved as well.
So, my questions are:
i think you need docker. with docker you can put all the libraries, dependencies and other things needed to run your software into a container so you can run it efficiently in different environments in isolation. you can keep track of docker file which is used to build a docker image to achieve your goal.