How to release a hotfix without the CI

In the How to hotfix article, you learned to release a hotfix using the CI, but sometimes the hotfix is too urgent to even wait for the CI. This article describes how you can do a production deployment in case they need to deploy a critical fix without waiting for the CI to finish.

🚧

Advanced users only

This article is meant for the advanced users of Frontastic.

Create a build version

To release the hotfix, you need to create a new build version of the format yyyy.mm.dd.hh.mm. So, for example, 2022.10.09.11.43, if you release on 9 October 2022 at 11:43.

Update the version= variable in the environment file in the repository's root with this value.

Build frontend assets

📘

You can skip this step if the hotfix only contains backend changes.

To build the frontend, you need a Frontastic sandbox for your project that's set up correctly (frontastic init).

  1. Start the file synchronization with a sandbox (frontastic run) and connect to the sandbox using SSH (frontastic ssh)
  2. Update version value in the environment file on the sandbox as this isn't done automatically by frontastic run
  3. Change to the project directory (<customer name>_<project name>)
  4. Run the following command in the project directory on the sandbox to build the server-side rendering application
yarn install

CI=false PUBLIC_URL=/ yarn run build server
  1. Copy the newly built server.js (and server.js.map if applicable) files from the build/assets/js/ directory on the sandbox to the bin/ directory of your project. You can use a tool like scp to do this.
  2. Run the following command on the sandbox to build the client-side assets
CI=false PUBLIC_URL=/ yarn run build main
  1. Copy the newly built artifacts, including the assets/ directory and the service-worker.js file from the build/ folder on the sandbox to the public/ directory on your system. Based on your setup, you might need to replace additional files.
  2. Update all asset references in the templates/layout.html.twig file in the project directory. Based on your setup, the template might reference the.js and .css files by filename, including the hash of the assets.

Commit and Tag

Commit all changes, including the updated environment file, the new build assets, and the template. Now, create a Git tag with the version number created earlier as it's name and push the commit and the tag to the GitHub repository.

Deploy the hotfix

  1. Go to the Developer > Deployment page in the studio and copy the curl command at the bottom. For example,
curl -X POST --cookie 'some-cookie-value' --header 'Content-Type: application/json' -d '{"tag": "####.##.##.##.##"}' 'https://<your-studio-url>/api/deployment/schedule?environment=env'

Don't share the curl command

The curl command copied from the studio contains the cookie with the studio authentication information. So, it's critical to treat it as a secret and not share the command with anyone else.

  1. Add the new version number in the tag property of the JSON body. And replace the env at the end of the URL with the environment which should be deployed needs to be set at the end (based on your setup, probably production or staging).
  2. Run the curl command can be executed to trigger a deployment of the newly built release.