Commit Graph

145 Commits

Author SHA1 Message Date
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
Daniel Lockyer
5a758ea86e Re-enabled Ghost-CLI upgrade tests
no issue

- now GScan has been updated to support v4, we should be able to run these tests again
2021-02-09 17:13:55 +00:00
Daniel Lockyer
3e39239af0
Updated actions/setup-node to v2
no issue

- amongst many other things, v2 uses a cache to download Node versions
2021-02-09 16:21:54 +00:00
Daniel Lockyer
d9a7fb0677
Fixed versioning for canary builds
no issue

- premajor will build a 5.0.0 prerelease but we want a 4.0.0 prerelease
  built
2021-02-03 09:29:04 +00:00
Daniel Lockyer
a2d97de09a
Updated test workflow to reflect branch renames
no issue

- 4.x has been renamed to main, which is now the default
- `master` is now 3.x, which is on a different set of workflows anyway
2021-02-02 18:04:38 +00:00
Daniel Lockyer
bf163bf058
Commented out select Ghost-CLI tests
no issue

- Ghost-CLI uses gscan under the hood to check the theme, but GScan has
  not yet been updated to support v4
- disabling these tests for now until it does
2021-02-02 17:21:56 +00:00
Daniel Lockyer
fb26e3d892
Updated migrations test to rollback to different versions
no issue

- in 4.0, we don't expect to rollback to 3.0 because there are
  irreversible migrations
- the existing test attempts to do this because it was written for v3
- this commit updates the test to apply to v4, although this will need
  to change soon when we switch branches
2021-02-02 16:12:54 +00:00
Daniel Lockyer
032741a5ef
Enabled tests and canary build on 4.0 branch
no issue

- we want tests to run on the 4.0 branch, along with Slack notifications
- we also want a canary build of the 4.0 branch, but this requires some
  alterations to bump to a premajor + use a different artifact name
2021-01-21 11:36:41 +00:00
Daniel Lockyer
ff11b42c33
Inlined canary build workflow into tests
- this allows us to rely on successful test steps before building a
  canary zip
2021-01-19 12:11:34 +00:00
Renovate Bot
1b0a8f5fbf Update actions/setup-node action to v2 2021-01-04 08:56:33 +00:00
Daniel Lockyer
fc9e107254 Revert "Bumped Node version used for Ghost-CLI tests"
- this reverts commit a43f4dc4de
- we can't use Node 12 here because Ghost v1 doesn't support it...
2020-11-23 11:22:23 +00:00
Daniel Lockyer
a43f4dc4de Bumped Node version used for Ghost-CLI tests
- our recommended version is Node 12 so we should use this
- possibly also solves some random CI failures we were seeing with
  sqlite3 not installing?
2020-11-23 11:18:48 +00:00
Daniel Lockyer
736c96439b Increased sleep delay before killing Ghost in CI tests
- We'd randomly see SQLite take more than 10 seconds to set up the DB in
  CI so Ghost was getting killed prematurely, causing test failures
2020-11-20 08:41:59 +00:00
Daniel Lockyer
6b8bfb81fc Fixed canary build on release commits
- because the Admin submodule has been updated, there aren't any
  differences that can be committed so we shouldn't do it
- this should check if we have uncommitted changes and only commit if so
2020-11-17 14:23:44 +00:00
Daniel Lockyer
249c4a3e83 Enabled cloning of submodules in migrations test
- we start Ghost in this test but Ghost will check Casper, which isn't
  cloned without this commit
2020-11-17 09:16:03 +00:00
Daniel Lockyer
7640fa3bee Revert "Bumped CI rollback version to 3.30"
- this reverts commit d22bbf58c7
- the issue with a migration was actually valid and we've fixed it
2020-11-11 11:59:02 +00:00
Daniel Lockyer
d22bbf58c7 Bumped CI rollback version to 3.30 2020-11-11 11:12:21 +00:00
Daniel Lockyer
d67683d7e6 Switched to running Ghost in CI migration tests
- if we only run 'knex-migrator init', the settings don't get populated like
  they would when running Ghost
- switching to running Ghost for initialization is more realistic of
  what would happen IRL
2020-11-11 10:42:13 +00:00
Daniel Lockyer
36fb04f735 Renamed workflow to Canary
- makes more sense than "zip"
2020-11-10 11:03:54 +00:00
Daniel Lockyer
361d79a8ef Added CI workflow for testing migrations
- initializes the DB, rolls back to v3.0 and then forward to the latest again
2020-11-06 13:33:39 +00:00
Daniel Lockyer
489add6e5e Pinned Node version in CI
- The default Node version on GitHub Actions is moving to Node 14 and we
  want to keep building it on 12 for now, so this commit pins the
  version to 12.18.0
2020-11-02 08:48:05 +00:00
Daniel Lockyer
b8c9ef5033 Added temporary second artifact upload
- we're changing the name but need to maintain compatibility until the
  new setup is live
2020-10-29 13:18:45 +00:00
Daniel Lockyer
52bac88136 Added Ghost & Ghost-Admin commit hashes into version
- this will generate zips with the hashes already included, and avoid
  the crazy bash further in the script
2020-10-29 12:08:16 +00:00
Daniel Lockyer
1cc58c1f95 Added GitHub Actions workflow to build the latest code
- we want to allow people to download and run the latest code in Ghost
  and Ghost-Admin from Ghost-CLI without going through the process of
  cloning the repos
- this GitHub Actions will generate a release zip and upload it as an
  artifact
- we then have a tool to download the latest artifact, which can be used
  in Ghost-CLI
2020-10-28 16:20:42 +00:00
Daniel Lockyer
d28bbc848f Bumped minimum Node 14 version to latest LTS
- 14.15.0 is the latest version of Node 14 LTS
2020-10-28 11:03:02 +00:00
Daniel Lockyer
969b84b355 Extracted code linting test to separate CI job
- this was taking over a minute to run (?!), and was running on each
  matrix job
- we only need to run it once as changing Node versions shouldn't change
  the results
2020-10-28 08:05:50 +00:00
Austin Burdine
c262a6a341 🔥 Added support for Node 14 2020-10-23 12:57:02 +01:00
Daniel Lockyer
8fa9536122 Updated test labelling in GitHub Action workflow
- I'm expecting to add other v2 tests soon, so it's good to specify
  which v2 we're testing here
2020-08-18 13:10:34 +01:00
Daniel Lockyer
e8081f6691 Pinned Ubuntu version for tests & release workflows
- we were using `ubuntu-latest`, which is an alias for 18.04, but there's an
  increasingly likely chance that the default becomes 20.04 soon.
- we don't officially support 20.04 yet, so we want to pin to our
  supported version until we're ready
2020-08-18 13:08:22 +01:00
Daniel Lockyer
9d70e2b15c
Added 3.* branches to testing
no issue
2020-07-06 10:53:49 +01:00
Daniel Lockyer
53f96245e4 Added upgrade from v1 to Ghost-CLI tests
no issue
2020-06-30 09:40:30 +01:00
Daniel Lockyer
a0c7068127 Added npm version minor to Ghost-CLI tests
no issue

- migrations in master aren't run in Ghost-CLI tests because the
  package.json version is less than the migration versions
- we should be able to artificially bump the package.json so they get
  run
2020-06-30 09:40:30 +01:00
Daniel Lockyer
754086c3a5 Re-enabled Slack build notifications
no issue

- Switched to using my own implementation because the rest did not meet
  our requirements
2020-06-12 09:52:32 +01:00
Daniel Lockyer
c112863e4b Switched the NPM release and GitHub release around
no issue

- this allows us to do announcements when we know everything else is done
2020-06-11 17:37:34 +01:00
Daniel Lockyer
5595408c97 Disabled Slack notifications for now
no issue

- the Action we were using was super verbose so get rid of it for now
2020-06-10 08:28:24 +01:00
Daniel Lockyer
980a63ceba Added Slack notification for broken build
no issue
2020-06-09 13:22:05 +01:00
Daniel Lockyer
69b8c8de68 Configured regression tests to always run
no issue
2020-06-09 12:45:00 +01:00
Daniel Lockyer
171f7627cd Removed unused env variables in release workflow
no issue
2020-06-03 08:12:54 +01:00
Daniel Lockyer
c2f5ed07d9
Updated release GitHub Action to reflect updates
no issue

- checkout v2 now fetches all tags and branches so the extra line is not needed
2020-05-28 17:24:13 +01:00
Daniel Lockyer
6871b96d7d
Updated Ghost-CLI test to use the latest release
no issue
2020-05-28 12:59:08 +01:00
Daniel Lockyer
0e1170593c Enforced proper Node versions in CI
no issue

- a recent regression was not caught by CI because we only specify major
  versions
- this change will temporarily fail in CI until the fix for the
  regression is implemented
2020-05-08 07:44:34 +01:00
Daniel Lockyer
425ba6143e Enabled FORCE_COLOR for CI tests
no issue
2020-04-16 11:01:27 +01:00
Daniel Lockyer
f8a22da490 Enabled Ghost-CLI testing on Renovate branches
no issue
2020-04-16 10:57:59 +01:00
Daniel Lockyer
5adbc4aa6a Moved Ghost-CLI tests to main testing workflow
no issue

- keeps all testing in one place and allows us to depend on a single
  workflow in the future
2020-04-16 07:42:31 +01:00
Daniel Lockyer
d8c7f530ce Enabled Ghost-CLI tests for v2->v3 upgrade
no issue
2020-04-15 18:18:44 +01:00
Daniel Lockyer
4cbc453d0e Added npm login to release GitHub Action
no issue
2020-04-07 11:59:18 +01:00
Daniel Lockyer
91054d10a0 Tidied up release GitHub Action
no issue
2020-04-07 08:19:17 +01:00
Daniel Lockyer
f79a0b5c73 Removed Sentry GitHub Action in favor of our release Action
no issue
2020-04-06 15:08:17 +01:00
Daniel Lockyer
bd1f175a56 Switched release process to built-in Node
no issue
2020-04-06 14:34:08 +01:00
Daniel Lockyer
b144a164e5
Updated release Action to run on all tags 2020-04-06 10:49:17 +01:00
Daniel Lockyer
09e8474261 Switched to custom GitHub Action for a release
no issue
2020-04-03 13:37:33 +01:00
Daniel Lockyer
5a314636cd Configured release Action to only run on 3.x tags
no issue
2020-04-03 10:39:42 +01:00
Daniel Lockyer
cadba8d9cc Moved Sentry release notification into main release workflow
no issue
2020-04-02 08:50:50 +01:00
Daniel Lockyer
90012c473a Enabled npm publish during the release process
no issue
2020-04-02 08:43:58 +01:00
Daniel Lockyer
02bf8773b9 Automated the release process
no issue
2020-04-01 15:17:52 +01:00
Daniel Lockyer
1acbe3e51a Corrected Sentry organization and project
no issue
2020-03-26 14:58:50 +00:00
Daniel Lockyer
2fe0b79f3a Enabled CI on Renovate branches
no issue

- enables CI on Renovate branches
- puts in a check to avoid CI for pull requests from Renovate to stop
  double builds
2020-03-25 18:30:11 +00:00
Daniel Lockyer
58aff29938 Switched to native conditional for labels in PRs
no issue

- removes the need for an external Action by checking natively
2020-03-25 16:31:58 +00:00
Daniel Lockyer
2c7c975f91 Specified version for GitHub Action dependency
no issue
2020-03-25 15:11:59 +00:00
Daniel Lockyer
f054976d4f Added GitHub Action to notify Sentry of releases
no issue

- automates the notification process upon a release published event
2020-03-25 12:21:29 +00:00
Daniel Lockyer
d229cf83a4 Configured CI to only run MySQL container on MySQL tests
no issue

- this saves about 50s on the SQLite tests
2020-03-20 11:15:49 +00:00
Daniel Lockyer
453bcc5030 Added all-tests label to run full test suite on a PR
no issue
2020-03-20 10:05:37 +00:00
Daniel Lockyer
2d42e7eaea Tidied up GitHub Actions workflows
no issue
2020-03-17 12:46:03 +00:00
Daniel Lockyer
64f34273a7 Renamed GitHub Actions workflow file
no issue
2020-03-17 12:43:54 +00:00
Daniel Lockyer
204efe0158 Fixed MySQL port mapping in CI
no issue

- turns out the exposed port is randomly assigned, but this worked for
  us so far
- this commit enforces the use of 3306 for the MySQL port
2020-03-16 08:59:07 +00:00
Daniel Lockyer
7b32bf9ca5 Switched tests to GitHub Actions
no issue
2020-03-05 09:50:14 +00:00
Daniel Lockyer
f8b85354d3 Combined Ghost-CLI tests into one GitHub Action job
no issue
2020-02-19 18:18:00 +00:00
Daniel Lockyer
722a92e9b5 Added extra tests to Ghost-CLI GitHub Action
no issue

- test for a clean install and updating from the latest release
- upgrading from the previous major is waiting on an update from
  Ghost-CLI
2020-02-03 17:39:06 +00:00
Daniel Lockyer
ef551768bb Switched to GitHub Actions for lint testing
no issue
2020-01-29 16:54:41 +00:00
Daniel Lockyer
a7fde48d1d Added GitHub Action for testing with Ghost-CLI
no issue

- this helps prevent issues with Ghost-CLI compatibility
2020-01-29 15:39:21 +00:00