Commit Graph

501 Commits

Author SHA1 Message Date
Michael Barrett
47439b3b94
Updated docker-compose.yml to include a name for the project (#19588)
no refs

Added a name for the project in `docker-compose.yml` as it was using the
`scripts` directory as the name

Before:

```sh
❯ docker-compose ls
NAME                STATUS              CONFIG FILES
scripts             running(1)          /path/to/ghost/.github/scripts/docker-compose.yml
```

After:

```sh
❯ docker-compose ls
NAME                STATUS              CONFIG FILES
ghost               running(1)          /path/to/ghost/.github/scripts/docker-compose.yml
```
2024-02-01 09:06:44 +00:00
Sam Lord
167a442ffe Free ubuntu-latest machines now also have 4 cores
refs: https://github.blog/2024-01-17-github-hosted-runners-double-the-power-for-open-source/

This should still allow us to run tests in 8~ minutes without paying for the VM time
2024-01-18 09:35:30 +00:00
Simon Backx
ea7290c0da
Added xxl options to data generation (#19488)
no issue

Allows switching between 100k members vs 2M members
2024-01-16 10:20:33 +00:00
Simon Backx
d2cb23c3fa
Wired up Docker setup script and increased data generation performance (#19420)
ref PROD-233

- Stored whether Docker is used in the config files
- When running `yarn setup`, any existing Docker container will be
reset. Run with `-y` to skip the confirmation step.
- `yarn setup` will always init the database and generate fake data
- Increased amount of default generated data to 100,000 members + 500
posts.
- Made lots of performance improvements in the data generator so we can
generate the default data in ±170s
2024-01-05 13:42:30 +00:00
Simon Backx
eebf0e2eaf Added knex-migrator init to setup script
ref PROD-233

When clearing the Docker database container, you still need to be able to run `yarn setup` to create the tables.
2023-12-14 18:30:45 +01:00
Daniel Lockyer
b67176431b Removed manual list of Typescript projects from dev script
fixes https://github.com/TryGhost/DevOps/issues/122

- this introduces some code to get all the Typescript projects
  programatically instead of relying on developers to manually add their
  project to the list, which is clearly better
2023-12-13 13:18:11 +01:00
Daniel Lockyer
a9c9202b5c Added defaults to Nx build step
refs https://github.com/TryGhost/DevOps/issues/122

- this allows us to DRY up some of the other configuration we have
  dotted around and fixes a niche bug with overlapping builds that we
  were seeing before, because Nx should only allow one build at a time
2023-12-13 11:54:31 +01:00
Daniel Lockyer
d65a95836b Revert "Enabled app build artifact caching in CI"
This reverts commit 617d3a6ffc.
2023-12-11 15:32:46 +01:00
Daniel Lockyer
617d3a6ffc Enabled app build artifact caching in CI
fixes https://github.com/TryGhost/DevOps/issues/120

- we've seen errors in CI where the unit tests for the apps folder are
  being run concurrently, but the build assets are not present so
  multiple builds are happening for the same folder
- this leads to errors because Vite tries to cleanup or build folders
  at the same time
- this should fix that by eagerly building the apps and caching the
  output so unit tests run quicker
2023-12-11 12:28:27 +01:00
Daniel Lockyer
398f96249c Added MySQL setup via Docker
refs https://github.com/TryGhost/DevOps/issues/118

- we should standardize how we run MySQL, so there aren't massive gaps
  in developer experience
- Docker is great for this, and it's pretty easy to set up
- this adds a docker-compose.yml file with a small MySQL setup
- also configures `yarn setup` to spin up the Docker container and add
  it to config.local.json
- in the near future, we'll provide a base SQL file in .github/scripts/mysql-preload
  to ensure the DB is in a known state
2023-12-07 10:57:47 +01:00
Daniel Lockyer
d617891e46 Configured Nx watch to run in an infinite loop
refs https://ghost.slack.com/archives/C02G9E68C/p1701939292474999?thread_ts=1701881060.000299&cid=C02G9E68C

- when you change branch or do a `git pull`, Nx will kill the watch
  command
- this becomes annoying when you're doing local development because it
  tears down the whole `yarn dev` command
- this puts the nx watch command in an infinite loop so it's just
  restart again and concurrently doesn't detect it as a failure
2023-12-07 10:34:20 +01:00
Simon Backx
17ec1e8937
Added email address alignment protections (#19094)
ref GRO-54
fixes GRO-63
fixes GRO-62
fixes GRO-69

When the config `hostSettings:managedEmail:enabled` is enabled, or the
new flag (`newEmailAddresses`) is enabled for self-hosters, we'll start
to check the from addresses of all outgoing emails more strictly.

- Current flow: nothing changes if the managedEmail config is not set or
the `newEmailAddresses` feature flag is not set
- When managedEmail is enabled: never allow to send an email from any
chosen email. We always use `mail.from` for all outgoing emails. Custom
addresses should be set as replyTo instead. Changing the newsletter
sender_email is not allowed anymore (and ignored if it is set).
- When managedEmail is enabled with a custom sending domain: if a from
address doesn't match the sending domain, we'll default to mail.from and
use the original as a replyTo if appropriate and only when no other
replyTo was set. A newsletter sender email addresss can only be set to
an email address on this domain.
- When `newEmailAddresses` is enabled: self hosters are free to set all
email addresses to whatever they want, without verification. In addition
to that, we stop making up our own email addresses and send from
`mail.from` by default instead of generating a `noreply`+ `@` +
`sitedomain.com` address

A more in depth example of all cases can be seen in
`ghost/core/test/integration/services/email-addresses.test.js`

Includes lots of new E2E tests for most new situations. Apart from that,
all email snapshots are changed because the from and replyTo addresses
are now included in snapshots (so we can see unexpected changes in the
future).

Dropped test coverage requirement, because tests were failing coverage
locally, but not in CI

Fixed settings test that set the site title to an array - bug tracked in
GRO-68
2023-11-23 10:25:30 +01:00
Jono M
a93c665d20
Created a skeleton AdminX demo app (#19005)
refs https://github.com/TryGhost/Product/issues/4152

---

<!-- Leave the line below if you'd like GitHub Copilot to generate a
summary from your commit -->
<!--
copilot:summary
-->
### <samp>🤖[[deprecated]](https://githubnext.com/copilot-for-prs-sunset)
Generated by Copilot at a28462f</samp>

This pull request adds a new admin-x app called `admin-x-demo`, which
demonstrates how to use the shared packages `admin-x-framework` and
`admin-x-design-system` to create a simple app that renders a button and
a modal. It also improves the development workflow, the vite
integration, the dependency management, and the type checking for the
admin-x apps and packages. It modifies some files in the
`admin-x-framework` and `admin-x-design-system` packages to make the
modals prop optional, to introduce a new type for the props from the
Ember app, to fix the z-index of the modal backdrop, and to use
consistent file extensions and module syntax.
2023-11-20 13:30:15 +00:00
Daniel Lockyer
6bc703e235 Fixed glob for Admin-X projects
refs c695497598

- the previous glob didn't match correctly
2023-11-20 12:49:34 +01:00
Daniel Lockyer
b1666f596f Removed GitHub Copilot for PRs templating value
refs https://githubnext.com/copilot-for-prs-sunset

- unfortunately the technical preview will end in mid December so we
  need to cleanup the templating var
2023-11-20 11:43:58 +01:00
Daniel Lockyer
c695497598 Switched to actions/labeler for PR labeling
fixes https://github.com/TryGhost/DevOps/issues/111

- this allows us to add labels based upon the contents in a smarter way
  than the previous workflow
2023-11-20 11:43:58 +01:00
Simon Backx
e3cdc24d6b
Added test to test default theme against linked gscan version (#19020)
fixes GRO-32

If we ever introduce errors in the linked source theme and linked gscan
version combination, this test will catch it.
2023-11-16 12:03:00 +00:00
Daniel Lockyer
e2be6dbf14 Configured submodules to clone in performance tests
refs https://github.com/TryGhost/DevOps/issues/105

- we should include submodules in the checkout so the Ghost boot is
  representative of booting Ghost with a theme
2023-11-15 14:08:32 +01:00
Daniel Lockyer
566f2055d0 Moved GitHub context logging to job
- this stops the entire context from being output in the env vars, so it
  cleans up the output at the top of each job
2023-11-15 13:54:20 +01:00
Daniel Lockyer
18afd39193 Removed NODE_ENV env var from perf tests
refs 05977d5c26

- this seems to break things, will investigate once this is merged
- also adds showing output flag so debugging is easier
2023-11-15 13:35:41 +01:00
Daniel Lockyer
05977d5c26 Added boot time performance test to CI
refs https://github.com/TryGhost/DevOps/issues/105

- this will run a small benchmark on the boot time for Ghost, and push
  the stats to another repository which has GitHub Pages enabled, so we
  can visualise the change over time
- will only run on pushes to `main` so we don't pollute the stats with
  commits from PRs
- just a test for now to see if we get stable numbers
2023-11-15 13:24:56 +01:00
Daniel Lockyer
199baacfd5 Improved error message for yarn dev
refs https://github.com/TryGhost/DevOps/issues/104

- added colors and better messages to help when the script fails
2023-11-15 10:34:34 +01:00
Daniel Lockyer
76672e3e15 Improved output from dev script
refs https://github.com/TryGhost/DevOps/issues/104

- added a single line outputting what projects we're running
- removed line for Stripe token fetching
2023-11-15 10:11:22 +01:00
Daniel Lockyer
54e1b6002d Switched to Nx for more project commands
refs https://github.com/TryGhost/DevOps/issues/104

- this should marginally speed things up because we don't have to go
  through `yarn`, which is notoriously slow
2023-11-15 10:11:22 +01:00
Jono M
94a181ce2a
Separated common AdminX logic into a reusable package (#18919)
refs https://github.com/TryGhost/Product/issues/4123

---

<!-- Leave the line below if you'd like GitHub Copilot to generate a
summary from your commit -->
<!--
copilot:summary
-->
### <samp>🤖 Generated by Copilot at a420f0b</samp>

This pull request moves most of the API-related types and functions from
the `admin-x-settings` package to the `admin-x-framework` package, which
is a new library of common utilities and hooks for the admin-x apps. It
also adds some configuration files, such as `.eslintrc.cjs` and
`.gitignore`, to the `admin-x-framework` package. Additionally, it
exports the `FetchKoenigLexical` type from the `admin-x-design-system`
package, which is used by the `HtmlEditor` component.
2023-11-14 13:50:08 +00:00
Jono M
67251e6e1d
Renamed admin-x-design to admin-x-design-system for clarity (#18914)
refs https://github.com/TryGhost/Product/issues/4105
2023-11-08 15:10:43 +00:00
Jono M
048dac30ed
Extracted AdminX design system to a separate package (#18878)
refs https://github.com/TryGhost/Product/issues/4105

---

<!-- Leave the line below if you'd like GitHub Copilot to generate a
summary from your commit -->
<!--
copilot:summary
-->
### <samp>🤖 Generated by Copilot at 2edba98</samp>

This pull request introduces a new monorepo package called
`admin-x-design`, which contains components, design guidelines and
documentation for building apps in Ghost Admin. It also moves some
existing components and files from the deprecated `admin-x-settings`
package to the new `admin-x-design` package, and updates some styles and
rules to use TailwindCSS. The purpose of these changes is to improve the
consistency, maintainability and usability of the Ghost Admin UI.
2023-11-08 12:33:18 +00:00
renovate[bot]
3909de2f17 Update actions/setup-node action to v4 2023-11-08 13:29:13 +01:00
Daniel Lockyer
6900c1f2b3 Configured CI to run Ghost-CLI tests on Node 18
refs https://github.com/TryGhost/DevOps/issues/75

- this will install v4 using Node v16 and then switch to v18 as we're
  about to drop support for Node v16
2023-10-25 17:50:56 +02:00
Daniel Lockyer
f6dfe05c30 Added guard against non-code changes to run CI tests
- we don't want to run browser tests if no code has changed
2023-10-25 12:06:00 +02:00
Daniel Lockyer
c5c6f84c7d Added CI check to ensure i18n translations are in sync
fixes https://github.com/TryGhost/DevOps/issues/91

- this adds a CI job that will run i18n tests if any of the packages
  that use it have changed
- this helps prevent translations from going out of sync
2023-10-25 12:06:00 +02:00
John O'Nolan
67b6d7cd15
Added contributor code of conduct 2023-10-18 12:10:05 +02:00
Sam Lord
11b9e8a73f Switch to 4-core runners for browser tests
refs: https://github.com/TryGhost/DevOps/issues/78

This number of cores has been approved, will test with 1 browser per core, and 1 browser for every two cores
2023-10-17 12:40:19 +01:00
Daniel Lockyer
e699facc03 Cleaned path to Playwright reports
- this is cleaner and follows the pattern as other jobs do
2023-10-16 17:37:42 +02:00
Daniel Lockyer
18f55d6af0 Moved browser E2E tests into CI workflow
refs https://github.com/TryGhost/DevOps/issues/78

- this allows us to take advantage of the dependency caching and metadata
  workflows, to reduce the overall execution time and duplicate logic
2023-10-16 13:45:22 +02:00
Sam Lord
4815aa6e7f
Parallelise browser tests
refs: https://github.com/TryGhost/DevOps/issues/78

Re-introduce parallel browser tests

These were adding in a previous PR, but the difference between local
running tests and using CI introduced failures.

Added additional fixes to ensure the Stripe API key is used in the CLI when running in CI.
2023-10-13 11:42:39 +00:00
renovate[bot]
c2b0442846 Update peter-evans/create-or-update-comment digest to ac8e650 2023-10-13 07:48:15 +02:00
Peter Zimon
e68db848dc
AdminX: reroute settings-x to settings (#18360)
refs. https://github.com/TryGhost/Product/issues/3949

---------

Co-authored-by: Jono Mingard <reason.koan@gmail.com>
Co-authored-by: Daniel Lockyer <hi@daniellockyer.com>
2023-10-09 08:12:46 +01:00
renovate[bot]
d6c944c8b8 Update peter-evans/create-or-update-comment digest to e3645dd 2023-10-06 10:36:02 +02:00
Daniel Lockyer
639be25f1d Updated Koenig-Lexical bundling
refs https://github.com/TryGhost/DevOps/issues/83

- this will now continue use the dev server assets if we tell it to,
  or copy the dependency package files to the built folder otherwise
- removes `editor` from config API because it's no longer needed
- removes dependency on `editor.url` in tests, as this no longer exists
- edits dev script to pass dev server URL as env var
- adds `@tryghost/koenig-lexical` dependency to Admin
2023-10-04 12:50:21 +02:00
Ronald Langeveld
a596b3aaca
Renamed e2e tests to acceptance tests in Admin X (#18439)
ref https://www.notion.so/AdminX-testing-plan-99b2dab27e794fc893767ccd01c84a63?d=26612fc2b9d84e65bbb269fa3bc5079e&pvs=4#f0089cd4d9f24e93bd7f8e2868987bf6

This pull request renames the end-to-end tests to acceptance tests in
the `apps/admin-x-settings` folder. It updates the `ci.yml` file, the
`package.json` file, the `playwright.config.ts` file, and the test files
to reflect the new naming convention. This change aims to better reflect
the purpose and scope of the tests.
2023-10-03 16:20:40 +07:00
Daniel Lockyer
62eb8604fa Fixed uploading Playwright reports
- this was previously broken because the paths were incorrect
2023-10-03 08:56:06 +02:00
Daniel Lockyer
0372bf8e50 Switched yarn workspace to yarn nx run ...
- this switches to NX for more command-execution, which helps in the
  future because we can configure dependent tasks that are also
  cacheable
2023-10-03 08:56:06 +02:00
Daniel Lockyer
95ec7b5016 Enabled --adminx by default
refs https://ghost.slack.com/archives/C0568LN2CGJ/p1695897183996699

- Admin-X Settings is soon due to be the official new settings, so we
  should always ensure it's running for developers
2023-09-28 12:49:34 +02:00
renovate[bot]
d5e00f3ff6 Update peter-evans/create-or-update-comment digest to ddff993 2023-09-27 09:35:39 +02:00
Simon Backx
b51e12d90f
Added emails for recommendations (#18361)
fixes https://github.com/TryGhost/Product/issues/3938
2023-09-26 15:29:17 +00:00
renovate[bot]
11e6e32888 Update peter-evans/create-or-update-comment digest to 46da6c0 2023-09-20 10:57:44 +02:00
Daniel Lockyer
f705dda314 Updated Admin-X bundling process
refs https://github.com/TryGhost/DevOps/issues/80

- as part of moving Admin-X-Setting towards GA, we want to change it from
  loading the settings externally via a CDN, to bundling it in with
  Admin
- the bulk of the changes here are removing the config in Ghost, setting
  up the copy to the Admin assets dir, and loading the new path in Admin
- several other changes have come along the way as I've cleaned up
  unneeded code
2023-09-19 11:31:55 +02:00
Daniel Lockyer
e8a0d5a300 Deleted custom-build workflow
- this is no longer needed because we added support to build from a
  branch
2023-09-15 10:48:08 +02:00
renovate[bot]
3694a080d2 Update peter-evans/create-or-update-comment digest to 1f6c514 2023-09-15 10:10:56 +02:00