-
Notifications
You must be signed in to change notification settings - Fork 173
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
Build Windows release mode binaries, keep artifacts on any tag build #1237
base: master
Are you sure you want to change the base?
Conversation
@mauser, have I misunderstood the use model for the 'build-with-artifacts' branch name as the condition for keeping artifacts? Is there an advantage to using the branch name that I've missed? Cheers :) |
Maybe ;-) The idea was to be able to produce binaries whenever it is suitable, without the need for an "official" release. For example after a bug has been fixed (and the user who reported the issue is using Windows) or a new feature is available in the master branch.. I had the impression that creating tags just for triggering the CI process in that case is not perfect. |
Hmm, so the use model would be merge to that branch, or reset the branch to whatever you want to artifact? Tagging seemed preferable to me since they are lightweight and can be moved arbitrarily between revisions, and the resultant artifacts and CI jobs have references to shas with clean and 'obvious' history. Maybe there are disadvantages i didn't think of. But also I probably shouldn't suggest changing a mechanism if you're already using it and it works -- perhaps adding an additional one instead! :D But the main point of this PR was: Appveyor Windows builds all seem to work now :) |
While implementing the branch trigger, i also thought about using a tag like 1.1-CI and move that tag when necessary. In addition, this was basically what i started with when experimenting with appveyor on my own fork of the repo. I'm not sure if moving tags around is a nice thing to do on a public repo, since you have to force push to move a tag and people who fetch the tags (which is not the default behavior of git) run into warnings and might have to delete their older, local tag. So i disregarded that solution and went on with the branch. I'm not sure about the git details here, but if i remember correctly, then those problems happen if the user uses Another thing which came to my mind.. Should we enable the win32 build only for the artifacts? This would speed up the usual pull requests builds a bit. I would not expect that we find more or other errors in our specific codebase by just compiling the code also for a 32bit system. |
Hmm, looks like my previous reply here went missing or failed to post.
After some thought, agreed, moving tags is probably less than ideal. Perhaps builds we want to keep artifacts for are rare enough that adding a new tag for each (release candidates and actual releases) is viable? Old tags can be removed from the repo if no longer needed. Another potential scheme is to designate a 'with artifacts' branch for each development branch that we may want to keep artifacts for. This way we could always do a clean fast-forward merge to that branch from the corresponding development branch? |
I suppose so, i think having tags for all "official release" (everything we write an announcement for..) will be sensible. Even if we release more often, this should not become a big problem..
Agreed, that sounds like a good solution.I suppose that we rarely use more then two at the time (master and develop), since there might be no need to those releases with artifacts on the support branches (like releases/1.0). There could be also another solution for the "non-tagged" builds. It seems that you can also trigger appveyor builds via a rest API, so maybe we could set a special parameter which we can use as a boolean condition to keep artifacts (in addition to tags). I haven't looked into this details yet, but i'm wondering why i haven't thought of that before...i'm doing sth. similiar at work with Azure DevOps :-/ |
Having tested the 32-bit release mode Windows builds, it seems that there's no longer an issue with Appveyor's 32-bit release builds immediately crashing. So enable release-mode builds for both 32-bit and 64-bit Windows so these can be used as release packages.
Also, changes the condition of whether or not to keep build artifacts from the specific branch name, to whether or not the build is started by pushing a tag. Since this only generally happens with releases or release candidates, that seems a good compromise to avoid excessive branch maintenance and chopping and changing.