From 1c4efe158286dcfb18efca0d2cc8bbbe168ad743 Mon Sep 17 00:00:00 2001 From: Alexis Lefebvre Date: Wed, 14 Sep 2022 15:15:06 +0200 Subject: [PATCH 1/4] use example.com instead of foo.com (#1188) http://example.com/ is a reserved domain name, which is perfect for examples, while foo.com is a random domain name --- .../20-usage/51-plugins/20-sample-plugin.md | 4 +- docs/docs/30-administration/60-ssl.md | 129 ------------------ .../20-usage/51-plugins/20-sample-plugin.md | 4 +- .../version-0.15/30-administration/60-ssl.md | 22 +-- .../frontend/yaml/compiler/option_test.go | 2 +- 5 files changed, 16 insertions(+), 145 deletions(-) delete mode 100644 docs/docs/30-administration/60-ssl.md diff --git a/docs/docs/20-usage/51-plugins/20-sample-plugin.md b/docs/docs/20-usage/51-plugins/20-sample-plugin.md index 255bc8b8e..d7bf5918d 100644 --- a/docs/docs/20-usage/51-plugins/20-sample-plugin.md +++ b/docs/docs/20-usage/51-plugins/20-sample-plugin.md @@ -11,7 +11,7 @@ pipeline: webhook: image: foo/webhook settings: - url: http://foo.com + url: http://example.com method: post body: | hello world @@ -54,7 +54,7 @@ Execute your plugin locally from the command line to verify it is working: ```nohighlight docker run --rm \ -e PLUGIN_METHOD=post \ - -e PLUGIN_URL=http://foo.com \ + -e PLUGIN_URL=http://example.com \ -e PLUGIN_BODY="hello world" \ foo/webhook ``` diff --git a/docs/docs/30-administration/60-ssl.md b/docs/docs/30-administration/60-ssl.md deleted file mode 100644 index 466cd2434..000000000 --- a/docs/docs/30-administration/60-ssl.md +++ /dev/null @@ -1,129 +0,0 @@ -# SSL - -Woodpecker supports two ways of enabling SSL communication. You can either use Let's Encrypt to get automated SSL support with -renewal or provide your own SSL certificates. - -## Let's Encrypt - -Woodpecker supports automated SSL configuration and updates using Let's Encrypt. - -You can enable Let's Encrypt by making the following modifications to your server configuration: - -```diff -# docker-compose.yml -version: '3' - -services: - woodpecker-server: - [...] - ports: -+ - 80:80 -+ - 443:443 - - 9000:9000 - environment: - - [...] -+ - WOODPECKER_LETS_ENCRYPT=true -+ - WOODPECKER_LETS_ENCRYPT_EMAIL=ssl-admin@example.tld -``` - -Note that Woodpecker uses the hostname from the `WOODPECKER_HOST` environment variable when requesting certificates. For example, if `WOODPECKER_HOST=https://foo.com` is set the certificate is requested for `foo.com`. To receive emails before certificates expire Let's Encrypt requires an email address. You can set it with `WOODPECKER_LETS_ENCRYPT_EMAIL=ssl-admin@example.tld`. - -The SSL certificates are stored in `$HOME/.local/share/certmagic` for binary versions of Woodpecker and in `/var/lib/woodpecker` for the Container versions of it. You can set a custom path by setting `XDG_DATA_HOME` if required. - -> Once enabled you can visit the Woodpecker UI with http and the HTTPS address. HTTP will be redirected to HTTPS. - -### Certificate Cache - -Woodpecker writes the certificates to `/var/lib/woodpecker/certmagic/`. - -### Certificate Updates - -Woodpecker uses the official Go acme library which will handle certificate upgrades. There should be no addition configuration or management required. - -## SSL with own certificates - -Woodpecker supports ssl configuration by mounting certificates into your container. - -```diff -# docker-compose.yml -version: '3' - -services: - woodpecker-server: - [...] - ports: -+ - 80:80 -+ - 443:443 - - 9000:9000 - volumes: -+ - /etc/certs/woodpecker.foo.com/server.crt:/etc/certs/woodpecker.foo.com/server.crt -+ - /etc/certs/woodpecker.foo.com/server.key:/etc/certs/woodpecker.foo.com/server.key - environment: - - [...] -+ - WOODPECKER_SERVER_CERT=/etc/certs/woodpecker.foo.com/server.crt -+ - WOODPECKER_SERVER_KEY=/etc/certs/woodpecker.foo.com/server.key -``` - -Update your configuration to expose the following ports: - -```diff -# docker-compose.yml -version: '3' - -services: - woodpecker-server: - [...] - ports: -+ - 80:80 -+ - 443:443 - - 9000:9000 -``` - -Update your configuration to mount your certificate and key: - -```diff -# docker-compose.yml -version: '3' - -services: - woodpecker-server: - [...] - ports: - - 80:80 - - 443:443 - - 9000:9000 - volumes: -+ - /etc/certs/woodpecker.foo.com/server.crt:/etc/certs/woodpecker.foo.com/server.crt -+ - /etc/certs/woodpecker.foo.com/server.key:/etc/certs/woodpecker.foo.com/server.key -``` - -Update your configuration to provide the paths of your certificate and key: - -```diff -# docker-compose.yml -version: '3' - -services: - woodpecker-server: - [...] - ports: - - 80:80 - - 443:443 - - 9000:9000 - volumes: - - /etc/certs/woodpecker.foo.com/server.crt:/etc/certs/woodpecker.foo.com/server.crt - - /etc/certs/woodpecker.foo.com/server.key:/etc/certs/woodpecker.foo.com/server.key - environment: -+ - WOODPECKER_SERVER_CERT=/etc/certs/woodpecker.foo.com/server.crt -+ - WOODPECKER_SERVER_KEY=/etc/certs/woodpecker.foo.com/server.key -``` - -### Certificate Chain - -The most common problem encountered is providing a certificate file without the intermediate chain. - -> LoadX509KeyPair reads and parses a public/private key pair from a pair of files. The files must contain PEM encoded data. The certificate file may contain intermediate certificates following the leaf certificate to form a certificate chain. - -### Certificate Errors - -SSL support is provided using the [ListenAndServeTLS](https://golang.org/pkg/net/http/#ListenAndServeTLS) function from the Go standard library. If you receive certificate errors or warnings please examine your configuration more closely. diff --git a/docs/versioned_docs/version-0.15/20-usage/51-plugins/20-sample-plugin.md b/docs/versioned_docs/version-0.15/20-usage/51-plugins/20-sample-plugin.md index e5a3b1f87..0d9642d12 100644 --- a/docs/versioned_docs/version-0.15/20-usage/51-plugins/20-sample-plugin.md +++ b/docs/versioned_docs/version-0.15/20-usage/51-plugins/20-sample-plugin.md @@ -11,7 +11,7 @@ pipeline: webhook: image: foo/webhook settings: - url: http://foo.com + url: http://example.com method: post body: | hello world @@ -54,7 +54,7 @@ Execute your plugin locally from the command line to verify it is working: ```nohighlight docker run --rm \ -e PLUGIN_METHOD=post \ - -e PLUGIN_URL=http://foo.com \ + -e PLUGIN_URL=http://example.com \ -e PLUGIN_BODY="hello world" \ foo/webhook ``` diff --git a/docs/versioned_docs/version-0.15/30-administration/60-ssl.md b/docs/versioned_docs/version-0.15/30-administration/60-ssl.md index 8af876931..4357e0ca7 100644 --- a/docs/versioned_docs/version-0.15/30-administration/60-ssl.md +++ b/docs/versioned_docs/version-0.15/30-administration/60-ssl.md @@ -26,7 +26,7 @@ services: + - WOODPECKER_LETS_ENCRYPT=true ``` -Note that Woodpecker uses the hostname from the `WOODPECKER_HOST` environment variable when requesting certificates. For example, if `WOODPECKER_HOST=https://foo.com` the certificate is requested for `foo.com`. +Note that Woodpecker uses the hostname from the `WOODPECKER_HOST` environment variable when requesting certificates. For example, if `WOODPECKER_HOST=https://example.com` the certificate is requested for `example.com`. >Once enabled you can visit your website at both the http and the https address @@ -58,12 +58,12 @@ services: + - 443:443 - 9000:9000 volumes: -+ - /etc/certs/woodpecker.foo.com/server.crt:/etc/certs/woodpecker.foo.com/server.crt -+ - /etc/certs/woodpecker.foo.com/server.key:/etc/certs/woodpecker.foo.com/server.key ++ - /etc/certs/woodpecker.example.com/server.crt:/etc/certs/woodpecker.example.com/server.crt ++ - /etc/certs/woodpecker.example.com/server.key:/etc/certs/woodpecker.example.com/server.key environment: - [...] -+ - WOODPECKER_SERVER_CERT=/etc/certs/woodpecker.foo.com/server.crt -+ - WOODPECKER_SERVER_KEY=/etc/certs/woodpecker.foo.com/server.key ++ - WOODPECKER_SERVER_CERT=/etc/certs/woodpecker.example.com/server.crt ++ - WOODPECKER_SERVER_KEY=/etc/certs/woodpecker.example.com/server.key ``` Update your configuration to expose the following ports: @@ -95,8 +95,8 @@ services: - 443:443 - 9000:9000 volumes: -+ - /etc/certs/woodpecker.foo.com/server.crt:/etc/certs/woodpecker.foo.com/server.crt -+ - /etc/certs/woodpecker.foo.com/server.key:/etc/certs/woodpecker.foo.com/server.key ++ - /etc/certs/woodpecker.example.com/server.crt:/etc/certs/woodpecker.example.com/server.crt ++ - /etc/certs/woodpecker.example.com/server.key:/etc/certs/woodpecker.example.com/server.key ``` Update your configuration to provide the paths of your certificate and key: @@ -113,11 +113,11 @@ services: - 443:443 - 9000:9000 volumes: - - /etc/certs/woodpecker.foo.com/server.crt:/etc/certs/woodpecker.foo.com/server.crt - - /etc/certs/woodpecker.foo.com/server.key:/etc/certs/woodpecker.foo.com/server.key + - /etc/certs/woodpecker.example.com/server.crt:/etc/certs/woodpecker.example.com/server.crt + - /etc/certs/woodpecker.example.com/server.key:/etc/certs/woodpecker.example.com/server.key environment: -+ - WOODPECKER_SERVER_CERT=/etc/certs/woodpecker.foo.com/server.crt -+ - WOODPECKER_SERVER_KEY=/etc/certs/woodpecker.foo.com/server.key ++ - WOODPECKER_SERVER_CERT=/etc/certs/woodpecker.example.com/server.crt ++ - WOODPECKER_SERVER_KEY=/etc/certs/woodpecker.example.com/server.key ``` ### Certificate Chain diff --git a/pipeline/frontend/yaml/compiler/option_test.go b/pipeline/frontend/yaml/compiler/option_test.go index 52f0f0c9f..19b91f297 100644 --- a/pipeline/frontend/yaml/compiler/option_test.go +++ b/pipeline/frontend/yaml/compiler/option_test.go @@ -161,7 +161,7 @@ func TestWithProxy(t *testing.T) { } // alter the default values - noProxy = "foo.com" + noProxy = "example.com" httpProxy = "bar.com" httpsProxy = "baz.com" From 8fa3b48c51c91acb377bb8a839ae33acccebbbf1 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 13 Sep 2022 11:53:10 +0000 Subject: [PATCH 2/4] Translated using Weblate (French) Currently translated at 88.2% (166 of 188 strings) Translation: Woodpecker CI/UI Translate-URL: http://translate.woodpecker-ci.org/projects/woodpecker-ci/ui/fr/ --- web/src/assets/locales/fr.json | 112 +++++++++++++++++++++++++++++++-- 1 file changed, 107 insertions(+), 5 deletions(-) diff --git a/web/src/assets/locales/fr.json b/web/src/assets/locales/fr.json index 585e9b8b5..d404717fb 100644 --- a/web/src/assets/locales/fr.json +++ b/web/src/assets/locales/fr.json @@ -1,4 +1,30 @@ { + "admin": { + "settings": { + "not_allowed": "Vous n'êtes pas autorisé à accéder aux réglages du serveur", + "secrets": { + "add": "Ajouter un secret", + "created": "Secret global crée", + "deleted": "Secret global effacé", + "events": { + "events": "Disponible pour les événements suivants", + "pr_warning": "Faites attention avec cette option car un acteur malicieux peut soumettre une pull request qui révélerait vos secrets." + }, + "images": { + "images": "Disponible pour les images suivantes" + }, + "name": "Nom", + "none": "Il n'y a pas de secrets globaux.", + "save": "Enregistrer un secret", + "saved": "Secret global enregistré", + "secrets": "Secrets", + "show": "Afficher les secrets", + "value": "Valeur", + "warning": "Ces secrets seront disponibles pour tout les comptes du serveur." + }, + "settings": "Réglages" + } + }, "docs": "Docs", "login": "Connexion", "logout": "Déconnexion", @@ -6,6 +32,30 @@ "back_home": "Retour à l'accueil", "not_found": "Whoa 404, soit nous avons cassé quelque chose ou vous avez fait une faute de frappe :-/" }, + "org": { + "settings": { + "not_allowed": "Vous n’êtes pas autorisé à accéder aux réglages de cette organisation", + "secrets": { + "add": "Ajouter un secret", + "created": "Secret d'organisation crée", + "deleted": "Secret d'organisation effacé", + "events": { + "events": "Disponible pour les événements suivants" + }, + "images": { + "images": "Disponible pour les images suivantes" + }, + "name": "Nom", + "none": "Il n'y a pas de secrets d'organisation.", + "save": "Enregistrer un secret", + "saved": "Secret d'organisation enregistré", + "secrets": "Secrets", + "show": "Afficher les secrets", + "value": "Valeur" + }, + "settings": "Réglages" + } + }, "password": "Mot de passe", "repo": { "activity": "Activité", @@ -13,9 +63,31 @@ "branches": "Branches", "build": { "actions": { - "cancel": "Annuler" + "cancel": "Annuler", + "canceled": "Cette étape a été annulée.", + "log_auto_scroll": "Automatiquement défiler vers le bas", + "log_auto_scroll_off": "Désactiver le défilement automatique", + "log_download": "Télécharger", + "restart": "Redémarrer" }, "config": "Configuration", + "created": "Crée", + "event": { + "cron": "Tache périodique", + "deploy": "Déploiement", + "tag": "Tag" + }, + "execution_error": "Erreur d'execution", + "exit_code": "Code de retour {exitCode}", + "files": "Fichiers changés ({files})", + "loading": "Chargement…", + "log_download_error": "Il y a eu une erreur lors du téléchargement du fichier de journal", + "no_files": "Aucun fichier n'a été modifié.", + "protected": { + "approve": "Approuver", + "decline": "Refuser" + }, + "step_not_started": "L'étape n'a pas démarré encore.", "tasks": "Tâches" }, "enable": { @@ -29,17 +101,29 @@ "settings": { "actions": { "actions": "Actions", + "delete": { + "confirm": "Toutes les données vont être perdues aprés cette action ! ! !\n\nVoulez vous vraiment continuer ?", + "delete": "Effacer le dépôt", + "success": "Dépôt effacé" + }, + "disable": { + "disable": "Désactiver le dépôt", + "success": "Dépôt désactivé" + }, "repair": { - "repair": "Réparer un dépôt" + "repair": "Réparer un dépôt", + "success": "Dépôt réparé" } }, "badge": { "badge": "Badge", - "markdown": "Markdown" + "markdown": "Markdown", + "url_branch": "URL pour la branche spécifique" }, "crons": { "add": "Ajouter une tâche planifiée", "branch": { + "placeholder": "Branche (utilise la branche par défaut si non renseigné)", "title": "Branche" }, "created": "Tâche planifiée crée", @@ -47,10 +131,12 @@ "deleted": "Tâche planifiée effacée", "desc": "Les tâches planifiées peuvent déclencher des pipelines à intervalles réguliers.", "name": { - "name": "Nom" + "name": "Nom", + "placeholder": "Nom de la tache périodique" }, "next_exec": "Prochaine exécution", "none": "Il n'y a pas de tâche planifié pour le moment.", + "not_executed_yet": "Non exécuté pour le moment", "save": "Enregistrer la tâche planifiée", "saved": "Tâche planifiée enregistrée", "schedule": { @@ -61,7 +147,11 @@ }, "general": { "allow_pr": { - "allow": "Autoriser les demandes de fusions" + "allow": "Autoriser les demandes de fusions", + "desc": "Les pipelines peuvent se déclencher sur les pull requests." + }, + "cancel_prev": { + "cancel": "Annuler les pipelines précédents" }, "general": "Générale", "pipeline_path": { @@ -71,6 +161,7 @@ }, "project": "Paramètres du projet", "protected": { + "desc": "Chaque pipeline doit être approuvé avant d'être exécuté.", "protected": "Protégé" }, "save": "Enregistrer les paramètres", @@ -80,6 +171,7 @@ "timeout": "Délai d’inactivité" }, "trusted": { + "desc": "Les conteneurs du pipeline ont accès à des capacités privilégiées comme le fait de monter un volume.", "trusted": "Vérifié" }, "visibility": { @@ -151,6 +243,16 @@ }, "unknown_error": "Une erreur inconnue est survenue", "url": "URL", + "user": { + "access_denied": "Vous n'êtes pas autorisé à vous connecter", + "api_usage": "Exemple d'utilisation de l'API", + "cli_usage": "Exemple d'utilisation de la ligne de commande", + "dl_cli": "Télécharger l'interface en ligne de commande", + "internal_error": "Une erreur interne est arrivé", + "oauth_error": "Erreur lors de l’authentification auprès du fournisseur OAuth", + "shell_setup": "Utilisation avec un shell", + "token": "Votre jeton personnel" + }, "username": "Nom d'utilisateur", "welcome": "Bienvenue sur Woodpecker" } From 66f666ab35f495fbcea7a263663d57a5d9e40360 Mon Sep 17 00:00:00 2001 From: Daniele Tricoli Date: Wed, 14 Sep 2022 11:23:49 +0000 Subject: [PATCH 3/4] Translated using Weblate (Italian) Currently translated at 23.4% (44 of 188 strings) Translation: Woodpecker CI/UI Translate-URL: http://translate.woodpecker-ci.org/projects/woodpecker-ci/ui/it/ --- web/src/assets/locales/it.json | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/web/src/assets/locales/it.json b/web/src/assets/locales/it.json index 6a9fc4bba..45e36bf7e 100644 --- a/web/src/assets/locales/it.json +++ b/web/src/assets/locales/it.json @@ -9,6 +9,11 @@ "repo": { "activity": "Attività", "add": "Aggiungi repository", + "build": { + "actions": { + "cancel": "Annulla" + } + }, "enable": { "enable": "Abilita", "enabled": "Già abilitato", @@ -18,11 +23,30 @@ }, "not_allowed": "Non è permesso accedere a questo repository", "settings": { + "actions": { + "actions": "Azioni" + }, + "crons": { + "name": { + "name": "Nome" + }, + "next_exec": "Prossima esecuzione", + "not_executed_yet": "Non ancora eseguito" + }, "general": { "general": "Generale", + "pipeline_path": { + "default": "Predefinito: .woodpecker/*.yml -> .woodpecker.yml -> .drone.yml" + }, "project": "Impostazioni del progetto", + "protected": { + "protected": "Protetto" + }, "save": "Salva le impostazioni", "success": "Le impostazioni del repository sono state aggiornate", + "timeout": { + "minutes": "minuti" + }, "visibility": { "internal": { "desc": "Solo gli utenti dell'istanza Woodpecker che hanno effettuato l'accesso possono vedere questo progetto.", @@ -50,6 +74,9 @@ "repos": "Repository", "repositories": "Repository", "search": "Cerca…", + "time": { + "not_started": "non ancora avviato" + }, "unknown_error": "Si è verificato un errore sconosciuto", "url": "URL", "username": "Nome utente", From 927d1cdddcade313b3e9fe718163bf9ea4609da9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E6=98=82?= Date: Tue, 13 Sep 2022 06:02:14 +0000 Subject: [PATCH 4/4] Translated using Weblate (Chinese (Simplified)) Currently translated at 94.1% (177 of 188 strings) Translation: Woodpecker CI/UI Translate-URL: http://translate.woodpecker-ci.org/projects/woodpecker-ci/ui/zh_Hans/ --- web/src/assets/locales/zh_Hans.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/assets/locales/zh_Hans.json b/web/src/assets/locales/zh_Hans.json index a46f247a7..84a626fae 100644 --- a/web/src/assets/locales/zh_Hans.json +++ b/web/src/assets/locales/zh_Hans.json @@ -173,7 +173,7 @@ "desc": "流水线配置文件的路径 (例子: my/path/)。目录必须以 / 结尾.", "path": "流水线路径" }, - "project": "运行设置", + "project": "项目设置", "protected": { "desc": "每个流水线都需要在执行之前获得批准。", "protected": "受保护"