Not all applications are deployed after merge

Hi, we use Qovery environments with multiple applications, each with its own deployment restrictions (path in monorepo). Our staging environment follows “master” branch, and we typically have 1 commit per PR so everything works well. We also have production environment following “release” branch, when we merge multiple commits only some application deployment is triggered. It’s hard to say for sure but it feels it’s considering either first or last commit of the merge and only the applications that were touched in that commit are deployed. Is it a known issue?

Hello @prki,

All applications should be deployed normally.
Can you give us the console.qovery.com URL of the environment where this is happening, so we can take a look at it ?

Sent it via PM. Let me know what you find.

Thanks for the information !

After investigation, can you confirm me that you are rebasing on your release branch ? And not doing a squash or a merge commit ?

I found an issue where we were only taking into account the head of the commits when a rebase is done, which should explain your issue.
I am going to try to fix the issue today and will let you know when it is released.

Yes, we use fast-forward merge without introducing new merge commits.

@prki I released a fix for the issue mentioned above.
Can you let me know if the issue is solved in your case ?

Thanks, I will verify during the deployment next week.

2 Likes

Hi @Erebe, I don’t think your fix worked (or worked fully). I had a big merge today with around 40 commits, and it didn’t trigger deployment for all the applications that were touched. However, this time it triggered for two that would not be touched in a single commit. It was a force push too, maybe that’s the problem.

hello @prki

I took a look and it must be due to your force push, because the list of commits we receive via webhook is empty or contains only a single value.
For example, for your last commit e1112cb32498005008b398ba671b9895df5fffd2, we only received

{
  "payload": {
    "after": "e1112xxxx",
    "base_ref": null,
    "before": "a163xxxxx",
    "commits": [
      {
        "added": [ ],
        "distinct": true,
        "id": "e1112xxxxx",
        "message": "TDT-78 Fix crash in xxxxx.",
        "modified": [
          "apps/agent-api/src/vendors/xxxts"
        ],
        "removed": [
        ],
        "timestamp": "2022-12-22T14:47:14+05:30",
      }
    ],
}

containing a single commit in the commits field. In normal case, this field contains the list of all commits that have add/merge onto the branch.

I see, we will avoid force push. However, you could support it if you pull a diff from the last deployed commit to the one that was pushed. It may be relevant for some people.