Hi all. 

This morning I released four versions of Django. Three of which, for 2.1, 
2.0 and 1.11. (i.e. all the actually supported versions) were broken. 
In the package were additional files from `master`/2.2 which shouldn't have 
been there. 

This afternoon I have released follow-ups to correct this issue. 

First of all, sorry about that, and for any inconvenience caused. 


Then, these are process issues so, how can we do better next time? 

I'm not 100% sure what occurred. 

* The history in Git is correct. 
* I must have had the right commits checked out, because the package 
metadata is correct. (Filenames, version numbers and so on.) 

My best guess is that I've failed to `git clean` correctly before building 
each release. 
I'm not certain here because switching between branches doesn't leave the 
repos in an unclean state, and I'm pretty sure it was clean, but this seems 
the most likely error.


Q: is there a nice git command to "assert I'm at exactly this tag"?  


Steps I've taken: 

* Moved the `git clean` step into the helper script used to build the 
packages. No chance of then missing it. 
* Added a `diff`-step after building just to make sure what's in the 
`django` module matches the checkout. 
 
The second of these, whilst just a visual check, would have worked with 
what ended up in the package vs what was in my working tree when I checked 
later, but I'm not sure it would have caught the issue when the package was 
created (because presumably my working tree was wrong at that point). 

A similar issue affects the checksums, which check that nothing changed 
since it was packaged, but not that the right things were packaged...
(Similarly, pip install worked without error.) 

On the new 1.11 package, I created a virtualenv with Python 2 and ran the 
test suite. This worked so it should be good. But it would be good to 
automate this. 
(I'll look into it.) We don't ship the tests in the wheel, so we have to 
use the src-dist for this. (We could then diff the two django modules to 
make sure they were the same.) 

On the other packages I visually looked for incorrect files, but, beyond 
specific migrations (etc) that were known bad from the previous release, 
this doesn't generalise. 

"zaytsev" on IRC suggested running `makemigrations --check`, so having a 
test project to install against might also be worth it. 
(I'd guess running the test suite would be sufficient...) 


Any other thoughts very welcome. 


Kind Regards,

Carlton

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers  (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-developers+unsubscr...@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
Visit this group at https://groups.google.com/group/django-developers.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/90c531fc-3d5b-4d9e-a55f-b88f2e04bb54%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to