Message ID | 20210712145630.2857814-1-philmd@redhat.com |
---|---|
State | New |
Headers | show |
On Mon, 12 Jul 2021 at 16:02, Philippe Mathieu-Daudé <philmd@redhat.com> wrote: > > The following changes since commit bd38ae26cea0d1d6a97f930248df149204c210a2: > > Merge remote-tracking branch 'remotes/rth-gitlab/tags/pull-tcg-20210710' into staging (2021-07-12 11:02:39 +0100) > > are available in the Git repository at: > > https://github.com/philmd/qemu.git tags/fw-edk2-20210712 > > for you to fetch changes up to d1e79210457323b225c369fa00e97577e0d0da95: > > MAINTAINERS: remove Laszlo Ersek's entries (2021-07-12 16:55:23 +0200) > > ---------------------------------------------------------------- > Patches related to EDK2/OVMF > > - MAINTAINERS: remove Laszlo Ersek's entries > - Introduce X86_FW_OVMF Kconfig symbol > - pc_system_ovmf_table_find: Assert that flash was parsed, document > > ---------------------------------------------------------------- So, even though this pullreq doesn't seem to be changing gitlab CI config, I get a "yaml invalid" failure in the pipeline: https://gitlab.com/qemu-project/qemu/-/pipelines/335995843 "'build-edk2' job needs 'docker-edk2' job but it was not added to the pipeline" Any ideas what that's about? thanks -- PMM
On 7/13/21 12:25 PM, Peter Maydell wrote: > On Mon, 12 Jul 2021 at 16:02, Philippe Mathieu-Daudé <philmd@redhat.com> wrote: >> >> The following changes since commit bd38ae26cea0d1d6a97f930248df149204c210a2: >> >> Merge remote-tracking branch 'remotes/rth-gitlab/tags/pull-tcg-20210710' into staging (2021-07-12 11:02:39 +0100) >> >> are available in the Git repository at: >> >> https://github.com/philmd/qemu.git tags/fw-edk2-20210712 >> >> for you to fetch changes up to d1e79210457323b225c369fa00e97577e0d0da95: >> >> MAINTAINERS: remove Laszlo Ersek's entries (2021-07-12 16:55:23 +0200) >> >> ---------------------------------------------------------------- >> Patches related to EDK2/OVMF >> >> - MAINTAINERS: remove Laszlo Ersek's entries >> - Introduce X86_FW_OVMF Kconfig symbol >> - pc_system_ovmf_table_find: Assert that flash was parsed, document >> >> ---------------------------------------------------------------- > > So, even though this pullreq doesn't seem to be changing gitlab CI > config, I get a "yaml invalid" failure in the pipeline: > https://gitlab.com/qemu-project/qemu/-/pipelines/335995843 > > "'build-edk2' job needs 'docker-edk2' job but it was not added to the pipeline" > > Any ideas what that's about? For me this is related to what I tried to fix last year but couldn't convince Daniel there was a problem. See this thread: https://www.mail-archive.com/qemu-devel@nongnu.org/msg773939.html
On Tue, Jul 13, 2021 at 11:25:21AM +0100, Peter Maydell wrote: > On Mon, 12 Jul 2021 at 16:02, Philippe Mathieu-Daudé <philmd@redhat.com> wrote: > > > > The following changes since commit bd38ae26cea0d1d6a97f930248df149204c210a2: > > > > Merge remote-tracking branch 'remotes/rth-gitlab/tags/pull-tcg-20210710' into staging (2021-07-12 11:02:39 +0100) > > > > are available in the Git repository at: > > > > https://github.com/philmd/qemu.git tags/fw-edk2-20210712 > > > > for you to fetch changes up to d1e79210457323b225c369fa00e97577e0d0da95: > > > > MAINTAINERS: remove Laszlo Ersek's entries (2021-07-12 16:55:23 +0200) > > > > ---------------------------------------------------------------- > > Patches related to EDK2/OVMF > > > > - MAINTAINERS: remove Laszlo Ersek's entries > > - Introduce X86_FW_OVMF Kconfig symbol > > - pc_system_ovmf_table_find: Assert that flash was parsed, document > > > > ---------------------------------------------------------------- > > So, even though this pullreq doesn't seem to be changing gitlab CI > config, I get a "yaml invalid" failure in the pipeline: > https://gitlab.com/qemu-project/qemu/-/pipelines/335995843 > > "'build-edk2' job needs 'docker-edk2' job but it was not added to the pipeline" > > Any ideas what that's about? The rules for these two jobs are not compatible with the depedency declared between them. The docker-edk2 job is set to exist only when edk2.yml or Dockerfile are changed: docker-edk2: stage: containers rules: # Only run this job when the Dockerfile is modified - changes: - .gitlab-ci.d/edk2.yml - .gitlab-ci.d/edk2/Dockerfile when: always The build-edk2 job is set to exist based on a wide variety of changes build-edk2: stage: build needs: ['docker-edk2'] rules: # Only run this job when ... - changes: # ... roms/edk2/ is modified (submodule updated) - roms/edk2/* when: always - if: '$CI_COMMIT_REF_NAME =~ /^edk2/' # or the branch/tag starts with 'edk2' when: always - if: '$CI_COMMIT_MESSAGE =~ /edk2/i' # or last commit description contains 'EDK2' when: always If those jobs were independant those different sets of conditions would be ok. The build-edk2 job, however, has a 'needs' clause adding a depdancy on 'docker-edk2'. Given this dependancy, in *EVERY* scenario were 'build-edk2' job exists, the 'docker-edk2' job *MUST* also exist. This isn't the case, hence the failed pipeline. This can be fixed by taking the 'rules' from 'build-edk2' and also applying them to 'docker-edk2'. Regards, Daniel
On Tue, Jul 13, 2021 at 12:35:18PM +0200, Philippe Mathieu-Daudé wrote: > On 7/13/21 12:25 PM, Peter Maydell wrote: > > On Mon, 12 Jul 2021 at 16:02, Philippe Mathieu-Daudé <philmd@redhat.com> wrote: > >> > >> The following changes since commit bd38ae26cea0d1d6a97f930248df149204c210a2: > >> > >> Merge remote-tracking branch 'remotes/rth-gitlab/tags/pull-tcg-20210710' into staging (2021-07-12 11:02:39 +0100) > >> > >> are available in the Git repository at: > >> > >> https://github.com/philmd/qemu.git tags/fw-edk2-20210712 > >> > >> for you to fetch changes up to d1e79210457323b225c369fa00e97577e0d0da95: > >> > >> MAINTAINERS: remove Laszlo Ersek's entries (2021-07-12 16:55:23 +0200) > >> > >> ---------------------------------------------------------------- > >> Patches related to EDK2/OVMF > >> > >> - MAINTAINERS: remove Laszlo Ersek's entries > >> - Introduce X86_FW_OVMF Kconfig symbol > >> - pc_system_ovmf_table_find: Assert that flash was parsed, document > >> > >> ---------------------------------------------------------------- > > > > So, even though this pullreq doesn't seem to be changing gitlab CI > > config, I get a "yaml invalid" failure in the pipeline: > > https://gitlab.com/qemu-project/qemu/-/pipelines/335995843 > > > > "'build-edk2' job needs 'docker-edk2' job but it was not added to the pipeline" > > > > Any ideas what that's about? > > For me this is related to what I tried to fix last year but > couldn't convince Daniel there was a problem. See this thread: > https://www.mail-archive.com/qemu-devel@nongnu.org/msg773939.html The situation was different back then, as there was no direct 'needs' relation between the jobs. This is also addressing a different issue, which I better understand now. The filtering based on file names is unreliable when combined with git pushes. Gitlab looks at the files modified in the delta beween what is pushed as what already exists on the remote branch. So if you push 3 changes to a branch, and then push another 2 changes later, files modified by the first 3 changes won't be considered by the filter rules, leading to unexpected execution behaviour. Essentially filtering based on filename is only sane when used with merge requests, not pushes, because a merge request has a well defined base commit against which file changes are evaluated. Regards, Daniel
On 7/13/21 1:16 PM, Daniel P. Berrangé wrote: > On Tue, Jul 13, 2021 at 11:25:21AM +0100, Peter Maydell wrote: >> On Mon, 12 Jul 2021 at 16:02, Philippe Mathieu-Daudé <philmd@redhat.com> wrote: >>> >>> The following changes since commit bd38ae26cea0d1d6a97f930248df149204c210a2: >>> >>> Merge remote-tracking branch 'remotes/rth-gitlab/tags/pull-tcg-20210710' into staging (2021-07-12 11:02:39 +0100) >>> >>> are available in the Git repository at: >>> >>> https://github.com/philmd/qemu.git tags/fw-edk2-20210712 >>> >>> for you to fetch changes up to d1e79210457323b225c369fa00e97577e0d0da95: >>> >>> MAINTAINERS: remove Laszlo Ersek's entries (2021-07-12 16:55:23 +0200) >>> >>> ---------------------------------------------------------------- >>> Patches related to EDK2/OVMF >>> >>> - MAINTAINERS: remove Laszlo Ersek's entries >>> - Introduce X86_FW_OVMF Kconfig symbol >>> - pc_system_ovmf_table_find: Assert that flash was parsed, document >>> >>> ---------------------------------------------------------------- >> >> So, even though this pullreq doesn't seem to be changing gitlab CI >> config, I get a "yaml invalid" failure in the pipeline: >> https://gitlab.com/qemu-project/qemu/-/pipelines/335995843 >> >> "'build-edk2' job needs 'docker-edk2' job but it was not added to the pipeline" >> >> Any ideas what that's about? > > The rules for these two jobs are not compatible with the depedency > declared between them. > > The docker-edk2 job is set to exist only when edk2.yml or Dockerfile > are changed: > > docker-edk2: > stage: containers > rules: # Only run this job when the Dockerfile is modified > - changes: > - .gitlab-ci.d/edk2.yml > - .gitlab-ci.d/edk2/Dockerfile > when: always > > > The build-edk2 job is set to exist based on a wide variety of > changes > > build-edk2: > stage: build > needs: ['docker-edk2'] > rules: # Only run this job when ... > - changes: # ... roms/edk2/ is modified (submodule updated) > - roms/edk2/* > when: always > - if: '$CI_COMMIT_REF_NAME =~ /^edk2/' # or the branch/tag starts with 'edk2' > when: always > - if: '$CI_COMMIT_MESSAGE =~ /edk2/i' # or last commit description contains 'EDK2' > when: always > > > If those jobs were independant those different sets of conditions > would be ok. The build-edk2 job, however, has a 'needs' clause > adding a depdancy on 'docker-edk2'. > > Given this dependancy, in *EVERY* scenario were 'build-edk2' job > exists, the 'docker-edk2' job *MUST* also exist. This isn't the > case, hence the failed pipeline. > > This can be fixed by taking the 'rules' from 'build-edk2' and > also applying them to 'docker-edk2'. Thank you for figuring the problem and clearly explaining it! Phil.