Developing Discourse on GitHub Codespaces

GitHub Codespaces is a very fast way to get started with Discourse development. Their free tier is good for 30 hours per month of a 4-core machine.

Getting Started

  1. Navigate to the github repository

  2. Press the , (comma) key on your keyboard, to open GitHub codespaces

  3. Use ‘change options’ to customize the machine. Technically, the 2-core machine will work, but we recommend using at least 4-core for a better experience.

  4. Click “Create Codespace”

  5. Wait for the container to download and start. When it’s done, the README will appear, and you’ll see the Discourse filesystem in the sidebar.

  6. Run the default build task using Ctrl + Shift + B (Cmd + Shift + B on mac).

    This will install dependencies, migrate the database, and start the server. It’ll take a few minutes, especially on the lower-end machines. You’ll see “Build successful” in the terminal when it’s done.

  7. Visit the “Ports” tab, and click the :globe_with_meridians: button for port 4200. This will open a new tab showing your development copy of Discourse

  8. All done! You can now make changes in the codespace and see them reflected in the preview.

The VSCode environment will automatically be configured with our recommended settings and extensions, including automatic linting and formatting.

To minimize usage, make sure to run “Codespaces: Stop Current Codespace” from the command palette (Ctrl + Shift + P or Cmd + Shift + P) when you’re finished. If you forget to do this, the Codespace should be shut down automatically after your account’s configured idle time (default 30 mins). But, there are some situations where the codespace will not be detected as idle, so it’s best to stop it deliberately.

Tips

  • You can launch a codespace from specific branches/PRs - just visit it, and press ,

  • You can manage all your codespaces at Sign in to GitHub · GitHub

  • Discourse’s sample vscode .vscode/settings.json and .vscode/tasks.json will be copied when you first boot the codespace. From that point forward, if you want to use the latest sample config, you’ll need to manually copy .vscode/settings.json.sample to .vscode/settings.json.


This document is version controlled - suggest changes on github.

12 « J'aime »

J’ai trouvé un problème : il crée les catégories suivantes au démarrage :
Général, Staff, Staff67d17c71d8026b365c4c6657a9a9b5eb, et Général (suivi d’une chaîne aléatoire et de chiffres).
Ceux avec la chaîne aléatoire et les chiffres ne pourraient-ils pas être créés ? Je pourrais supprimer le clone de Général, mais pas le clone de Staff, car il contient le sujet FAQ (celui-ci est également dans la catégorie Staff normale, donc il n’y a aucun intérêt).

Edit : Site Feedbackee4d95d3ac0267109c01ed5438943e6c est également créé, bien qu’il existe déjà un Site feedback. Uncategorized a également un clone.

1 « J'aime »

Cela me rappelle Random string in category name

2 « J'aime »

Lors de la sauvegarde de la base de données, j’obtiens cette erreur :

[2024-12-12 10:31:26] [STARTED]
[2024-12-12 10:31:26] 'system' a démarré la sauvegarde !
[2024-12-12 10:31:26] Marquage de la sauvegarde comme en cours...
[2024-12-12 10:31:26] Assurez-vous que '/workspace/discourse/tmp/backups/default/2024-12-12-103126' existe...
[2024-12-12 10:31:26] Assurez-vous que '/workspace/discourse/public/backups/default' existe...
[2024-12-12 10:31:26] Mise à jour des métadonnées...
[2024-12-12 10:31:27] Vidage du schéma public de la base de données...
[2024-12-12 10:31:28] pg_dump : erreur : la connexion à la base de données « discourse_development » a échoué : la connexion au serveur sur le socket « /var/run/postgresql/.s.PGSQL.5432 » a échoué : FATAL : échec de l'authentification par identifiant pour l'utilisateur « postgres »
[2024-12-12 10:31:28] EXCEPTION : pg_dump a échoué
[2024-12-12 10:31:28] /workspace/discourse/lib/backup_restore/backuper.rb:173:in `dump_public_schema'
/workspace/discourse/lib/backup_restore/backuper.rb:36:in `run'
/workspace/discourse/lib/backup_restore.rb:13:in `backup!'
/workspace/discourse/app/jobs/regular/create_backup.rb:10:in `execute'
/workspace/discourse/app/jobs/base.rb:322:in `block (2 levels) in perform'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/workspace/discourse/app/jobs/base.rb:309:in `block in perform'
/workspace/discourse/app/jobs/base.rb:305:in `each'
/workspace/discourse/app/jobs/base.rb:305:in `perform'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:202:in `execute_job'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:170:in `block (2 levels) in process'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:177:in `block in invoke'
/workspace/discourse/lib/sidekiq/pausable.rb:132:in `call'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:179:in `block in invoke'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:182:in `invoke'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:169:in `block in process'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_retry.rb:113:in `local'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq.rb:44:in `block in <module:Sidekiq>'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:263:in `stats'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_logger.rb:13:in `call'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_retry.rb:80:in `global'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:124:in `block in dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_logger.rb:39:in `prepare'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:123:in `dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:168:in `process'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:78:in `process_one'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:68:in `run'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/component.rb:8:in `watchdog'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/component.rb:17:in `block in safe_thread'
[2024-12-12 10:31:28] Nettoyage...
[2024-12-12 10:31:28] Suppression des restes de '.tar'...
[2024-12-12 10:31:28] Marquage de la sauvegarde comme terminée...
[2024-12-12 10:31:28] Notification de 'system' de la fin de la sauvegarde...

Cela se produit chaque fois que je démarre le forum avec bin/ember-cli-u.

Lorsque je clique sur Sauvegarde dans le panneau d’administration, j’obtiens :

[2024-12-12 10:34:57] [STARTED]
[2024-12-12 10:34:57] 'NateDhaliwal' a démarré la sauvegarde !
[2024-12-12 10:34:57] Marquage de la sauvegarde comme en cours...
[2024-12-12 10:34:57] Assurez-vous que '/workspace/discourse/tmp/backups/default/2024-12-12-103457' existe...
[2024-12-12 10:34:57] Assurez-vous que '/workspace/discourse/public/backups/default' existe...
[2024-12-12 10:34:57] Mise à jour des métadonnées...
[2024-12-12 10:34:57] Vidage du schéma public de la base de données...
[2024-12-12 10:34:57] pg_dump : erreur : la connexion à la base de données « discourse_development » a échoué : la connexion au serveur sur le socket « /var/run/postgresql/.s.PGSQL.5432 » a échoué : FATAL : échec de l'authentification par identifiant pour l'utilisateur « postgres »
[2024-12-12 10:34:57] EXCEPTION : pg_dump a échoué
[2024-12-12 10:34:57] /workspace/discourse/lib/backup_restore/backuper.rb:173:in `dump_public_schema'
/workspace/discourse/lib/backup_restore/backuper.rb:36:in `run'
/workspace/discourse/script/spawn_backup_restore.rb:9:in `backup'
/workspace/discourse/script/spawn_backup_restore.rb:31:in `block in <main>'
/workspace/discourse/script/spawn_backup_restore.rb:4:in `fork'
/workspace/discourse/script/spawn_backup_restore.rb:4:in `<main>'
[2024-12-12 10:34:57] Nettoyage...
[2024-12-12 10:34:57] Suppression des restes de '.tar'...
[2024-12-12 10:34:57] Marquage de la sauvegarde comme terminée...
[2024-12-12 10:34:57] Notification de 'NateDhaliwal' de la fin de la sauvegarde...

quand j’essaie de le changer de principal à devcontainer comme le montre l’image, je n’obtiens rien, il est indiqué aucun résultat

Si vous parlez de la branche « devcontainer » montrée dans le pied de page de la deuxième image, alors vous devriez l’ignorer. Les captures d’écran ont été prises avant que la configuration devcontainer ne soit disponible sur la branche main.

Merci David

avant de l’appuyer, vous devez créer un compte administrateur dans le code. Quelqu’un peut-il m’envoyer des images montrant comment faire, car j’ai enfin un moyen d’accéder à mon propre Discourse, mais je ne peux pas le faire sans savoir comment le configurer, alors quelqu’un peut-il me donner des images pour que je puisse voir comment faire.

Vous pouvez utiliser les étapes décrites dans les autres installations non basées sur Docker, comme Install Discourse on Ubuntu or Debian for Development

La commande pour créer un compte administrateur est bin/rails admin:create et vous suivez ensuite les instructions.

3 « J'aime »

ça a fonctionné merci beaucoup j’ai maintenant mon propre forum

@david des idées pour ça ? J’ai toujours cette erreur.

Ce système fonctionne-t-il avec des plugins Discourse ? Peut-il le faire ?

Oui, j’ai essayé et les plugins fonctionnent avec cela.
Il peut être installé par :

J’ai installé le vote par message, le vote par sujet et la gamification, et ils fonctionnent jusqu’à présent.

3 « J'aime »

Oui, c’est simplement l’exécution de notre conteneur Docker standard dans le cloud, donc vous pouvez cd vers le répertoire des plugins et cloner ce que vous voulez.

Un jour, il serait peut-être agréable que nous puissions avoir une configuration dans les dépôts individuels de plugins, afin que l’environnement des espaces de code puisse être lancé directement depuis leurs dépôts.

6 « J'aime »

Je ne sais pas si cela est lié à Codespaces ou simplement à un environnement Linux, mais lorsque je me connecte et me déconnecte en usurpant l’identité d’un utilisateur et en passant d’un utilisateur à l’autre, bin/ember-cli -u se termine simplement, sans aucun journal indiquant les erreurs qui auraient pu en être la cause. Et le codespace est à jour avec le dépôt Discourse.