-
Notifications
You must be signed in to change notification settings - Fork 75
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
Repository version number? #539
Comments
I think we should bump it to I"m assuming that this version number is in the usual format:
|
PYPI needs something like |
I am going to use this issue to continue the discussion about our Release project since the PR's go away each time we try something. I must confess that I am having a problem being motivated on this project for some reason. I understand so little about how these tools work that reading the docs don't make since. Every time I start a search on deployment strategies I end up reading about elaborate processes with dev branches and release branches with pre-releases and my eyes glaze over ... and I go work on something else. Anyway, I want to keep trying to finish this. To summarize the current approach for Release is to
The problem with this is that the script on travis times out before the other CI's finish. The assumption is that we need all of the artifacts present before we can create a release. |
Today I stumbled on "Github Releases". I am sure I saw it before but I thought this was a generic term related to the process of downloading the releases that were created by a CI. But this is a different approach where we initiate with Github rather than by setting a tag. There is a "Draft a new Release" button in the Github releases page https://github.com/htm-community/htm.core/releases Not sure I totally understand this yet but it appears that if you click that button (and you have write permissions for the repository) it will provide you with a page to create a release.
I am just starting to think about what changes I might need to make to the CI scripts to make this work. @breznak have you had any experiance with this? |
all points correct
yes, it's a "special" term, for releases done on GH.
yes, yes, but this one no. The "manual release" (let's call it that), does the above 2 steps as you say, but then does nothing (the release is empty, resp with sources zip only). There's no logic telling the CIs to upload anything (the CI are 3rd party to GH anyway). What actually happens is the CI will generate artifacts on the new tag, and Travis would time-out before others finish. In other words, the manual GH release is equivalent to command line:
off the bat, possible workarounds to the current problem with Travis timeout:
What do you think, @dkeeney ? |
I went to "GitHub Releases" and Clicked the "Draft a new Release" button and created release v2.0.8 to see what happens. Waited a while... then checked each CI.
So, the fetch-artifacts.sh is not working for AppVeyor and CircleCI just did not even start. No binary artifacts ended up in GitHub Releases. Nothing ended up in PYPI test (was not expecting anything). Next step is:
|
But giving the script longer to run is not going to help because the API request to download from AppVeyor did not work even though the artifact was generated and waiting. |
that's a good 1st step, so the AppV API is not working? |
for CircleCI, tagged master builds are not ran by default. So we need a special job to run tagged master builds. Probably does not need the debug build to run in this case.
Artifacts can be uploaded independently from each CI, (at least the GitHub API supports it).
Working on updates to the CI configuration files. |
Current status: All three CI's are kicking off builds triggered on a merge of a PR. It does not hurt anything I guess but probably not necessary. We don't need the artifacts until after the tag of the master which should start yet another build. The merge build's for Travis and Appveyor were successful and did not perform the deployment. However CircleCI did try to deploy so needed to add the filter. |
Current status: Tagged build on master
CircleCI:
AppVeyor:
===============
|
Run number 6.
This implies that if there is a schedule on a branch then it cannot be triggered by a commit (and that may include commits due to being tagged). So I want to try removing the nightly build for ARM64 and see if that allows the release build to run. If this works then maybe we can consider putting the ARM64 build on a different branch or something. But I don't think this is the only problem with my configuration. In re-reading the section on building with tags, it appears that If a job is marked with a filter for a tag then its 'requires' jobs must also allow the same tags. So if I am reading this right I cannot use the 'osx-build-release' job for both tagged and un-tagged build. |
@dkeeney the VERSION seems to be broken. What I get running cmake:
|
yep, I broke it. |
I built a script to perform the PYPI upload and ran it locally here on my machine. I got this error:
Google on his gives: pypi/legacy#120 Here is a work-around |
That may be why the travis-ci builds never deployed to PYPI. |
oh, that sucks. If I understand it, for deployment we'd have to use Docker with manylinux to build? |
@breznak when you return, will you do two things for me that require admin privileges:
|
I will continue to work on this today but I will not be available during this weekend. (my kids are coming to visit). |
Ok, back to addressing the deployment issues... With that last push, #652, I added our own script for uploading artifacts using the GitHub and PYPI APIs. However, these will not actually work because the Login Tokens need to be created and set in the environment for each CI and that needs to be performed by someone with admin privs. Once we have the Tokens in place I should be able to get the GitHub Releases working. The PYPI deployment should work with OSx and Windows. But we still has the issue of what to do about Linux machines not being binary compatible unless we build with an environment older or as old as any user might have. So, until the Tokens are ready, I will go work on the EncoderRegion plugin. |
I'll do the tokens in a day or 2, sorry for delays. |
ok, this sucks. So that's why Numenta has the "manylinux" docker images for deployment. I'd like to suggest something similar as with the docker ARM, keep normal (linux) PRs on modern compilers,c++,... and on release do an extra docker build on an old compiler. Q: (std)libC is the component that has to be same or older for the PYPI to work for our linux users? So we need a docker image with recently old distro? What if we bundeled static lib c, would it then work with any (=not the same or older requirement)? |
My feeling is that we should do a "manylinux" for whatever we happen to be building on travis and everyone else for which that does not work will need to build from sources. If you really do want to build one that works for everyone, there is a base Docker image that PYPI maintains for that purpose. Don't know if that supports the newer compilers. |
I was wondering if we should convert to using Docker for all builds. |
this could be interesting, iff the image is recent enough for our c++11/17 compilers. I'd like to keep the CI as close to a modern, real platform, and have the docker only for the releases.
likely no for performance reasons.. |
We now have automated GH & PyPI releases Closing the PyPI related issues with #819 |
Currently our version is set to
1.0.8.community0
in the file VERSION.PYPI does not like non-numeric version numbers so this should be changed ... but what should it be? Do we need to retain an association to the version number in numenta's nupic.core?
Is it time to change it to
1.0.0
? Or maybe even2.0.0
The text was updated successfully, but these errors were encountered: