UPGRADING.rst 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673
  1. Upgrading Pagure
  2. ================
  3. From 5.1 to 5.1.4
  4. -----------------
  5. In the development of 5.1.4 it was found out that the alembic migration
  6. ``ba538b2648b7`` that creates the ``hook_mirror`` table was incomplete.
  7. If you created that table via alembic, you will likely want to re-run it. Beware
  8. that applying the following commands will destroy any data you have in this
  9. table.
  10. * Mark the database to this migration::
  11. alembic stamp ba538b2648b7
  12. * Remove the ``hook_mirror`` table so it can be re-generated::
  13. alembic downgrade -1
  14. * Re-run that single migration::
  15. alembic upgrade +1
  16. * Marking the database to the last current migration (as of 5.1.4)::
  17. alembic stamp f16ab75e4d32
  18. Again, any project that tried to setup the mirroring feature in pagure will need
  19. to be reconfigured.
  20. Another option (that will prevent loosing any data in this table) is to
  21. adjust the table manually using these SQL queries:
  22. ::
  23. ALTER TABLE hook_mirror ADD COLUMN 'public_key' TEXT;
  24. ALTER TABLE hook_mirror ADD COLUMN 'target' TEXT;
  25. ALTER TABLE hook_mirror ADD COLUMN 'last_log' TEXT;
  26. From 5.x to 5.1
  27. ---------------
  28. The 5.1 release contains a database schema updates, so:
  29. * Update the data schema using alembic: ``alembic upgrade head``
  30. (As usual, do your backups before).
  31. New configuration keys added:
  32. * ALLOW_ADMIN_IGNORE_EXISTING_REPOS
  33. * ALLOW_HTTP_PULL_PUSH
  34. * ALLOW_HTTP_PUSH
  35. * HTTP_REPO_ACCESS_GITOLITE
  36. From 5.0 to 5.0.1
  37. -----------------
  38. The 5.0 release was missing a database schema migration to add the
  39. ``hook_mirror`` table. This alembic migration has been added, so if you have
  40. note update to 5.0, you will want to update your database schema using:
  41. ``alembic upgrade head``. If you went around this issue by running the
  42. ``pagure_createdb.py`` script, you can mark you database schema up to date using
  43. ``alembic stamp ba538b2648b7``.
  44. From 4.x to 5.0
  45. ---------------
  46. The release 5.0 brings some changes to the database schema.
  47. * Update the data schema using alembic: ``alembic upgrade head``
  48. New configuration keys added:
  49. * PR_TARGET_MATCHING_BRANCH
  50. * EMAIL_ON_WATCHCOMMITS
  51. * THEME
  52. * GIT_AUTH_BACKEND (replacing GITOLITE_BACKEND, backward compatibility kept for
  53. now)
  54. * REPOSPANNER_PSEUDO_FOLDER
  55. * REPOSPANNER_NEW_REPO
  56. * REPOSPANNER_NEW_REPO_ADMIN_OVERRIDE
  57. * REPOSPANNER_NEW_FORK
  58. * REPOSPANNER_ADMIN_MIGRATION
  59. * REPOSPANNER_REGIONS
  60. * SSH_KEYS_USERNAME_LOOKUP
  61. * SSH_KEYS_USERNAME_EXPECT
  62. * SSH_KEYS_OPTIONS
  63. Configuration deprecated:
  64. * BOOTSTRAP_URLS_CSS
  65. * BOOTSTRAP_URLS_JS
  66. * FILE_SIZE_HIGHLIGHT
  67. * HTML_TITLE
  68. * GITOLITE_BACKEND
  69. Note: Some configuration keys changed their default value:
  70. * LOGGING
  71. * PRIVATE_PROJECTS
  72. * EMAIL_ERROR
  73. * FROM_EMAIL
  74. * DOMAIN_EMAIL_NOTIFICATIONS
  75. * APP_URL
  76. * DOC_APP_URL
  77. * GIT_URL_SSH
  78. * GIT_URL_GIT
  79. * FEDMSG_NOTIFICATIONS
  80. * PAGURE_AUTH
  81. From 3.x to 4.0
  82. ---------------
  83. The release 4.0 brings some changes to the database schema.
  84. * Update the data schema using alembic: ``alembic upgrade head``
  85. New configuration keys added:
  86. * EMAIL_ON_WATCHCOMMITS
  87. * ALWAYS_FEDMSG_ON_COMMITS
  88. * SESSION_TYPE
  89. * PROJECT_TEMPLATE_PATH
  90. * FORK_TEMPLATE_PATH
  91. From 3.13 to 3.13.1
  92. -------------------
  93. The release 3.13.1 brings one change to the database schema to remove a database
  94. constraint (pull_requests_check in the pull_requests table) that is not only no
  95. longer needed but even blocking now.
  96. * Update the data schema using alembic: ``alembic upgrade head``
  97. From 3.12 to 3.13
  98. -----------------
  99. The release 3.13 brings some features and bug fixes but does not have any
  100. changes made to the database schema or new configuration keys. Update should be
  101. straight forward.
  102. From 3.11 to 3.12
  103. -----------------
  104. The release 3.12 brings some changes to the database schema.
  105. * Update the data schema using alembic: ``alembic upgrade head``
  106. Note that this release bring support for `OpenID
  107. Connect<https://en.wikipedia.org/wiki/OpenID_Connect>`_ authentication, meaning
  108. pagure can now be deployed with authentication coming from, for example, google.
  109. This brings a number of new configuration keys:
  110. * OIDC_CLIENT_SECRETS
  111. * OIDC_ID_TOKEN_COOKIE_SECURE
  112. * OIDC_SCOPES
  113. * OIDC_PAGURE_EMAIL
  114. * OIDC_PAGURE_FULLNAME
  115. * OIDC_PAGURE_USERNAME
  116. * OIDC_PAGURE_SSH_KEY
  117. * OIDC_PAGURE_GROUPS
  118. * OIDC_PAGURE_USERNAME_FALLBACK
  119. From 3.10 to 3.11
  120. -----------------
  121. The release 3.11 brings some changes to the database schema.
  122. * Update the data schema using alembic: ``alembic upgrade head``
  123. In addition, if you are deploying pagure with fedmsg support you had to set
  124. fedmsg to the
  125. `active <http://www.fedmsg.com/en/stable/publishing/#publishing-through-a-relay>`_
  126. mode for the workers to be able to send fedmsg messages. This is now the
  127. default and forced configuration.
  128. New API acls:
  129. * commit_flag
  130. * pull_request_subscribe
  131. From 3.9 to 3.10
  132. ----------------
  133. The release 3.10 brings some changes to the database schema.
  134. * Update the data schema using alembic: ``alembic upgrade head``
  135. From 3.8 to 3.9
  136. ---------------
  137. This release brings a number of bug fixes and features but does not require
  138. any special precaution when upgrading.
  139. From 3.7 to 3.8
  140. ---------------
  141. The release 3.8 brings some changes to the database schema.
  142. * Update the data schema using alembic: ``alembic upgrade head``
  143. New configuration keys added:
  144. * PROJECT_NAME_REGEX
  145. From 3.6 to 3.7
  146. ---------------
  147. The release 3.7 brings some changes to the database schema.
  148. * Update the data schema using alembic: ``alembic upgrade head``
  149. New configuration keys added:
  150. * ENABLE_DEL_FORKS
  151. * ENABLE_UI_NEW_PROJECTS
  152. From 3.5 to 3.6
  153. ---------------
  154. New configuration keys added:
  155. * GITOLITE_CELERY_QUEUE
  156. From 3.4 to 3.5
  157. ---------------
  158. New configuration keys added:
  159. * USER_ACLS
  160. * CASE_SENSITIVE
  161. * HTML_TITLE
  162. From 3.3 to 3.4
  163. ---------------
  164. New configuration keys added:
  165. * DEPLOY_KEY
  166. * LOCAL_SSH_KEY
  167. * ALLOW_DELETE_BRANCH
  168. From 3.2 to 3.3
  169. ---------------
  170. [SECURITY FIX]: The 3.3 release contains an important security fix.
  171. If you are using the private project feature of pagure, the gitolite
  172. configuration generated was still granting access to the private projects. This
  173. made the private projects visible and accessible.
  174. After updating to 3.3, ensure your gitolite configuration gets re-generated
  175. (pagure-admin refresh-gitolite can help you with this).
  176. The 3.3 release brings some adjustments to the database schema.
  177. * Update the database schema using alembic: ``alembic upgrade head``
  178. From 3.1 to 3.2
  179. ---------------
  180. While not being a bug fix, this release has no database schema changes.
  181. However, this release breaks the plugin interface for auth introduced in 3.1 and
  182. changed in 3.1. If you are using pagure-dist-git, make sure to upgrade to at
  183. least 0.4. This interface will be considered stable in 3.4 and announced as
  184. such.
  185. From 3.0 to 3.1
  186. ---------------
  187. While not being a bug fix, this release has no database schema changes.
  188. However, this release breaks the plugin interface for auth introduced in 3.0. If
  189. you are using pagure-dist-git, make sure to upgrade to at least 0.3.
  190. From 2.15 to 3.0
  191. ----------------
  192. The 3.0 version was released with some major re-architecturing. The interaction
  193. with the backend git repo (being the main source repo or the tickets or requests
  194. repos) are now done by a worker that is triggered via a message queue.
  195. This communication is done using `celery <http://www.celeryproject.org/>`_ and
  196. via one of the message queue celery supports (pagure currently defaulting to
  197. `redis <https://redis.io/>`_.
  198. So to get pagure 3.0 running, you will need to get your own message queue (such
  199. as redis) up running and configured in pagure's configuration.
  200. This major version bump has also been an opportunity to rename all the services
  201. to use the same naming schema of pagure-<service>.
  202. The rename is as such:
  203. +------------------+-----------------+
  204. | In 2.x | From 3.0 |
  205. +==================+=================+
  206. | pagure-ci | pagure-ci |
  207. +------------------+-----------------+
  208. | ev-server | pagure-ev |
  209. +------------------+-----------------+
  210. | pagure-loadjson | pagure-loadjson |
  211. +------------------+-----------------+
  212. | pagure-logcom | pagure-logcom |
  213. +------------------+-----------------+
  214. | milters | pagure-milters |
  215. +------------------+-----------------+
  216. | webhook-server | pagure-webhook |
  217. +------------------+-----------------+
  218. | | pagure-worker |
  219. +------------------+-----------------+
  220. .. note:: This last service is the service mentioned above and it is part of
  221. pagure core, not optional unlike the other services in this table.
  222. This release also introduces some new configuration keys:
  223. - ``CELERY_CONFIG`` defaults to ``{}``
  224. - ``ATTACHMENTS_FOLDER``, to be configured
  225. - ``GITOLITE_BACKEND`` defaults to ``gitolite3``, deprecates ``GITOLITE_VERSION``
  226. - ``EXTERNAL_COMMITTER`` defaults to ``{}``
  227. - ``REQUIRED_GROUPS`` defaults to ``{}``
  228. This version also introduces a few database changes, so you will need to update
  229. the database schema using alembic: ``alembic upgrade head``.
  230. From 2.14 to 2.15
  231. -----------------
  232. The 2.15 release brings some adjustments to the database scheme.
  233. * Update the database schame using alembic: ``alembic upgrade head``
  234. From 2.13 to 2.14
  235. -----------------
  236. The 2.14 release brings some adjustments to the database scheme.
  237. * Update the database schame using alembic: ``alembic upgrade head``
  238. From 2.12 to 2.13
  239. -----------------
  240. The 2.13 release brings some adjustments to the database scheme.
  241. * Update the database schame using alembic: ``alembic upgrade head``
  242. From 2.11 to 2.12
  243. -----------------
  244. From this release on, we will have alembic migration script for new table
  245. creation, so there will no longer be a need to use ``createdb.py``
  246. The 2.12 release brings some adjustments to the database scheme.
  247. * Update the database schame using alembic: ``alembic upgrade head``
  248. From 2.10 to 2.11
  249. -----------------
  250. The 2.10 releases brings some adjustments to the database scheme.
  251. * Create the new DB tables and the new status field using the ``createdb.py``
  252. script.
  253. * Update the database schame using alembic: ``alembic upgrade head``
  254. From 2.9 to 2.10
  255. ----------------
  256. The 2.10 releases brings some little changes to the database scheme.
  257. Therefore when upgrading to 2.10, you will have to:
  258. * Update the database schame using alembic: ``alembic upgrade head``
  259. From 2.8 to 2.9
  260. ---------------
  261. The 2.9 releases brings some adjustments to the database scheme.
  262. * Create the new DB tables and the new status field using the ``createdb.py``
  263. script.
  264. * Update the database schame using alembic: ``alembic upgrade head``
  265. If you are interested in loading your local data into the ``pagure_logs`` table
  266. that this new release adds (data which is then displayed in the calendar heatmap
  267. on the user's page), you can find two utility scripts in
  268. https://pagure.io/pagure-utility that will help you to do that. They are:
  269. * fill_logs_from_db - Based on the data present in the database, this script
  270. fills the ``pagure_logs`` table (this will add: new ticket, new comment, new
  271. PR, closing a PR or a ticket and so on).
  272. * fill_logs_from_gits - By going through all the git repo hosted in your pagure
  273. instance, it will log who did what when.
  274. From 2.7 to 2.8
  275. ---------------
  276. 2.8 brings a little change to the database scheme.
  277. Therefore when upgrading to from 2.7 to 2.8, you will have to:
  278. * Update the database schame using alembic: ``alembic upgrade head``
  279. From 2.6 to 2.7
  280. ---------------
  281. 2.7 adds new tables as well as changes some of the existing ones.
  282. Therefore when upgrading to 2.7, you will have to:
  283. * Create the new DB tables and the new status field using the ``createdb.py``
  284. script.
  285. * Update the database schame using alembic, one of the upgrade will require
  286. access to pagure's configuration file, which should thus be passed onto the
  287. command via an environment variable:
  288. ``PAGURE_CONFIG=/path/to/pagure.cf alembic upgrade head``
  289. This release also brings a new configuration key:
  290. * ``INSTANCE_NAME`` used in the welcome screen shown upon first login (only with
  291. FAS and OpenID auth) to describe the instance
  292. The API has also been upgraded to a version ``0.8`` due to the changes (backward
  293. compatible) made to support the introduction of `close_status` to issues.
  294. From 2.5 to 2.6
  295. ---------------
  296. 2.6 brings quite a few changes and some of them impacting the database scheme.
  297. Therefore when upgrading from 2.4 to 2.6, you will have to:
  298. * Update the database schame using alembic: ``alembic upgrade head``
  299. From 2.4 to 2.5
  300. ---------------
  301. 2.5 brings quite a few changes and some of them impacting the database scheme.
  302. Therefore when upgrading from 2.4 to 2.5, you will have to:
  303. * Update the database schame using alembic: ``alembic upgrade head``
  304. From 2.3 to 2.4
  305. ---------------
  306. 2.4 brings quite a few changes and some of them impacting the database scheme.
  307. Therefore when upgrading from 2.3.x to 2.4, you will have to:
  308. * Update the database schame using alembic: ``alembic upgrade head``
  309. This update also brings some new configuration keys:
  310. * ``VIRUS_SCAN_ATTACHMENTS`` allows turning on or off checking attachments for
  311. virus using clamav. This requires pyclamd but is entirely optional (and off by
  312. default)
  313. * ``PAGURE_CI_SERVICES`` allows specifying with which CI (Continuous
  314. Integration) services this pagure instance can integrate with. Currently, only
  315. `Jenkins` is supported, but this configuration key defaults to ``None``.
  316. From 2.2 to 2.3
  317. ---------------
  318. 2.3 brings a few changes impacting the database scheme, including a new
  319. `duplicate` status for tickets, a feature allowing one to `watch` or
  320. `unwatch` a project and notifications on tickets as exist on pull-requests.
  321. Therefore, when upgrading from 2.2.x to 2.3, you will have to :
  322. * Create the new DB tables and the new status field using the ``createdb.py`` script.
  323. * Update the database schame using alembic: ``alembic upgrade head``
  324. This update also brings a new configuration key:
  325. * ``PAGURE_ADMIN_USERS`` allows to mark some users as instance-wide admins, giving
  326. them full access to every projects, private or not. This feature can then be
  327. used as a way to clean spams.
  328. * ``SMTP_PORT`` allows to specify the port to use when contacting the SMTP
  329. server
  330. * ``SMTP_SSL`` allows to specify whether to use SSL when contacting the SMTP
  331. server
  332. * ``SMTP_USERNAME`` and ``SMTP_PASSWORD`` if provided together allow to contact
  333. an SMTP requiring authentication.
  334. In this update is also added the script ``api_key_expire_mail.py`` meant to be
  335. run by a daily cron job and warning users when their API token is nearing its
  336. expiration date.
  337. 2.2.2
  338. -----
  339. Release 2.2.2 contains an important security fix, blocking a source of XSS
  340. attack.
  341. From 2.1 to 2.2
  342. ---------------
  343. 2.2 brings a number of bug fixes and a few improvements.
  344. One of the major changes impacts the databases where we must change some of the
  345. table so that the foreign key cascade on delete (fixes deleting a project when a
  346. few plugins were activated).
  347. When upgrading for 2.1 to 2.2 all you will have to do is:
  348. * Update the database scheme using alembic: ``alembic upgrade head``
  349. .. note:: If you run another database system than PostgreSQL the alembic
  350. revision ``317a285e04a8_delete_hooks.py`` will require adjustment as the
  351. foreign key constraints are named and the names are driver dependant.
  352. From 2.0 to 2.1
  353. ---------------
  354. 2.1 brings its usual flow of improvements and bug fixes.
  355. When upgrading from 2.0.x to 2.1 all you will have to:
  356. * Update the database schame using alembic: ``alembic upgrade head``
  357. From 1.x to 2.0
  358. ---------------
  359. As the version change indicates, 2.0 brings quite a number of changes,
  360. including some that are not backward compatible.
  361. When upgrading to 2.0 you will have to:
  362. * Update the database schema using alembic: ``alembic upgrade head``
  363. * Create the new DB tables so that the new plugins work using the
  364. ``createdb.py`` script
  365. * Move the forks git repo
  366. Forked git repos are now located under the same folder as the regular git
  367. repos, just under a ``forks/`` subfolder.
  368. So the structure changes from: ::
  369. repos/
  370. ├── foo.git
  371. └── bar.git
  372. forks/
  373. ├── patrick/
  374. │  ├── test.git
  375. │  └── ipsilon.git
  376. └── pingou/
  377. ├── foo.git
  378. └── bar.git
  379. to: ::
  380. repos/
  381. ├── foo.git
  382. ├── bar.git
  383. └── forks/
  384. ├── patrick/
  385. │  ├── test.git
  386. │  └── ipsilon.git
  387. └── pingou/
  388. ├── foo.git
  389. └── bar.git
  390. So the entire ``forks`` folder is moved under the ``repos`` folder where
  391. the other repositories are, containing the sources of the projects.
  392. Git repos for ``tickets``, ``requests`` and ``docs`` will be trickier to
  393. move as the structure changes from: ::
  394. tickets/
  395. ├── foo.git
  396. ├── bar.git
  397. ├── patrick/
  398. │  ├── test.git
  399. │  └── ipsilon.git
  400. └── pingou/
  401. ├── foo.git
  402. └── bar.git
  403. to: ::
  404. tickets/
  405. ├── foo.git
  406. ├── bar.git
  407. └── forks/
  408. ├── patrick/
  409. │  ├── test.git
  410. │  └── ipsilon.git
  411. └── pingou/
  412. ├── foo.git
  413. └── bar.git
  414. Same for the ``requests`` and the ``docs`` git repos.
  415. As you can see in the ``tickets``, ``requests`` and ``docs`` folders there
  416. are two types of folders, git repos which are folder with a name ending
  417. with ``.git``, and folder corresponding to usernames. These last ones are
  418. the ones to be moved into a subfolder ``forks/``.
  419. This can be done using something like: ::
  420. mkdir forks
  421. for i in `ls -1 |grep -v '\.git'`; do mv $i forks/; done
  422. * Re-generate the gitolite configuration.
  423. This can be done via the ``Re-generate gitolite ACLs file`` button in the
  424. admin page.
  425. * Keep URLs backward compatible
  426. The support of pseudo-namespace in pagure 2.0 has required some changes
  427. to the URL schema:
  428. https://pagure.io/pagure/053d8cc95fcd50c23a8b0a7f70e55f8d1cc7aebb
  429. became:
  430. https://pagure.io/pagure/c/053d8cc95fcd50c23a8b0a7f70e55f8d1cc7aebb
  431. (Note the added /c/ in it)
  432. We introduced a backward compatibility fix for this.
  433. This fix is however *disabled* by default so if you wish to keep the URLs
  434. valid, you will need to adjust you configuration file to include: ::
  435. OLD_VIEW_COMMIT_ENABLED = True