When we're tagging a version that's not the latest version, then don't
update the `latest` Docker image on Docker hub. Like, if the current
latest is `v1.20`, and we publish the hotfix tag `v1.18.1` to fix a
critical bug in `v1.18`, then we only want to publish the Docker image
at the tag `v1.18.1`, and _not_ update `latest`. We want `latest` to
continue to point to `v1.20`.
Tested on a separate private repo, confirmed working.
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: Cypress test results -->
> [!WARNING]
> Tests have not run on the HEAD
21b3f9fe1ec7beea8b1f72b20f5406fb14fca4aa yet
> <hr>Sat, 21 Dec 2024 05:33:37 UTC
<!-- end of auto-generated comment: Cypress test results -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Introduced a streamlined GitHub Actions workflow for Docker image
tagging.
- Added a summary log for workflow execution details.
- Enhanced Docker tag generation with validation and error handling.
- **Bug Fixes**
- Improved validation for GitHub reference formats to prevent failures.
- **Documentation**
- Updated workflow names and outputs for clarity and ease of use.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Specify the specs we want to run, in a plain code fence, where the first
line has to exactly be `/test`. The remaining lines have to be one spec
file per line.
Like this:
```
/test
cypress/e2e/Regression/ClientSide/Fork/ForkApplication_spec.ts
cypress/e2e/Regression/ClientSide/JSLibrary/Library_spec.ts
```
1. It's not possible to run with tags and specs and the same time. This
will need a slightly larger effort. But we'll get there.
2. The status message shows spec files like they are space-separated,
and isn't very easy to read. Don't take it too seriously yet, we'll
improve.
3. Globs _should_ also work fine. The `spec` content, _almost_ directly
lands into the `--spec` argument of Cypress. See docs at
https://docs.cypress.io/guides/guides/command-line#cypress-run-spec-lt-spec-gt.
4. Multiple runners is disabled for this, have to solve it separately.
The `ci-test-limited.yml` also doesn't do multiple runners either.
<!-- This is an auto-generated comment: Cypress test results -->
> [!WARNING]
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9803353429>
> Commit: e99ae387c9a239ae51155af45977c285474cfbaf
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9803353429&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags:
> Spec: cypress/e2e/Regression/ClientSide/Fork/ForkApplication_spec.ts
> cypress/e2e/Regression/ClientSide/JSLibrary/Library_spec.ts
>
> It seems like **no tests ran** 😔. We are not able to recognize it,
please check <a
href="https://github.com/appsmithorg/appsmith/actions/runs/9803353429"
target="_blank">workflow here</a>.
> <hr>Fri, 05 Jul 2024 05:20:23 UTC
<!-- end of auto-generated comment: Cypress test results -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Chores**
- Enhanced GitHub Actions workflows to improve test specification
handling and reporting.
- Refactored tag parsing logic in scripts for more accurate and
informative outputs.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
And use script to update PR description with Cypress status
## Summary by CodeRabbit
- **Enhancements**
- Improved GitHub Actions workflows for PR automation and Cypress tests.
- Enhanced test failure messages with links to Cypress dashboard and
flaky test identification.
- **User Experience**
- Cypress test status messages now include emoji prefixes for "tip"
(green) and "caution" (red) alerts.
- **Bug Fixes**
- Corrected error handling in scripts to provide more accurate failure
statuses.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Gets common validation code for tags, for both `/ok-to-test` and `/test`
commands. Currently, for invalid tags in `/test` command, we aren't
updating the PR description with details of the tag parsing failure.
This PR fixes that, after finally bringing all the logic into Javascript
needed to solve this.
**/test sanity**
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9715326227>
> Commit: 260ec1888db114ae710b518abf36c54c6bfd2a9b
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9715326227&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: ``
<!-- end of auto-generated comment: Cypress test results -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Chores**
- Updated GitHub Actions workflow to trigger on 'release' and 'pg'
branches for 'ok-to-test' labeled PRs.
- Simplified tag parsing and validation logic in automation scripts.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Replacing more of `nefrob/pr-description@v1.1.2` with our GitHub Script.
This is moving towards Javascript CI, and hopefully an unit-testable CI.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Chores**
- Replaced `nefrob/pr-description` action with `actions/github-script`
for handling test responses in PR automation.
- Improved guidance on modifying PR body for correct tag usage and
linked to relevant documentation.
- Enhanced script content to handle warnings and failures more
effectively in PR workflow automation.
- **New Features**
- Updated the `write-cypress-status` script to support different alert
types and prefixes, ensuring better validation and formatting of alerts.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Specifying the `/test` command like this:
```
/test IDE
```
Doesn't pick up the `@tag.IDE` tag, but using `/test ide` does. This is
because of incorrect case-matching logic. This PR fixes this.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Bug Fixes**
- Enhanced case-insensitivity for tag matching to reduce errors.
- Improved error messaging for unmatched tags to provide clearer
feedback.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This PR switches the steps updating PR description to a local Javascript
script, run using `actions/github-script`, instead of depending on an
external third-party action.
Why? Besides reducing our dependency on third-party actions, which have
been found to break with surprises, we need this to fix a bug with the
`/test` command. The `/test` command, when is written with invalid tags,
reports the error in the workflow run, but doesn't update the PR
description. Because of how it's written in Javascript, we need a
Javascript way to update the description to fix that. This will provide
for that.
Further PRs will replace other uses of PR description update steps with
this.
**/test sanity**
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9556890596>
> Commit: 00d06858f6f7d14c6393cb16c894ddfd808b7cf8
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9556890596&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
<!-- end of auto-generated comment: Cypress test results -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Chores**
- Updated GitHub Actions workflow to enhance pull request automation
with Cypress test results.
- Improved PR body updates with detailed test outcomes.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
We have a check when running Cypress tests to ensure that no new `.js`
files are added under Cypress folder. This PR moves this check to a
separate JS file. There's another check that does some ADS compliance,
which I'll port in a follow-up PR.
Why am I hitting on this? One, to move away from `umani/changed-files`
workflow, which has randomly failed for us in the past, and id doesn't
do so much special for us anyway. Two, this workflow is the last usage
of `APPSMITH_CI_TEST_PAT` secret, so I should be able to remove that
secret as well. One less secret.
Adds support for a `/test` command, without breaking the existing
`/ok-to-test` habits.
This is a _sloppy_ version of `/ok-to-test`. Turns out humans are
sloppy. So let's embrace the human. 🤯
Example incantation:
```
/test sanity workflow
```
The sloppy parser at work:

Of course, if a PR body contains `/ok-to-test`, that takes precedence,
and any `/test` is ignored.
We're also moving the logic of parsing the tags to a separate Javascript
file. It's still not in a form that's easily testable, perhaps, but I
hope this is a start for us to get to a "unit-tested CI". ❤️
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>