{"title":"How to release Django","version":"5.2","locale":"ga","docname":"internals/howto-release-django","url":"/ga/5.2/internals/howto-release-django/","canonical":"https://djangodocs.dev/ga/5.2/internals/howto-release-django/","summary":"Míníonn an doiciméad seo conas Django a scaoiltear. ** Coinnigh na treoracha seo cothrom le dáta má dhéanann tú athruithe! ** Is é an pointe anseo a bheith…","html":"<h1>How to release Django<a class=\"heading-anchor\" href=\"#how-to-release-django\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Míníonn an doiciméad seo conas Django a scaoiltear.</p>\n<p>** Coinnigh na treoracha seo cothrom le dáta má dhéanann tú athruithe! ** Is é an pointe anseo a bheith tuairisciúil, gan oiriúnaitheach, mar sin bíodh leisce ort athruithe a shruthlíniú nó a dhéanamh ar shlí eile, ach**nuashonrú an doiciméad seo dá réir sin! **</p>\n<section id=\"overview\">\n<h2>Forbhreathnú<a class=\"heading-anchor\" href=\"#overview\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Tá trí chineál eisiúintí ann a d'fhéadfadh go mbeadh ort a dhéanamh:</p>\n<ul class=\"simple\">\n<li><p>Scaoiltí slándála: leochaileacht a nochtadh agus a shocrú De ghnáth beidh dhá nó trí eisiúint chomhuaineach i gceist leis seo - m.sh. 3.2.x, 4.0.x, agus, ag brath ar an uainiú, b'fhéidir 4.1.x.</p></li>\n<li><p>Eisiúintí leagan rialta: scaoileadh deiridh (m.sh. 4.1) nó nuashonrú bugfix (m.sh. 4.1.1).</p></li>\n<li><p>Réamh-eisiúintí: m.sh. 4.2 alfa, béite, nó rc.</p></li>\n</ul>\n<p>Is é an leagan gairid de na céimeanna atá i gceist ná:</p>\n<ol class=\"arabic simple\">\n<li><p>Más scaoileadh slándála é seo, déan an liosta dáilte slándála réamh-fógra seachtain roimh an eisiúint iarbhír.</p></li>\n<li><p>Cruthléigh na nótaí scaoilte, ag lorg earráidí eagraíochta agus scríbhneoireachta. Blagphost agus fógra ríomhphoist a dhréachtú.</p></li>\n<li><p>Update version numbers and create the release artifacts.</p></li>\n<li><p>Create the new <code class=\"docutils literal notranslate\"><span class=\"pre\">Release</span></code> in the admin on <code class=\"docutils literal notranslate\"><span class=\"pre\">djangoproject.com</span></code>.</p>\n<ol class=\"arabic simple\">\n<li><p>Set the proper date but ensure the flag <code class=\"docutils literal notranslate\"><span class=\"pre\">is_active</span></code> is disabled.</p></li>\n<li><p>Upload the artifacts (tarball, wheel, and checksums).</p></li>\n</ol>\n</li>\n<li><p>Fíoraigh sínithe pacáiste/na pacáistí, seiceáil an féidir iad a shuiteáil, agus cinntigh íosta feidhmiúlacht.</p></li>\n<li><p>Uaslódáil an leagan/na leaganacha nua chuig PyPi.</p></li>\n<li><p>Enable the <code class=\"docutils literal notranslate\"><span class=\"pre\">is_active</span></code> flag for each release in the admin on\n<code class=\"docutils literal notranslate\"><span class=\"pre\">djangoproject.com</span></code>.</p></li>\n<li><p>Postáil iontráil an bhlag agus seol amach na fógraí ríomhphoist.</p></li>\n<li><p>Update version numbers post-release in stable branch(es).</p></li>\n<li><p>Add stub release notes for the next patch release in <code class=\"docutils literal notranslate\"><span class=\"pre\">main</span></code> and backport.</p></li>\n</ol>\n<p>Tá go leor sonraí ann, mar sin léigh ar aghaidh le do thoil.</p>\n</section>\n<section id=\"prerequisites\">\n<h2>Riachtanais<a class=\"heading-anchor\" href=\"#prerequisites\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Beidh cúpla rud ag teastáil uait sula dtosaíonn tú. Más é seo do chéad eisiúint, beidh ort comhordú a dhéanamh le scaoilteoir eile chun na rudaí seo go léir a líneáil suas, agus scríobh chuig liosta seoltaí Ops ag iarraidh an rochtain agus na ceadanna riachtanacha.</p>\n<ul>\n<li><p>Timpeallacht Unix leis na huirlisí seo suiteáilte (in ord aibítre):</p>\n<ul class=\"simple\">\n<li><p>bash</p></li>\n<li><p>git</p></li>\n<li><p>GPG</p></li>\n<li><p>déanamh</p></li>\n<li><p>fear</p></li>\n<li><p>uirlisí hashing (de ghnáth <code class=\"docutils literal notranslate\"><span class=\"pre\">md5sum</span> <span class=\"pre\">``,</span> <span class=\"pre\">`sha1sum</span></code>, agus <code class=\"docutils literal notranslate\"><span class=\"pre\">sha256sum</span></code> ar Linux, nó <code class=\"docutils literal notranslate\"><span class=\"pre\">md5</span></code> agus shasum` ar macOS)</p></li>\n<li><p>python</p></li>\n</ul>\n</li>\n<li><p>Péire eochair GPG. Cinntigh go bhfuil an chuid príobháideach den eochair seo stóráilte go daingean. Ní mór an chuid poiblí a uaslódáil chuig do chuntas GitHub, agus chuig freastalaí Jenkins a reáchtáil an post “scaoileadh deimhnithe”.</p>\n<aside class=\"admonition-more-than-one-gpg-key admonition\">\n<p class=\"admonition-title\">Níos mó ná eochair GPG amháin</p>\n<p>Mura bhfuil an eochair is mian leat a úsáid d'eochair shínithe réamhshocraithe, beidh ort -u you&#64;example.com ``a chur le gach ordú sínithe GPG a thaispeántar thíos, áit ar` <a class=\"reference external\" href=\"mailto:you&#37;&#52;&#48;example&#46;com\">you<span>&#64;</span>example<span>&#46;</span>com</a> <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>an seoladh ríomhphoist a bhaineann leis an eochair is mian leat a úsáid.</p>\n</aside>\n</li>\n<li><p>A clean Python virtual environment (Python 3.9+) to build artifacts, with\nthese required Python packages installed:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>python<span class=\"w\"> </span>-m<span class=\"w\"> </span>pip<span class=\"w\"> </span>install<span class=\"w\"> </span>build<span class=\"w\"> </span>twine\n</code></pre></div>\n</li>\n<li><p>&lt; <a class=\"reference external\" href=\"https://pypi.org/help/#yanked\">https://pypi.org/help/#yanked</a>&gt;Rochtain ar thionscadal <a href=\"#id26\"><span class=\"problematic\" id=\"id27\">`Django ar Pypi`_</span></a> chun dénártha &lt; <a class=\"reference external\" href=\"https://pypi.org/project/Django/\">https://pypi.org/project/Django/</a>&gt; a uaslódáil, go hidéalach le ceadanna breise chun <a href=\"#id28\"><span class=\"problematic\" id=\"id29\">`scaoileadh a dhéanamh `_ más gá. Cruthaigh comhartha scóip tionscadail tar éis an `doiciméadú oifigiúil`_</span></a> agus cu&lt; <a class=\"reference external\" href=\"https://pypi.org/help/#apitoken\">https://pypi.org/help/#apitoken</a>&gt; ir ar bun do chomhad <code class=\"docutils literal notranslate\"><span class=\"pre\">$HOME/.pypirc</span></code> mar seo:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"ini\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">~/.pypirc</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Ini</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Ini code\"><code><span class=\"k\">[distutils]</span>\n<span class=\"w\">  </span><span class=\"na\">index-servers</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">    </span><span class=\"na\">pypi</span>\n<span class=\"w\">    </span><span class=\"na\">django</span>\n\n<span class=\"k\">[pypi]</span>\n<span class=\"w\">  </span><span class=\"na\">username</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s\">__token__</span>\n<span class=\"w\">  </span><span class=\"na\">password</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"c1\"># User-scoped or project-scoped token, to set as the default.</span>\n\n<span class=\"k\">[django]</span>\n<span class=\"w\">  </span><span class=\"na\">repository</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s\">https://upload.pypi.org/legacy/</span>\n<span class=\"w\">  </span><span class=\"na\">username</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s\">__token__</span>\n<span class=\"w\">  </span><span class=\"na\">password</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"c1\"># A project token.</span>\n</code></pre></figure>\n</li>\n<li><p>Rochtain ar thionscadal <a href=\"#id30\"><span class=\"problematic\" id=\"id31\">`Django ar Transifex`_</span></a> &lt; <a class=\"reference external\" href=\"https://app.transifex.com/django/django/\">https://app.transifex.com/django/django/</a>&gt;, le ról Bainisteora. Ginigh Comhartha API sa rannán socrú úsáideora `_ agus cu&lt; https://app.transifex.com/user/settings/api/&gt; ir ar bun do chomhad ``$HOME/.transifexRC` mar seo:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"ini\"><figcaption class=\"code-block-caption\"><a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>~/.transifexrc ``</figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Ini</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Ini code\"><code><span class=\"k\">[https://www.transifex.com]</span>\n<span class=\"w\">  </span><span class=\"na\">rest_hostname</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s\">https://rest.api.transifex.com</span>\n<span class=\"w\">  </span><span class=\"na\">token</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"c1\"># API token</span>\n</code></pre></figure>\n</li>\n<li><p>Rochtain ar riarachán Django ar <code class=\"docutils literal notranslate\"><span class=\"pre\">djangoproject.com</span></code> mar “cothabhálaí láithreáin”.</p></li>\n<li><p>Access to create a post in the <a class=\"reference external\" href=\"https://forum.djangoproject.com/c/announcements/7\">Django Forum - Announcements category</a> and to send emails to\nthe <a class=\"reference external\" href=\"https://groups.google.com/g/django-announce/\">django-announce</a>\nmailing list.</p></li>\n<li><p>Rochtain ar an repo `` django-security`` i GitHub. I measc rudaí eile, soláthraíonn sé seo rochtain ar an liosta dáileacháin réamhfhógraí (a theastaíonn le haghaidh tascanna ullmhúcháin um scaoileadh slándála).</p></li>\n<li><p>Access to the Django project on <a class=\"reference external\" href=\"https://readthedocs.org/projects/django/\">Read the Docs</a>.</p></li>\n</ul>\n</section>\n<section id=\"pre-release-tasks\">\n<h2>Tascanna réamhscaoilte<a class=\"heading-anchor\" href=\"#pre-release-tasks\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Ní mór aire a thabhairt do chúpla earra sula dtosaíonn tú fiú leis an bpróiseas scaoilte. Tosaíonn an stuif seo thart ar sheachtain roimh an scaoileadh; is féidir an chuid is mó de a dhéanamh am ar bith chun an scaoileadh iarbhír.</p>\n<section id=\"or-more-days-before-a-security-release\">\n<h3>10 lá (nó níos mó) roimh scaoileadh slándála<a class=\"heading-anchor\" href=\"#or-more-days-before-a-security-release\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<ol class=\"arabic simple\">\n<li><p>Iarr na <a href=\"#id32\"><span class=\"problematic\" id=\"id33\">`ID CVE`_</span></a> maidir leis na saincheisteanna slán&lt; <a class=\"reference external\" href=\"https://cveform.mitre.org/\">https://cveform.mitre.org/</a>&gt; dála atá á scaoileadh. Aitheantas CVE amháin in aghaidh na heisiúna, a iarrtar le <code class=\"docutils literal notranslate\"><span class=\"pre\">Díoltóir:</span> <span class=\"pre\">djangoproject</span></code> agus <code class=\"docutils literal notranslate\"><span class=\"pre\">Táirge:</span> <span class=\"pre\">django</span></code>.</p></li>\n<li><p>Ginigh an paiste/paistí (príobháideacha) ábhartha ag baint úsáide as <code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">format-patch</span></code>, ceann don bhrainse <code class=\"docutils literal notranslate\"><span class=\"pre\">príom</span></code> agus ceann do gach brainse chobhsaí atá á phaiteáil.</p></li>\n</ol>\n</section>\n<section id=\"a-week-before-a-security-release\">\n<h3>Seachtain roimh scaoileadh slándála<a class=\"heading-anchor\" href=\"#a-week-before-a-security-release\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<ol class=\"arabic\">\n<li><p>Seol réamh-fhógra amach go díreach <strong>seachtain</strong> roimh an scaoileadh slándála. Tá an teimpléad don ríomhphost sin agus liosta de na faighteoirí sa wiki príobháideach <code class=\"docutils literal notranslate\"><span class=\"pre\">django-slándála`</span> <span class=\"pre\">`GitHub.</span> <span class=\"pre\">BCC</span> <span class=\"pre\">na</span> <span class=\"pre\">faighteoirí</span> <span class=\"pre\">réamhfhógra</span> <span class=\"pre\">agus</span> <span class=\"pre\">bí</span> <span class=\"pre\">cinnte</span> <span class=\"pre\">go</span> <span class=\"pre\">gcuirfidh</span> <span class=\"pre\">tú</span> <span class=\"pre\">na</span> <span class=\"pre\">ID</span> <span class=\"pre\">CVE</span> <span class=\"pre\">ábhartha</span> <span class=\"pre\">san</span> <span class=\"pre\">áireamh.</span> <span class=\"pre\">Ceangail</span> <span class=\"pre\">na</span> <span class=\"pre\">paistí</span> <span class=\"pre\">ábhartha</span> <span class=\"pre\">go</span> <span class=\"pre\">léir</span> <span class=\"pre\">(ag</span> <span class=\"pre\">díriú</span> <span class=\"pre\">ar</span> <span class=\"pre\">``main</span></code> agus na brainsí cobhsaí) agus sínigh an téacs ríomhphoist leis an eochair a úsáidfidh tú chun an scaoileadh, le ordú mar:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>gpg<span class=\"w\"> </span>--clearsign<span class=\"w\"> </span>--digest-algo<span class=\"w\"> </span>SHA256<span class=\"w\"> </span>prenotification-email.txt\n</code></pre></div>\n</li>\n<li><p><a class=\"reference internal\" href=\"/ga/5.2/internals/security/#security-disclosure\"><span class=\"std std-ref\">Notify django-announce</span></a> of the upcoming\nsecurity release with a general message such as:</p>\n<div class=\"code-block\" data-language=\"text\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Text</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Text code\"><code>Notice of upcoming Django security releases (3.2.24, 4.2.10 and 5.0.2)\n\nDjango versions 5.0.2, 4.2.10, and 3.2.24 will be released on Tuesday,\nFebruary 6th, 2024 around 1500 UTC. They will fix one security defect\nwith severity &quot;moderate&quot;.\n\nFor details of severity levels, see:\nhttps://docs.djangoproject.com/en/dev/internals/security/#how-django-discloses-security-issues\n</code></pre></div>\n</li>\n</ol>\n</section>\n<section id=\"a-few-days-before-any-release\">\n<h3>Cúpla lá roimh aon scaoileadh<a class=\"heading-anchor\" href=\"#a-few-days-before-any-release\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<ol class=\"arabic\">\n<li><p>As the release approaches, watch Trac to make sure no release blockers are\nleft for the upcoming release. Under exceptional circumstances, such as to\nmeet a pre-determined security release date, a release could still go ahead\nwith an open release blocker. The releaser is trusted with the decision to\nrelease with an open release blocker or to postpone the release date of a\nnon-security release if required.</p></li>\n<li><p>Seiceáil leis na cumaisc eile chun a chinntiú nach bhfuil aon athruithe neamhthiomanta acu don scaoileadh.</p></li>\n<li><p>Léigh na nótaí scaoilte, lena n-áirítear féachaint ar an leagan ar líne chó:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>gabháil aon naisc bhriste &lt;documentation-link-check&gt;`nó earráidí REST, agus déan cinnte go bhfuil an dáta ceart sna nótaí scaoilte.</p></li>\n<li><p>Seiceáil faoi dhó go luann na nótaí scaoilte amlínte míshuaimseartha d'aon APIs a tugadh faoi deara mar atá díscothaithe, agus go luann siad aon athruithe i dtacaíocht leagan Python.</p></li>\n<li><p>Seiceáil faoi dhó go bhfuil nasc ag an innéacs nótaí scaoilte leis na nótaí don eisiúint nua; beidh sé seo i docs/releases/index.txt`.</p></li>\n<li><p>Más a: téarma é seo: scaoileadh gnéit, déan cinnte go bhfuil aistriúcháin ó Transifex comhtháite. De ghnáth déanann bainisteoir aistriúcháin ar leithligh é seo seachas an scaoilteoir, ach seo na céimeanna. Tá an próiseas seo beagán fada mar sin bí cinnte 4-10 uair an chloig a chur ar leataobh chun é seo a dhéanamh, agus go hidéalach pleanáil don tasc seo lá nó dhó roimh an lá scaoilte.</p>\n<p>Chomh maith le cuntas Transifex cumraithe a bheith agat, ba chóir go mbeadh an <a class=\"reference internal\" href=\"#tx-cli\">tx CLI</a> ar fáil i do &lt; https://developers.transifex.com/docs/cli&gt; PATH`. Ansin, is féidir leat na haistriúcháin go léir a fháil trí rith:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>python<span class=\"w\"> </span>scripts/manage_translations.py<span class=\"w\"> </span>fetch\n</code></pre></div>\n<p>Tógann an t-ordú seo roinnt ama le rith. Nuair a dhéantar é, iniúchadh cúramach ar an aschur le haghaidh earráidí agus/nó rabhaidh Má tá roinnt ann, beidh ort iad a dhífhabhtú agus a réiteach ar bhonn cás ar chás.</p>\n<p>Teastaíonn coigeartú láimhe ó na haistriúcháin a fuarthas le Ar an gcéad dul síos, caithfear na luachanna Po-Revision-Date ``a bhualadh de láimh le go mbeidh siad níos déanaí ná ``Pot-Creation-Date`. Is féidir leat ordú cosúil leis seo a úsáid chun na comhaid <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>.po <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>go léir a nuashonrú mórchóir (comparáid idir an diff i gcoinne an bhrainse chobhsaí ábhartha):</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>git<span class=\"w\"> </span>diff<span class=\"w\"> </span>--name-only<span class=\"w\"> </span>stable/5.0.x<span class=\"w\"> </span><span class=\"p\">|</span><span class=\"w\"> </span>grep<span class=\"w\"> </span><span class=\"s2\">&quot;\\.po&quot;</span><span class=\"w\">  </span><span class=\"p\">|</span><span class=\"w\"> </span>xargs<span class=\"w\"> </span>sed<span class=\"w\"> </span>-ri<span class=\"w\"> </span><span class=\"s2\">&quot;s/PO-Revision-Date: [0-9\\-]+ /PO-Revision-Date: </span><span class=\"k\">$(</span>date<span class=\"w\"> </span>-I<span class=\"k\">)</span><span class=\"s2\"> /g&quot;</span>\n</code></pre></div>\n<p>Ba chóir na comhaid nua <code class=\"docutils literal notranslate\"><span class=\"pre\">.po</span></code> a iniúchadh de láimh agus go cúramach chun athrú a sheachaint ar chomhad gan aon aistriúcháin nua a sheachaint. Chomh maith leis sin, níor chóir go mbeadh aon athruithe sna “foirmeacha iolra”: má tá aon athruithe ann (athruithe tuarascálacha na Spáinne agus na Fraince de ghnáth) beidh gá leo siúd a chur ar ais.</p>\n<p>&lt; <a class=\"reference external\" href=\"https://github.com/django/django/pull/16715\">https://github.com/django/django/pull/16715</a>&gt;Ar deireadh, déan na comhaid athraithe/breise (<code class=\"docutils literal notranslate\"><span class=\"pre\">.po</span></code> agus .mo` araon) a cheangal agus cruthaigh PR nua atá dírithe ar bhrainse chobhsaí an eisiúint chomhfhreagrach (sampla <a href=\"#id34\"><span class=\"problematic\" id=\"id35\">`PR ag nuashonrú aistriúcháin do 4.2`_</span></a>).</p>\n</li>\n<li><p>&lt;django-admin-manpage&gt;:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>Nuashonraigh an leathanach lámhleabhar django-admin <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span><span class=\"nb\">cd</span><span class=\"w\"> </span>docs\n$<span class=\"w\"> </span>make<span class=\"w\"> </span>man\n$<span class=\"w\"> </span>man<span class=\"w\"> </span>_build/man/django-admin.1<span class=\"w\">  </span><span class=\"c1\"># do a quick sanity check</span>\n$<span class=\"w\"> </span>cp<span class=\"w\"> </span>_build/man/django-admin.1<span class=\"w\"> </span>man/django-admin.1\n</code></pre></div>\n<p>agus ansin an leathanach fear athraithe a thiomnú.</p>\n</li>\n<li><p>&lt; <a class=\"reference external\" href=\"https://github.com/django/django-docs-translations\">https://github.com/django/django-docs-translations</a>&gt;Más é seo an scaoileadh “dot nialas” de shraith nua, cruthaigh brainse nua ón mbrainse cobhsaí reatha sa stór <a class=\"reference internal\" href=\"#django-docs-translations\">django-docs-translations</a>. Mar shampla, agus Django 4.2 á scaoileadh:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>git<span class=\"w\"> </span>checkout<span class=\"w\"> </span>-b<span class=\"w\"> </span>stable/4.2.x<span class=\"w\"> </span>origin/stable/4.1.x\n$<span class=\"w\"> </span>git<span class=\"w\"> </span>push<span class=\"w\"> </span>origin<span class=\"w\"> </span>stable/4.2.x:stable/4.2.x\n</code></pre></div>\n</li>\n<li><p>Scríobh an bhlagphost fógra don scaoileadh. Is féidir leat é a iontráil isteach sa riarachán ag am ar bith agus é a mharcáil mar neamhghníomhach. Seo cúpla sampla: <a href=\"#id17\"><span class=\"problematic\" id=\"id18\">`sampla fógra scaoilte slándála `__, `sampla fógra scaoilte rialta `__, `fógra réamh-scaoilte sampla`__</span></a>.</p></li>\n</ol>\n<section id=\"a-few-days-before-a-feature-freeze\">\n<h4>A few days before a feature freeze<a class=\"heading-anchor\" href=\"#a-few-days-before-a-feature-freeze\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>In preparation for the alpha release, the directory\n<code class=\"docutils literal notranslate\"><span class=\"pre\">/home/www/www/media/releases/A.B</span></code> must be created on the djangoproject\nserver.</p>\n<p>Before the feature freeze, a branch targeting <code class=\"docutils literal notranslate\"><span class=\"pre\">main</span></code> must be created to\nprepare for the next feature release. It should be reviewed and approved a few\ndays before the freeze, allowing it to be merged after the stable branch is\ncut. The following items should be addressed in this branch:</p>\n<ol class=\"arabic simple\">\n<li><p>Update the <code class=\"docutils literal notranslate\"><span class=\"pre\">VERSION</span></code> tuple in <code class=\"docutils literal notranslate\"><span class=\"pre\">django/__init__.py</span></code>, incrementing to the\nnext expected release (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/96700c7b378c592f0b1732302c22af2fd2c87fc6\">example commit</a>).</p></li>\n<li><p>Create a stub release note for the next feature release. Use the stub from\nthe previous feature release or copy the contents from the current version\nand delete most of the contents leaving only the headings\n(<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/9b5ad4056ccf9ff7ea548f72d28eb66c1b4f84cc\">example commit</a>).</p></li>\n<li><p>Remove <code class=\"docutils literal notranslate\"><span class=\"pre\">..</span> <span class=\"pre\">versionadded::</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">..</span> <span class=\"pre\">versionchanged::</span></code> annotations in the\ndocumentation from two releases ago, as well as any remaining older\nannotations. For example, in Django 5.1, notes for 4.2 will be removed\n(<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/9edb7833b89e811eefd94974fb987f4605b0c0d7\">example commit</a>).</p></li>\n<li><p>Remove features that have reached the end of their deprecation cycle,\nincluding their docs and the <code class=\"docutils literal notranslate\"><span class=\"pre\">..</span> <span class=\"pre\">deprecated::</span></code> annotation. Each removal\nshould be done in a separate commit for clarity. In the commit message, add\na <code class=\"docutils literal notranslate\"><span class=\"pre\">Refs</span> <span class=\"pre\">#XXXXX</span> <span class=\"pre\">--</span></code> prefix linking to the original ticket where the\ndeprecation began if possible. Make sure this gets noted in the removed\nfeatures section in the release notes (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/f2d9c76aa7096ef3eed675b9eb824858f9dd81e5\">example commit</a>).</p></li>\n<li><p>Increase the default PBKDF2 iterations in\n<code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.auth.hashers.PBKDF2PasswordHasher</span></code> by about 20%\n(pick a round number). Run the tests, and update the 3 failing\nhasher tests with the new values. Make sure this gets noted in the\nrelease notes (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/7288866da4dddf3705148c703421858ec19cdb78\">example commit</a>).</p></li>\n</ol>\n<p>Concrete examples for past feature release bootstrap branches: <a class=\"reference external\" href=\"https://github.com/django/django/pull/18127\">5.2 bootstrap</a>, <a class=\"reference external\" href=\"https://github.com/django/django/pull/17246\">5.1 bootstrap</a>, <a class=\"reference external\" href=\"https://github.com/django/django/pull/16432\">5.0 bootstrap</a>.</p>\n</section>\n</section>\n</section>\n<section id=\"feature-freeze-tasks\">\n<h2>Feature freeze tasks<a class=\"heading-anchor\" href=\"#feature-freeze-tasks\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<ol class=\"arabic\">\n<li><p>Remove empty sections from the release notes (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/9e6e58bad237a80ddd5e3ab8b834cecdaad8455e\">example commit</a>).</p></li>\n<li><p>Build the release notes locally and read them. Make any necessary change\nto improve flow or fix grammar (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/435bdab93889dae01e71c79598edab10627cc1f9\">example commit</a>).</p></li>\n<li><p>Create a new stable branch from <code class=\"docutils literal notranslate\"><span class=\"pre\">main</span></code>. For example, when feature freezing\nDjango 5.2:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>git<span class=\"w\"> </span>checkout<span class=\"w\"> </span>-b<span class=\"w\"> </span>stable/5.2.x<span class=\"w\"> </span>upstream/main\n$<span class=\"w\"> </span>git<span class=\"w\"> </span>push<span class=\"w\"> </span>upstream<span class=\"w\"> </span>-u<span class=\"w\"> </span>stable/5.2.x:stable/5.2.x\n</code></pre></div>\n<p>At the same time, update the <code class=\"docutils literal notranslate\"><span class=\"pre\">django_next_version</span></code> variable in\n<code class=\"docutils literal notranslate\"><span class=\"pre\">docs/conf.py</span></code> on the stable release branch to point to the new\ndevelopment version. For example, when creating <code class=\"docutils literal notranslate\"><span class=\"pre\">stable/5.2.x</span></code>, set\n<code class=\"docutils literal notranslate\"><span class=\"pre\">django_next_version</span></code> to <code class=\"docutils literal notranslate\"><span class=\"pre\">'6.0'</span></code> on the new stable branch\n(<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/1eb62e5b622ef7fd6e0123d8bbf6662d893d5d08\">example commit</a>).</p>\n</li>\n<li><p>Go to the <a href=\"#id17\"><span class=\"problematic\" id=\"id19\">`Add release page in the admin`__</span></a>, create a <code class=\"docutils literal notranslate\"><span class=\"pre\">Release</span></code> object for\nthe <em>final</em> release, ensuring that the <em>Release date</em> field is blank, thus\nmarking it as <em>unreleased</em>. For example, when creating <code class=\"docutils literal notranslate\"><span class=\"pre\">stable/5.2.x</span></code>,\ncreate <code class=\"docutils literal notranslate\"><span class=\"pre\">5.2</span></code> with the Release date field blank. If the release is part of\nan LTS branch, mark it so.</p>\n</li>\n<li><p>Go to the <a href=\"#id17\"><span class=\"problematic\" id=\"id20\">`Add document release page in the admin`__</span></a>, create a new\n<code class=\"docutils literal notranslate\"><span class=\"pre\">DocumentRelease</span></code> object for the English language for the newly created\n<code class=\"docutils literal notranslate\"><span class=\"pre\">Release</span></code> object. Do not mark this as default.</p>\n</li>\n<li><p>Cuir an brainse nua leis <a href=\"#id36\"><span class=\"problematic\" id=\"id37\">`Léigh na Doc&lt; https://readthedocs.org/projects/django/&gt; s`_</span></a>. &lt; <a class=\"reference external\" href=\"https://github.com/readthedocs/readthedocs.org/issues/5537\">https://github.com/readthedocs/readthedocs.org/issues/5537</a>&gt;Ós rud é go bhfuil difríocht idir na hainmneacha leagan a ghintear go huathoibríoch (“Stable-A.B.X”) ó na hainmneacha leagan a úsáidtear in Read the Docs (“A.b.x”), <a href=\"#id38\"><span class=\"problematic\" id=\"id39\">`cruthaigh ticéad`_</span></a> ag iarraidh an leagan nua.</p></li>\n<li><p><a class=\"reference external\" href=\"https://github.com/pypa/trove-classifiers/issues/29\">Request the new classifier on PyPI</a>. For example\n<code class=\"docutils literal notranslate\"><span class=\"pre\">Framework</span> <span class=\"pre\">::</span> <span class=\"pre\">Django</span> <span class=\"pre\">::</span> <span class=\"pre\">5.2</span></code>.</p></li>\n<li><p>Create a <a class=\"reference external\" href=\"https://code.djangoproject.com/wiki/Version6.0Roadmap\">roadmap page</a> for the next\nrelease on Trac. To create a new page on the Wiki, navigate to the URL of\nwhere you wish to create the page and a &quot;Create this page&quot; button will be\navailable.</p></li>\n<li><p>&lt; <a class=\"reference external\" href=\"https://code.djangoproject.com/#Djangoreleaseprocess\">https://code.djangoproject.com/#Djangoreleaseprocess</a>&gt;Nuashonraigh an brainse reatha atá faoi fhorbairt ghníomhach agus cuir brainse réamh-scaoilte leis sa <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>próiseas scaoilte Django <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>_ ar Trac.</p></li>\n<li><p>Update the <code class=\"docutils literal notranslate\"><span class=\"pre\">docs/fixtures/doc_releases.json</span></code> JSON fixture for\ndjangoproject.com, so people without access to the production DB can still\nrun an up-to-date copy of the docs site\n(<a class=\"reference external\" href=\"https://github.com/django/djangoproject.com/pull/1446\">example PR</a>).\nThis will be merged after the final release.</p></li>\n</ol>\n</section>\n<section id=\"actually-rolling-the-release\">\n<h2>I ndáiríre an scaoilte<a class=\"heading-anchor\" href=\"#actually-rolling-the-release\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Ceart go leor, is é seo an chuid spraíúil, áit a bhrúimid scaoileadh amach i ndáiríre! Má tá tú ag eisiúint <strong>ileisiúint</strong>, déan na céimeanna seo arís do gach scaoileadh.</p>\n<ol class=\"arabic\">\n<li><p>Seiceáil go bhfuil <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>Jenkins <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>__ glas don leagan/na leaganacha atá tú ag cur amach. Is dócha nár cheart duit scaoileadh a eisiúint go dtí go mbeidh sé glas, agus ba cheart duit a chinntiú go gcuimsíonn an rith glas is déanaí na hathruithe atá á scaoileadh agat.</p>\n</li>\n<li><p>Glan na nótaí scaoilte don eisiúint seo. Déan na hathruithe seo i <code class=\"docutils literal notranslate\"><span class=\"pre\">príom</span></code> agus backport chuig gach brainse ina bhfuil na nótaí scaoilte do leagan áirithe suite.</p>\n<ol class=\"arabic simple\">\n<li><p>&lt;1994a2643881a9e3f9fa8d3e0794c1a9933a1831&gt;Le haghaidh scaoileadh gné, bain an ceannteideal <code class=\"docutils literal notranslate\"><span class=\"pre\">UNDER</span> <span class=\"pre\">DEVELOPMENT</span></code> ag barr na nótaí scaoilte, bain an réimír <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Táthas ag súil leis <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>agus nuashonraigh an dáta scaoilte, más gá (:commit: <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">`</span></a>example commit <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">`</span></a>).</p></li>\n<li><p>&lt;34a503162fe222033a1cd3249bccad014fcd1d20&gt;Le haghaidh scaoileadh paiste, bain an réimír <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Táim ag súil leis <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>agus nuashonraigh an dáta scaoilte do gach eisiúint, más gá (:commit: <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">`</span></a>example commit <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">`</span></a>).</p></li>\n</ol>\n</li>\n<li><p>Tosaíonn scaoileadh i gcónaí ó bhrainse scaoilte, mar sin ba cheart duit a chinntiú go bhfuil tú ar bhrainse cobhsaí cothro Chomh maith leis sin, ba cheart go mbeadh timpeallacht fhíorúil glan tiomnaithe ar fáil agat in aghaidh an leagan atá Mar shampla:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>git<span class=\"w\"> </span>checkout<span class=\"w\"> </span>stable/4.1.x\n$<span class=\"w\"> </span>git<span class=\"w\"> </span>pull\n</code></pre></div>\n</li>\n<li><p>Más scaoileadh slándála é seo, cumaisc na paistí cuí ó django-slándáil `. Athbhunaigh na paistí seo de réir mar is gá chun tiomantas simplí a dhéanamh ar gach ceann ar an mbrainse scaoilte seachas tiomantas cumaisc. Chun é seo a chinntiú, déan iad a chumasc leis an bhratach <code class=\"docutils literal notranslate\"><span class=\"pre\">--ff-only</span></code>; mar shampla:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>git<span class=\"w\"> </span>checkout<span class=\"w\"> </span>stable/4.1.x\n$<span class=\"w\"> </span>git<span class=\"w\"> </span>merge<span class=\"w\"> </span>--ff-only<span class=\"w\"> </span>security/4.1.x\n</code></pre></div>\n<p>(Glacann sé leis seo gur brainse sa repo <code class=\"docutils literal notranslate\"><span class=\"pre\">django-slándála</span></code> ina bhfuil na paistí slándála riachtanacha don chéad eisiúint eile sa tsraith 4.1 é slándálaí/4.1.x`.)</p>\n<p>Má dhiúltaíonn git cumasc le <code class=\"docutils literal notranslate\"><span class=\"pre\">--ff-only</span></code>, aistrigh go dtí an brainse paiste slándála agus athbhunaigh é ar an mbrainse atá ar tí é a chumasc isteach (<code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">checkout</span> <span class=\"pre\">security/4.1.x;</span> <span class=\"pre\">git</span> <span class=\"pre\">rebase</span> <span class=\"pre\">stable/4.1.x</span></code>) agus ansin athraigh ar ais agus déan an cumaisc. Déan cinnte go míníonn an teachtaireacht tiomanta do gach socrú slándála gur socrú slándála é an tiomantas agus go leanfaidh fógra (:commit: example security commit &lt;bf39978a53f117ca02e9a0c78b76664a41a54745&gt;).</p>\n</li>\n<li><p>Nuashonraigh an uimhir leagan i <code class=\"docutils literal notranslate\"><span class=\"pre\">django/__init__.py</span></code> don scaoileadh. &lt;2719a7f8c161233f45d34b624a9df9392c86cc1b&gt;Féach le do thoil <a class=\"reference internal\" href=\"#notes-on-setting-the-version-tuple\">nótaí maidir le feadán VERSION a shocraí</a> thíos le haghaidh sonraí faoi VERSION` (:commit: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>example commit <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>).</p>\n<ol class=\"arabic simple\">\n<li><p>If this is a pre-release package also update the &quot;Development Status&quot;\ntrove classifier in <code class=\"docutils literal notranslate\"><span class=\"pre\">pyproject.toml</span></code> to reflect this. An <code class=\"docutils literal notranslate\"><span class=\"pre\">rc</span></code>\npre-release should not change the trove classifier (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/759921c8e9ad151932fc913ab429fef0a6112ef8\">example\ncommit for alpha release</a>,\n<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/25fec8940b24107e21314ab6616e18ce8dec1c1c\">example commit for beta release</a>).</p></li>\n<li><p>Seachas sin, déan cinnte go bhfuil an aicmitheoir socraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">Stádas</span> <span class=\"pre\">Forbartha::</span> <span class=\"pre\">5</span> <span class=\"pre\">-</span> <span class=\"pre\">Táirgeacht/Cobhsa</span></code>.</p></li>\n</ol>\n</li>\n</ol>\n<section id=\"building-the-artifacts\">\n<h3>Building the artifacts<a class=\"heading-anchor\" href=\"#building-the-artifacts\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<aside class=\"admonition-optionally-use-helper-scripts admonition\">\n<p class=\"admonition-title\">Optionally use helper scripts</p>\n<p>You can streamline some of the steps below using helper scripts from the\n<code class=\"docutils literal notranslate\"><span class=\"pre\">scripts</span></code> folder:</p>\n<ul class=\"simple\">\n<li><p>Release script example run:</p></li>\n</ul>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span><span class=\"nv\">PGP_KEY_ID</span><span class=\"o\">=</span>&lt;key-id&gt;<span class=\"w\"> </span><span class=\"nv\">PGP_KEY_URL</span><span class=\"o\">=</span>&lt;key-url&gt;<span class=\"w\"> </span><span class=\"nv\">DEST_FOLDER</span><span class=\"o\">=</span>~/releases<span class=\"w\"> </span>scripts/do_django_release.py\n</code></pre></div>\n<ul class=\"simple\">\n<li><p>Verify the release (after artifacts were uploaded):</p></li>\n</ul>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span><span class=\"nv\">VERSION</span><span class=\"o\">=</span><span class=\"m\">5</span>.2.1<span class=\"w\"> </span>scripts/verify_release.sh\n</code></pre></div>\n</aside>\n<ol class=\"arabic\">\n<li><p>Clibeáil an scaoileadh ag baint úsáide as <code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">tag</span></code>. Mar shampla:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>git<span class=\"w\"> </span>tag<span class=\"w\"> </span>--sign<span class=\"w\"> </span>--message<span class=\"o\">=</span><span class=\"s2\">&quot;Tag 4.1.1&quot;</span><span class=\"w\"> </span><span class=\"m\">4</span>.1.1\n</code></pre></div>\n<p>&lt;tag&gt;Is féidir leat do chuid oibre a sheiceáil ag rith <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>git tag --verify <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>.</p>\n</li>\n<li><p>Déan cinnte go bhfuil crann go hiomlán glan agat trí git clean -dfx` a reáchtáil.</p></li>\n<li><p>Run <code class=\"docutils literal notranslate\"><span class=\"pre\">python</span> <span class=\"pre\">-m</span> <span class=\"pre\">build</span></code> to generate the release packages. This will create\nthe release artifacts (tarball and wheel) in a <code class=\"docutils literal notranslate\"><span class=\"pre\">dist/</span></code> directory. For\nDjango 5.0 or older, you need to run <code class=\"docutils literal notranslate\"><span class=\"pre\">make</span> <span class=\"pre\">-f</span> <span class=\"pre\">extras/Makefile</span></code> instead.</p></li>\n<li><p>Ginigh hashes na bpacáistí scaoilte:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span><span class=\"nb\">cd</span><span class=\"w\"> </span>dist\n$<span class=\"w\"> </span>md5sum<span class=\"w\"> </span>*\n$<span class=\"w\"> </span>sha1sum<span class=\"w\"> </span>*\n$<span class=\"w\"> </span>sha256sum<span class=\"w\"> </span>*\n</code></pre></div>\n</li>\n<li><p>Cruthaigh comhad “checksums”, <code class=\"docutils literal notranslate\"><span class=\"pre\">Django-</span> <span class=\"pre\">&lt;&lt;VERSION&gt;</span> <span class=\"pre\">&gt;</span> <span class=\"pre\">.checksum.txt</span></code> ina bhfuil na hashes agus scaoil faisnéis. Tosaigh leis an teimpléad seo agus cuir isteach an leagan ceart, an dáta, an ID eochair GPG (ó gpg --list-keys --keyid-format LONG `), ainm úsáideora GitHub bainisteora scaoilte, URL scaoilte, agus seicsuimeanna:</p>\n<div class=\"code-block\" data-language=\"text\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Text</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Text code\"><code>This file contains MD5, SHA1, and SHA256 checksums for the source-code\ntarball and wheel files of Django &lt;&lt;VERSION&gt;&gt;, released &lt;&lt;DATE&gt;&gt;.\n\nTo use this file, you will need a working install of PGP or other\ncompatible public-key encryption software. You will also need to have\nthe Django release manager&#39;s public key in your keyring. This key has\nthe ID ``XXXXXXXXXXXXXXXX`` and can be imported from GitHub, for example,\nif using the open-source GNU Privacy Guard implementation of PGP:\n\n    curl https://github.com/&lt;&lt;RELEASE MANAGER GITHUB USERNAME&gt;&gt;.gpg | gpg --import -\n\nOnce the key is imported, verify this file:\n\n    gpg --verify &lt;&lt;THIS FILENAME&gt;&gt;\n\nOnce you have verified this file, you can use normal MD5, SHA1, or SHA256\nchecksumming applications to generate the checksums of the Django\npackage and compare them to the checksums listed below.\n\nRelease packages\n================\n\nhttps://www.djangoproject.com/download/&lt;&lt;VERSION&gt;&gt;/tarball/\nhttps://www.djangoproject.com/download/&lt;&lt;VERSION&gt;&gt;/wheel/\n\nMD5 checksums\n=============\n\n&lt;&lt;MD5SUM&gt;&gt;  &lt;&lt;RELEASE TAR.GZ FILENAME&gt;&gt;\n&lt;&lt;MD5SUM&gt;&gt;  &lt;&lt;RELEASE WHL FILENAME&gt;&gt;\n\nSHA1 checksums\n==============\n\n&lt;&lt;SHA1SUM&gt;&gt;  &lt;&lt;RELEASE TAR.GZ FILENAME&gt;&gt;\n&lt;&lt;SHA1SUM&gt;&gt;  &lt;&lt;RELEASE WHL FILENAME&gt;&gt;\n\nSHA256 checksums\n================\n\n&lt;&lt;SHA256SUM&gt;&gt;  &lt;&lt;RELEASE TAR.GZ FILENAME&gt;&gt;\n&lt;&lt;SHA256SUM&gt;&gt;  &lt;&lt;RELEASE WHL FILENAME&gt;&gt;\n</code></pre></div>\n</li>\n<li><p>&lt;version&gt;Sínigh an comhad seiceála (<code class=\"docutils literal notranslate\"><span class=\"pre\">gpg</span> <span class=\"pre\">--clearsign</span> <span class=\"pre\">--digest-algo</span> <span class=\"pre\">SHA256</span> <span class=\"pre\">Django-</span> <span class=\"pre\">.checksum.txt</span></code>). &lt;version&gt;Gineann sé seo doiciméad sínithe, <code class=\"docutils literal notranslate\"><span class=\"pre\">Django-</span> <span class=\"pre\">&lt;version&gt;.checksum.txt.asc</span></code> ar féidir leat a fhíorú ansin ag baint úsáide as <code class=\"docutils literal notranslate\"><span class=\"pre\">gpg</span> <span class=\"pre\">--verify</span> <span class=\"pre\">Django-</span> <span class=\"pre\">.checksum.txt.asc</span></code>.</p></li>\n</ol>\n</section>\n</section>\n<section id=\"making-the-release-s-available-to-the-public\">\n<h2>An scaoileadh (í) a chur ar fáil don phobal<a class=\"heading-anchor\" href=\"#making-the-release-s-available-to-the-public\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Anois tá tú réidh chun an scaoileadh a chur amuigh ansin i ndáiríre. Chun seo a dhéanamh:</p>\n<ol class=\"arabic\">\n<li><p>Create a new <code class=\"docutils literal notranslate\"><span class=\"pre\">Release</span></code> entry in the <a class=\"reference external\" href=\"https://www.djangoproject.com/admin/releases/release/add/\">djangoproject.com's admin</a>. If this is a\nsecurity release, this should be done 15 minutes before the announced\nrelease time, no sooner:</p>\n<dl class=\"simple\">\n<dt>Leagan</dt><dd><p>Must match the version number as defined in the tarball\n(<code class=\"docutils literal notranslate\"><span class=\"pre\">django-&lt;version&gt;.tar.gz</span></code>). For example: &quot;5.2&quot;, &quot;4.1.1&quot;, or &quot;4.2rc1&quot;.</p>\n</dd>\n<dt>Is active</dt><dd><p>Set to False until the release is fully published (last step).</p>\n</dd>\n<dt>LTS</dt><dd><p>Enable if the release is part of an <abbr title=\"Long Term Support\">LTS</abbr>\nbranch.</p>\n</dd>\n<dt>Dates</dt><dd><p>Set the release date to today. This release will not be published until\n<code class=\"docutils literal notranslate\"><span class=\"pre\">is_active</span></code> is enabled.</p>\n</dd>\n<dt>Artifacts</dt><dd><p>Upload the tarball (<code class=\"docutils literal notranslate\"><span class=\"pre\">django-&lt;version&gt;.tar.gz</span></code>), wheel\n(<code class=\"docutils literal notranslate\"><span class=\"pre\">django-&lt;version&gt;-py3-none-any.whl</span></code>), and checksum\n(<code class=\"docutils literal notranslate\"><span class=\"pre\">django-&lt;version&gt;.checksum.txt.asc</span></code>) files created earlier.</p>\n</dd>\n</dl>\n</li>\n<li><p>Test that the release packages install correctly using <code class=\"docutils literal notranslate\"><span class=\"pre\">pip</span></code>. Here's one\nsimple method (this just tests that the binaries are available, that they\ninstall correctly, and that migrations and the development server start, but\nit'll catch silly mistakes):\n<a class=\"reference external\" href=\"https://code.djangoproject.com/wiki/ReleaseTestNewVersion\">https://code.djangoproject.com/wiki/ReleaseTestNewVersion</a>.</p></li>\n<li><p>Rith an tógáil <a href=\"#id17\"><span class=\"problematic\" id=\"id21\">`confirm-release`__</span></a> ar Jenkins chun an comhad (í) seicsum a fhíorú (m.sh. bain úsáid as 4.2rc1` le haghaidh <a class=\"reference external\" href=\"https://media.djangoproject.com/pgp/Django-4.2rc1.checksum.txt\">https://media.djangoproject.com/pgp/Django-4.2rc1.checksum.txt</a>).</p>\n</li>\n<li><p>Uaslódáil na pacáistí scaoilte chuig PyPi (le haghaidh réamh-eisiúintí, uaslódáil ach an comhad roth):</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>twine<span class=\"w\"> </span>upload<span class=\"w\"> </span>--repository<span class=\"w\"> </span>django<span class=\"w\"> </span>dist/*\n</code></pre></div>\n</li>\n<li><p>Update the newly created <code class=\"docutils literal notranslate\"><span class=\"pre\">Release</span></code> in the admin in <code class=\"docutils literal notranslate\"><span class=\"pre\">djangoproject.com</span></code>\nand enable the <code class=\"docutils literal notranslate\"><span class=\"pre\">is_active</span></code> flag.</p></li>\n<li><p>Brúigh do chuid oibre agus an chlib nua:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>git<span class=\"w\"> </span>push\n$<span class=\"w\"> </span>git<span class=\"w\"> </span>push<span class=\"w\"> </span>--tags\n</code></pre></div>\n</li>\n<li><p>Déan an blag post ag fógairt an scaoileadh beo.</p></li>\n<li><p>Le haghaidh scaoileadh leagan nua (m.sh. 4.1, 4.2), nuashonraigh an leagan cobhsaí réamhshocraithe de na doiciméid tríd an bhratach <code class=\"docutils literal notranslate\"><span class=\"pre\">is_default</span></code> a fhilleadh go True` ar an réad cuí DocumentRelease` sa bhunachar sonraí docs.djangoproject.com (déanfaidh sé seo go huathoibríoch go False` do gach duine eile).</p>\n<p>Cruthaigh rudaí nua <code class=\"docutils literal notranslate\"><span class=\"pre\">DocumentRelease</span></code> do gach teanga a bhfuil iontráil aige don eisiúint roimhe seo. Nuashonraigh comhad <a href=\"#id17\"><span class=\"problematic\" id=\"id22\">`robots.docs.txt`__</span></a> djangoproject.com tríd an toradh a ghintear ón ordú manage_translations.py robots_txt` a reáchtáil sa bhrainse chobhsaí reatha ón stóras <a href=\"#id17\"><span class=\"problematic\" id=\"id23\">`django-docs-translationy`__</span></a>. Mar shampla, agus Django 4.2 á scaoileadh:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>git<span class=\"w\"> </span>checkout<span class=\"w\"> </span>stable/4.2.x\n$<span class=\"w\"> </span>git<span class=\"w\"> </span>pull\n$<span class=\"w\"> </span>python<span class=\"w\"> </span>manage_translations.py<span class=\"w\"> </span>robots_txt\n</code></pre></div>\n</li>\n<li><p>Post the release announcement to the <a class=\"reference internal\" href=\"/ga/5.2/internals/mailing-lists/#django-announce-mailing-list\"><span class=\"std std-ref\">django-announce</span></a> mailing list and the\nDjango Forum. This should include a link to the announcement blog post.</p></li>\n<li><p>Más scaoileadh slándála é seo, seol ríomhphost ar leithligh chuig <a class=\"reference external\" href=\"mailto:oss-security&#37;&#52;&#48;lists&#46;openwall&#46;com\">oss-security<span>&#64;</span>lists<span>&#46;</span>openwall<span>&#46;</span>com</a>. Cuir ábhar tuairisciúil ar fáil, mar shampla, “Django” móide teideal an eisiúna ó na nótaí scaoilte (lena n-áirítear ID CVE). Ba chóir go mbeadh na sonraí leochaileachta san áireamh sa chomhlacht teachtaireachta, mar shampla, téacs blag an bhlag Cuir nasc leis an bpost blag fógra san áireamh.</p></li>\n</ol>\n</section>\n<section id=\"post-release\">\n<h2>Iar-scaoileadh<a class=\"heading-anchor\" href=\"#post-release\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Tá tú beagnach déanta! Níl le déanamh anois ach:</p>\n<ol class=\"arabic\">\n<li><p>If this is not a pre-release, update the <code class=\"docutils literal notranslate\"><span class=\"pre\">VERSION</span></code> tuple in\n<code class=\"docutils literal notranslate\"><span class=\"pre\">django/__init__.py</span></code> again, incrementing to whatever the next expected\nrelease will be. For example, after releasing 4.1.1, update <code class=\"docutils literal notranslate\"><span class=\"pre\">VERSION</span></code> to\n<code class=\"docutils literal notranslate\"><span class=\"pre\">VERSION</span> <span class=\"pre\">=</span> <span class=\"pre\">(4,</span> <span class=\"pre\">1,</span> <span class=\"pre\">2,</span> <span class=\"pre\">'alpha',</span> <span class=\"pre\">0)</span></code> (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/a4d19953d46247ee1992b3427fe652e941524272\">example commit</a>).</p></li>\n<li><p>Cuir an scaoileadh i liosta leaganacha Trac `_ más gá (agus déan é an réamhshocraithe tríd an socrú ``default_version` a athrú i <a href=\"#id17\"><span class=\"problematic\" id=\"id24\">`trac.ini`__</span></a> an code.djangoproject.com, más scaoileadh deiridh é). Ba chóir an leagan nua X.Y a chur leis tar éis an scaoileadh alfa agus ba chóir an leagan réamhshocraithe a nuashonrú tar éis scaoileadh “dot nialas”.</p>\n</li>\n<li><p>Más scaoileadh deiridh é seo:</p>\n<ol class=\"arabic simple\">\n<li><p>&lt; <a class=\"reference external\" href=\"https://code.djangoproject.com/#Djangoreleaseprocess\">https://code.djangoproject.com/#Djangoreleaseprocess</a>&gt;Nuashonraigh an brainse cobhsaí reatha agus bain an brainse réamh-scaoilte sa phróiseas scaoilte <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>Django <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>_ ar Trac.</p></li>\n<li><p>&lt; <a class=\"reference external\" href=\"https://github.com/django/djangoproject.com/pull/1444\">https://github.com/django/djangoproject.com/pull/1444</a>&gt;Nuashonraigh leathanach íoslódála djangoproject.com (<a href=\"#id17\"><span class=\"problematic\" id=\"id25\">`sampla PR`__</span></a>).</p></li>\n</ol>\n</li>\n<li><p>Más scaoileadh slándála a bhí ann, déan nuashonraithe:doc: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>/releases/security <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>le sonraí na saincheisteanna a ndearnadh aghaidh orthu.</p></li>\n<li><p>If this was a pre-release, the translation catalogs need to be updated:</p>\n<ol class=\"arabic\">\n<li><p>Make a new branch from the recently released stable branch:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>git<span class=\"w\"> </span>checkout<span class=\"w\"> </span>stable/A.B.x\ngit<span class=\"w\"> </span>checkout<span class=\"w\"> </span>-b<span class=\"w\"> </span>update-translations-catalog-A.B.x\n</code></pre></div>\n</li>\n<li><p>Ensure that the release's dedicated virtual environment is enabled and\nrun the following:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span><span class=\"nb\">cd</span><span class=\"w\"> </span>django\n$<span class=\"w\"> </span>django-admin<span class=\"w\"> </span>makemessages<span class=\"w\"> </span>-l<span class=\"w\"> </span>en<span class=\"w\"> </span>--domain<span class=\"o\">=</span>djangojs<span class=\"w\"> </span>--domain<span class=\"o\">=</span>django\nprocessing<span class=\"w\"> </span>locale<span class=\"w\"> </span>en\n</code></pre></div>\n</li>\n<li><p>Review the diff before pushing and avoid committing changes to the\n<code class=\"docutils literal notranslate\"><span class=\"pre\">.po</span></code> files without any new translations (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/d2b1ec551567c208abfdd21b27ff6d08ae1a6371\">example commit</a>).</p></li>\n<li><p>Make a pull request against the corresponding stable branch and merge\nonce approved.</p></li>\n<li><p>Forward port the updated source translations to the <code class=\"docutils literal notranslate\"><span class=\"pre\">main</span></code> branch\n(<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/aed303aff57ac990894b6354af001b0e8ea55f71\">example commit</a>).</p></li>\n</ol>\n</li>\n<li><p>If this was an <code class=\"docutils literal notranslate\"><span class=\"pre\">rc</span></code> pre-release, call for translations for the upcoming\nrelease in the <a class=\"reference external\" href=\"https://forum.djangoproject.com/c/internals/i18n/14\">Django Forum - Internationalization category</a>.</p></li>\n</ol>\n</section>\n<section id=\"notes-on-setting-the-version-tuple\">\n<h2>Nótaí maidir leis an tuple VERSION a shocrú<a class=\"heading-anchor\" href=\"#notes-on-setting-the-version-tuple\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Tá tuairisciú leagan Django á rialú ag an tuipéal <code class=\"docutils literal notranslate\"><span class=\"pre\">VERSION</span></code> i django/__init__.py`. Is tuple cúig ghné é seo, a bhfuil a n-eilimintí:</p>\n<ol class=\"arabic simple\">\n<li><p>Leagan mór.</p></li>\n<li><p>Leagan mion.</p></li>\n<li><p>Leagan micrea-leagan.</p></li>\n<li><p>Stádas - is féidir a bheith ar cheann de “alfa”, “béite”, “rc” nó “críochnaitheach”.</p></li>\n<li><p>Uimhir an tsraith, le haghaidh pacáistí alpha/beta/RC a ritheann i seicheamh (ag ceadú, mar shampla, “béita 1&quot;, “béite 2&quot;, srl.).</p></li>\n</ol>\n<p>Le haghaidh scaoileadh deiridh, bíonn an stádas “deiridh” i gcónaí agus is é uimhir na sraithe i gcónaí 0. Tuairiscítear uimhir shraith 0 le stádas “alfa” mar “réamh-alfa”.</p>\n<p>Roinnt samplaí:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">(4,</span> <span class=\"pre\">1,</span> <span class=\"pre\">1,</span> <span class=\"pre\">“deiridh”,</span> <span class=\"pre\">0)</span></code> → “4.1.1&quot;</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">(4,</span> <span class=\"pre\">2,</span> <span class=\"pre\">0,</span> <span class=\"pre\">“alfa”,</span> <span class=\"pre\">0)</span></code> → “4.2 réamh-alfa”</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">(4,</span> <span class=\"pre\">2,</span> <span class=\"pre\">0,</span> <span class=\"pre\">“béite”,</span> <span class=\"pre\">1)</span></code> → “4.2 béite 1&quot;</p></li>\n</ul>\n</section>","rootId":"how-to-release-django","toc":[{"title":"Forbhreathnú","anchor":"overview","children":[]},{"title":"Riachtanais","anchor":"prerequisites","children":[]},{"title":"Tascanna réamhscaoilte","anchor":"pre-release-tasks","children":[{"title":"10 lá (nó níos mó) roimh scaoileadh slándála","anchor":"or-more-days-before-a-security-release","children":[]},{"title":"Seachtain roimh scaoileadh slándála","anchor":"a-week-before-a-security-release","children":[]},{"title":"Cúpla lá roimh aon scaoileadh","anchor":"a-few-days-before-any-release","children":[{"title":"A few days before a feature freeze","anchor":"a-few-days-before-a-feature-freeze","children":[]}]}]},{"title":"Feature freeze tasks","anchor":"feature-freeze-tasks","children":[]},{"title":"I ndáiríre an scaoilte","anchor":"actually-rolling-the-release","children":[{"title":"Building the artifacts","anchor":"building-the-artifacts","children":[]}]},{"title":"An scaoileadh (í) a chur ar fáil don phobal","anchor":"making-the-release-s-available-to-the-public","children":[]},{"title":"Iar-scaoileadh","anchor":"post-release","children":[]},{"title":"Nótaí maidir leis an tuple VERSION a shocrú","anchor":"notes-on-setting-the-version-tuple","children":[]}],"breadcrumbs":[{"docname":"internals/index","title":"Inmheánacha Django","url":"/ga/5.2/internals/"}],"prev":{"docname":"internals/git","title":"Stóráil cód foinse Django","url":"/ga/5.2/internals/git/"},"next":null,"formats":{"html":"/ga/5.2/internals/howto-release-django/","markdown":"/ga/5.2/internals/howto-release-django.md","json":"/ga/5.2/internals/howto-release-django.json"},"source":"https://github.com/django/django/blob/stable/5.2.x/docs/internals/howto-release-django.txt","official":"https://docs.djangoproject.com/ga/5.2/internals/howto-release-django/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}