Commit Graph

119 Commits

Author SHA1 Message Date
Daniel Lockyer
1a0362f3db Added demo E2E browser test
refs https://github.com/TryGhost/Toolbox/issues/207

- we want to start writing some E2E tests that involve automated
  pointing and clicking around the frontend of Ghost to test that
  members of Ghost sites can still do what we expect
- we've decided to look in to Playwright for this - it looks __really__
  nice
- this is a VERY basic first test - it'll check for a 200 on the
  homepage of whatever we provide as the TEST_URL env variable, or
  default to a (manually-run) Ghost instance on port 2368
- also adds a `yarn test:browser` command to run the tests using the
  Playwright CLI, and a sample GitHub Action workflow which we can
  manually run with a site URL
- there's a lot more to add here in terms of test framework but this
  gets us started
2022-02-17 12:16:58 +01:00
Daniel Lockyer
08eaed152b Added yarn test:ci command
refs https://github.com/TryGhost/Toolbox/issues/208

- we currently run all test commands separately in CI and this can make
  it harder to replicate any issues we see in CI because we have to
  manually go and copy the order of the tests
- it's also nicer if there's just one command that runs so we can make
  changes globally to CI
- this commit adds a test:ci yarn command which will run the tests in
  order of speed/importance, with the -b AKA fail-fast flag so we
  don't have to wait for all tests to run before finding out about
  issues
- this also cleans up running unit tests in the DB matrix
2022-02-16 19:22:20 +01:00
Daniel Lockyer
7a5b262a84 Renamed CI test workflows
- these names are a little more descriptive and look better in GitHub
2022-02-16 19:22:20 +01:00
Daniel Lockyer
d4759d30a7 Split out unit tests from CI matrix
refs https://github.com/TryGhost/Toolbox/issues/208

- unit tests (shouldn't) be database dependent so they don't need to be
  included in the DB matrix
- this prevents an extra 6 executions of unit tests, which isn't a big
  deal given they only take 10s to run, but semantically they belong
  outside so this commit does that
- also updates the canary step to rely on this extra test run
2022-02-16 19:22:20 +01:00
Daniel Lockyer
f55f2b1587
Added check for Ghost-CLI logs in CI
no issue

- we might fail the tests but not produce any logs in Ghost-CLI
- concatenating the logs would then fail because of the lack of existence
  of a directory
- this commit adds a check that files exist before trying to get the
  contents of the files
2022-02-04 09:40:26 +01:00
Renovate Bot
79609632b1 Update peter-evans/create-or-update-comment commit hash to 63e171a 2022-01-31 08:45:43 +00:00
Daniel Lockyer
2122a47ce0 Added MySQL 8 to CI tests
refs https://github.com/TryGhost/Toolbox/issues/181

- we officially support MySQL 8 but we don't run tests for it -- oops
- this commit adds MySQL 8 to the DB matrix in CI tests
- I had to switch to a fork of the `mysql-action` repo so I could get
  the native authentication plugin working, but I expect to revert this
  once we've merged support for mysql2
2022-01-25 12:23:15 +00:00
Daniel Lockyer
34e8c299e7
Added concurrency option to test workflow in CI
refs
https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#example-using-a-fallback-value

- CI sometimes becomes clogged up with concurrent runs for a PR if the
  PR is updated
- this sometimes happens when we merge a bunch of Renovate PRs and other
  PRs rebase on top of `main` multiple times
- we shouldn't continue to run tests for PRs if the branches have been pushed
  to since they started
- from the referenced link above, this is the built-in solution that
  cancels previous in-progress runs if a new job starts
2022-01-14 10:26:26 +00:00
Joe Grigg
60ff6d4267 Updated github release action to use new main branch of ghost-release
no issue

- We have switched over to using the new git standard of using the main branch rather than master.
2022-01-11 16:09:58 +00:00
Sam Lord
845ed665f0 Prevent TailScale failures from breaking the build
no issue

Includes a timeout if TailScale is completely inaccessible, and a
continue-on-error statement which should handle all forms of
failure. The following step also includes a continue-on-error step, as
reporting metrics depends on TailScale succeeding, and should also
never fail the build.
2021-12-14 09:37:38 +00:00
Sam Lord
928a30bd98 Prevent TailScale from trying to run in pushes to main branch on forks. 2021-12-06 15:28:05 +00:00
Renovate Bot
74f45669d2 Update peter-evans/create-or-update-comment commit hash to ad0c5a2 2021-12-03 09:51:13 +00:00
Oscar Dominguez
141f794750
Added yarn cache to CI workflows (#13716) 2021-11-30 08:01:22 +00:00
Daniel Lockyer
aec14e5cf3
Disabled FORCE_COLOR on setup-node GitHub Action
refs https://github.com/TryGhost/Ghost/pull/13716
refs https://github.com/actions/setup-node/issues/317#issuecomment-929694556

- the `setup-node` GitHub Action seems to use a shell command to get the
  cache path, but these are colorised when `FORCE_COLOR` is enabled
- this causes the Action to fail to read the path correctly
- the comment referenced above suggests to remove `FORCE_COLOR` but it's
  nice to have colored output for our tests
- instead, I'm disabling the environment variable on the `setup-node`
  action so it still works
- I've tested with the referenced PR and this unblocks dependency caching 🎉
2021-11-25 09:11:35 +01:00
Daniel Lockyer
b1ee741ddb
Added issue closed event to triggers for label action
refs 2a19e6151c

- we want to ensure that the `needs triage` label is removed when an
  issue is closed
- the event was handled in the labelling Action but it needs the event
  adding here to trigger execution
2021-11-18 11:05:49 +01:00
Renovate Bot
c2fe04f681 Update actions/stale action to v4 2021-11-15 08:23:54 +00:00
Matt Hanley
1477d2712b Pinned GH Action for migration PR workflow to a specific commit
no-issue
- The workflow runs in the pull_request_target context which has access to repo secrets even when triggered from a fork
- Pinned the GH Action to a specific version to guard against upstream changes to the Action which may abuse access to secrets
2021-11-12 15:49:41 +00:00
Daniel Lockyer
9768ad42c4
Configured stalebot to run at 15:00 UTC
refs https://github.com/TryGhost/Toolbox/issues/81

- changes the bot to run during office hours so we can keep an eye on it
2021-11-12 14:44:54 +00:00
Daniel Lockyer
0847340b9a
Switched to GitHub Action for handling stale issues + PRs
refs https://github.com/TryGhost/Toolbox/issues/81

- https://github.com/actions/stale is the official way to handle stale
  issues and PRs and our old method hasn't worked for a while
- most of this is copied from [Ghost-CLI's stale
  workflow](https://github.com/TryGhost/Ghost-CLI/blob/main/.github/workflows/stale.yml)
  but the comment contents and labels have been updated
- also removes the config for the broken, existing method
2021-11-12 14:21:12 +00:00
Daniel Lockyer
bf4ae212fd
Switched to custom issue labeling bot
refs https://github.com/TryGhost/Toolbox/issues/81

- the existing `label-actions` tooling was deprecated and shut down but
  after reviewing, it wasn't expressive enough for our workflow use cases
- we wanted a tool we could drop into our repos and it works without
  extra configuration
- I've developed the `tryghost/label-actions` GitHub Action which will
  supports all our labeling flows for triaging
- this commit switches the repo over to using that
- configured the scheduled tasks to run at midnight daily
2021-11-12 10:57:27 +00:00
Sam Lord
0955caf311 Prevent Tailscale running in PRs on forks 2021-11-11 10:17:08 +00:00
Sam Lord
e4487c395c
Add metrics for test duration in Github workflow
refs: https://github.com/TryGhost/Toolbox/issues/118

Previously would attempt to run in forked repos, but couldn't access secrets so just hung.
2021-11-11 09:26:11 +00:00
Matt Hanley
64e8fdf4bb
Added migration review checklist (#13711)
no issue
- Adds a comment to PRs containing migrations with a checklist for the reviewer to complete
2021-11-05 09:33:55 +00:00
Sam Lord
b79870d48c Revert "Added metrics for test runs"
This reverts commit e9afa6f40f.

Reverting because the TailScale step sometimes crashes the build
2021-11-01 13:31:43 +00:00
Sam Lord
e9afa6f40f
Added metrics for test runs
Refs CORE-120

When test runs execute, use the new @tryghost/metrics package to send metrics to configurable backends.

At the moment, we're just sending the test run duration to our metric store in preparation of changes to the test suite.
2021-10-28 14:15:48 +01:00
Daniel Lockyer
f4b48c1373 🔥 Added support for Node 16
refs https://github.com/TryGhost/Toolbox/issues/71

- Node 16 is now LTS so we're adding support in Ghost
- we're also bumping the minimum Node 14 version to 14.17.0 so we can merge
  dependencies who have higher Node 14 requirements than current
- this commit adds Node 16 to the `package.json` engines and to CI
- also bumps all dependencies that needed new versions to add Node 16
  support
2021-10-27 11:39:42 +01:00
Daniel Lockyer
32b325eb4c Added codecov.io coverage uploader to CI
refs linear.app/tryghost/issue/CORE-74/improve-the-test-situation

- this commit adds the codecov GitHub Action into CI so we can upload
  coverage reports
- the coverage files need to be in XML for them to work with
  codecov, so this commit also adds cobertura (XML) as a reporter
2021-10-20 15:12:07 +02:00
Hannah Wolfe
bcf19c8fe2
Fixed CI not running integration tests
refs: 726db1c0e

- I totally forgot/missed that we run each test suite individually on CI, rather than using `yarn test:all`
2021-10-14 12:24:16 +01:00
Hannah Wolfe
1dec3d56b1
Renamed our acceptance tests to "e2e"
- These are end-to-end tests, make it clearer what they are and what they are supposed to do
2021-10-06 12:40:52 +01:00
Daniel Lockyer
0d5b836557
Added RELEASE_NOTIFICATION_URL secret to release workflow
refs https://linear.app/tryghost/issue/CORE-38/automate-releases

- this is a notification endpoint which we pass down to the
  `action-ghost-release` GitHub Action to create notifications when the
  release is done
2021-09-28 16:45:30 +01:00
Daniel Lockyer
99d601bc9f
Moved GITHUB_TOKEN env variable to workflow scope
no issue

- the CLI install extension step also needs the token so it's just best
  to include it globally in the workflow
2021-09-09 09:49:08 +01:00
Daniel Lockyer
d897942af7
Added auto-assign workflow to pull requests
no issue

- Renovate will open PRs to bump dependencies but these are unassigned
- Renovate does have the ability to set assignees, but these are blanket
  assigns not based upon the package that is being upgraded
- we want to assign them to the owners of the package that is being
  upgraded
- I've created the `gh-auto-assign` GitHub CLI exntension which reads a
  `.github/AUTO_ASSIGN` file and assign PRs based upon the entries listed
- this commit adds the initial `AUTO_ASSIGN` file and GitHub Actions
  workflow to trigger when a PR is opened
2021-09-08 10:12:31 +01:00
Daniel Lockyer
c7f45f5580 Renamed coverage:unit command to cov:unit
no issue

- this is slightly quicker to type and cleaner to read
2021-08-26 15:06:45 +02:00
Daniel Lockyer
70bea3ddf8 Added c8 coverage to unit tests
no issue

- coverage allows us to see how much of our code we're hitting in tests
  and it's time we started to get visibility on this in Ghost
- we can then make informed decisions on which well-tested internal libraries
  can be pulled out into their own packages
- this commit:
  - adds the c8 dev dependency to Ghost
  - prepends the `test:unit` command with c8 with the `text-summary` reporter
  - adds a `coverage:unit` command to get the `text` report
    - you can do `yarn coverage:unit --reporter html` to get a HTML report etc
  - uses this new test coverage reporter command in CI tests
2021-08-20 12:42:11 +02:00
Daniel Lockyer
fe3355276f
Included v4.* branches in CI testing
no issue

- as we're making more and more use of branches for releases, we want
  tests to run on them
- this commit adds the v4 wildcard to the GitHub workflow so it'll
  trigger when we push to them
2021-07-22 15:21:36 +01:00
Daniel Lockyer
7fe943bb49
Updated CI release workflow to use built-in token
no issue

- `RELEASE_TOKEN` is currently a GitHub personal token, but this
  has some downsides:
    - if the token ever expires and I'm unaware, it'll break the release
      process
    - GitHub Releases say the creator was `daniellockyer` even if someone
      else actually did the release
- this commit switches over to using the built-in `GITHUB_TOKEN`, which
  is owned by the `github-actions` app and should never expire
- aside from that, Ghost releases will be created by the neutral
  `github-actions` account
2021-07-12 13:14:55 +01:00
Daniel Lockyer
6eba445f23
Fixed canary build after yarn command changes
refs 7e6800b2b8

- referenced commit deprecated `grunt main` in favor of `yarn main` but
  this wasn't updated so we never installed dependencies for Admin,
  which caused the build to break
- this commit switches to the new command
2021-07-06 10:22:07 +01:00
Hannah Wolfe
7e6800b2b8
Improved dev tooling (#13118)
This commit achieves a few things:

- ☑️  No longer having to remember whether a command is yarn something or grunt something
- ☑️  Simplification of tools hopefully making them easier to remember and use 
- ☑️  Complete removal of the need for grunt from our test tooling

Several of the tools still use grunt under the hood, but the **entrypoint** should aways be `yarn xxx`.

- `grunt main` -> `yarn main`
- `grunt dev` -> `yarn dev`
- `grunt build` -> `yarn build`
- `grunt test:file-or-folder` -> `yarn test file-or-folder`
- `grunt test-unit` -> `yarn test:unit`
- `grunt test-acceptance` -> `yarn test:acceptance`
- `grunt test-regression` -> `yarn test:regression`
- `grunt validate` -> removed due to lack of use

There is now also `yarn test:all` to run all 3 classes of tests

This PR also reorders & restructures the Gruntfile extensively so that:

- The remaining useful commands are all at the top of the file
- Config and other blah happens after all the useful commands
- All release-only config happens in the release task at the very end of the file

---

DONE:

* Removed all references to npm/bower
* Removed all references to lint / deprecated command
* Moved debug to yarn dev:debug
* Removed all references to travis
* Removed broken help task + useless comment
* Removed unused knex-migrator and clean:test setup tasks
* Added new test commands, removed grunt validate
* Moved stubClientFiles to test utility and use in the few tests that need it
* Used mocha in yarn directly except grunt test:x
* Swapped grunt test for yarn test
* extensive cleanup and reshuffling
2021-07-05 20:02:22 +01:00
Daniel Lockyer
d25b8680f4
Added CI step to print debug logs upon CLI failure
no issue

- if Ghost-CLI tests fail, the CLI will put some extra debug logs in
  `~/.ghost/logs`
- these are useful to help see what the issue is, so we should print
  them out if we're experiencing a failure
- this commit cats the contents of the folder so we can see it in CI
2021-06-09 13:51:55 +01:00
Daniel Lockyer
84bfbae282
Extracted canary build to separate workflow
no issue

- by extracting it to a different workflow that uses the
  `workflow_dispatch` trigger, we can manually run a build, but also
  trigger it from Admin so we can always stay up-to-date
2021-06-01 17:04:16 +01:00
Daniel Lockyer
bbeeb83235
Updated Canary builds to use preminor versioning
no issue

- we want to use `preminor` so it'll run migrations for the unreleased
  version if they are present
2021-05-21 16:40:06 +01:00
Daniel Lockyer
28f125926c
Updated release workflow to use Node 14
no issue

- Node 14 is now our recommended version and it's easier if we build
  Ghost with this version
- this also works around the fact that 12.18.0 would no longer build
  Ghost because we have bumped our minimum 12 version
2021-05-10 20:41:38 +01:00
Daniel Lockyer
4385070881
⬆️ Bumped minimum Node version to 12.22.1 and 14.16.1
refs https://nodejs.org/en/blog/vulnerability/april-2021-security-releases/

- these are the latest security releases and we should encourage people
  to upgrade to them
- also replaces Node 12 in the tests with Node 14 as this is soon our
  recommended version
2021-05-07 14:14:46 +01:00
Daniel Lockyer
7360be5625
Disabled Ghost v1 and v2 CLI tests
refs 57ff38da8a

- we're dropping support for Node 10 which involved bumping the Node
  version we run our Ghost-CLI tests on but they fail because Ghost v1
  and v2 don't support Node 12
- this commit disables these tests until we come up with a good
  workaround
2021-05-05 14:59:20 +01:00
Daniel Lockyer
57ff38da8a
🔥 Dropped support for Node 10
refs https://github.com/TryGhost/Team/issues/658

- Node 10 become EOL as of April 30th so it's time to drop support
- this commit:
  - removes the Node 10 range from the `node` `engines` block
  - removes Node 10 from CI tests
  - switches Node 10 in the CLI test to Node 12 so we can ensure it
    installs on our oldest supported Node version
2021-05-05 14:38:14 +01:00
Daniel Lockyer
35e45dbe7b
Added CI check to test updates from v3
no issue

- now we've officially released v4, we need to check updates from v3
- this commit adds a test copied from the other tests above
- also renames the steps from Upgrade to Update to match internal terminology
2021-03-17 11:52:26 +00:00
Daniel Lockyer
1155a3cd5d
Removed Casper-specific 4.0 code from CI
no issue

- the 4.0 Casper work is now in `main` and we don't need to switch
  branches any more
2021-03-10 21:49:02 +00:00
Daniel Lockyer
dc8e6be9fe
Updated canary workflow to use Casper 4.0 branch
no issue

- when building the canary zip, we currently use `main` within Casper,
  but the 4.0 changes are on the 4.0 branch
- this commit updates the workflow to checkout that branch as part of
  the pipeline
2021-03-09 08:48:59 +00:00
Daniel Lockyer
a39f15c196 Switched CI to using v4 Casper
no issue

- some new GScan changes mean that CI now throws a warning when using v3
  Casper, which causes tests to fail
- we need to switch to v4 to get the tests to pass
- we can't put v4 Casper in `main` because it'll autodeploy and be
  unusable for anyone downloading until Ghost 4.0 is released
2021-03-01 10:53:18 +00:00
Daniel Lockyer
26c49b4f57 Updated SQLite path for CI tests
- turns out GitHub Actions doesn't have /tmp as a tmpfs, so this commit
  switches to using /dev/shm, which *should* work ok
2021-02-23 16:58:31 +00:00