Deploy to one server page, and create-cwa's new questions

Đang mở
#314 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
40/100
Loại issue
Tài liệu
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
docker, github-actions, gitlab, kubernetes, shell
Lĩnh vực
cli, devops, documentation

Hướng nghiên cứu

Start with the scripts this page describes: bin/server/init, bin/server/deploy.sh, bin/server/backup.sh, bin/server/restore.sh, bin/server/cron.example, bin/devops/server-deploy.sh and the server.yml workflow, plus commits 1aec0c9 and d84cbe7 in components-web-app. Done means a new deployment page marked as preview that covers setup, first deploy, later deploys, the CI variables, backups and the move to Kubernetes, and create-cwa docs that cover the new questions and flags.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

From components-web-app #212, now on main (commits 1aec0c9 and d84cbe7, in the next release). The docs describe current main.

1. A "Deploy to one server" page (new, under deployment). Mark it as a preview: no production site has run on it yet.

  • Server setup: Docker with the compose plugin, rsync and curl, and a deploy user in the docker group with the pipeline's public key.
  • First deploy: run the CI job once, which copies the files and then stops. On the server, run cd cwa && sh bin/server/init (it writes .env.prod, mode 600: secrets, JWT keys, SITE_HOST, SITE_ALIASES, MAILER_DSN), then sh bin/server/deploy.sh --fixtures.
  • Every later deploy is GitLab's manual production server job or GitHub's "Deploy to server" workflow (server.yml). Both run bin/devops/server-deploy.sh, which copies the commit with rsync and runs bin/server/deploy.sh there. That builds, backs up before pending migrations, starts app then php, purges, generates image variants and warms the cache. rsync never sends or deletes what git ignores (.env.prod, backups/).
  • Variables:
    • CWA_CI_SERVER_HOST makes the project single-server: every Kubernetes job skips. Don't make it Protected.
    • CWA_CI_SERVER_SSH_KEY: a secret, the key as is or as base64 on one line.
    • CWA_CI_SERVER_KNOWN_HOSTS: required, the output of ssh-keyscan. Host keys are always checked.
    • Optional: CWA_CI_SERVER_USER (deploy), CWA_CI_SERVER_PORT (22), CWA_CI_SERVER_PATH (cwa, under the user's home).
  • Backups and restore: bin/server/backup.sh (database dump, media and Caddy certificates, keeping 5) and restore.sh. Add a note that a backup on the same disk isn't a backup. Daily jobs: bin/server/cron.example.
  • Moving from one server to Kubernetes:
    • rsync the media into GCLOUD_PATH_PREFIX;
    • take a final dump in maintenance mode;
    • set the secrets as CI variables (the deploy reads them first);
    • deploy with the staging issuer first, then switch to letsencrypt-prod.

Images: the server builds them today. Pulling the images CI built is being added next; I'll comment here when it lands.

2. The create-cwa page:

  • Pipeline: GitHub Actions, GitLab CI, or "None yet".
  • "Deploy to?" (only with a pipeline): a Kubernetes cluster, or one server with Docker (preview). --deploy kubernetes|server.
  • Components, renamed by what an editor gets:
    • Navigation menu, Rich text (TipTap), Images, Blog, Nested pages, Example form.
    • The first three are pre-selected, and are what --yes and --ci pick (was none).
    • --features default|all|none|a,b.
  • "Start with example pages?" replaces the fixtures yes/no. --content demo|home|empty; --fixtures and --no-fixtures still work, as demo and empty.
    • demo: a home page plus an example of each chosen component;
    • home: just the layout and a home page;
    • empty: only the admin login.
  • The generated README has a deploy section for the chosen target.
Ngôn ngữ chính
TypeScript
Star
0
Fork
0
Merge trung bình
1 giờ 20 phút
Pull request đã merge (30 ngày)
1

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của components-web-app/docs

Tất cả issue của components-web-app/docs

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.