Sorry for the late response. It seems like there is some confusion as to how some of the CI/CD parameters work. I recommend thoroughly reviewing the GitLab CI/CD Pipeline Configuration Reference, as I think it will answer a lot of your questions.
To quickly summarize:
only: argument is configured so that the
deploy_master job only applies to the
merge_requests branches. This means that commits to all other branches will have this job skipped (probably what you are seeing).
when: argument is configured to set the
deploy_branch job as manual, but the
except: argument is only configured to reference the
master branch. This means that commits to all other branches will create a pending manual job (probably all the manual jobs you are seeing).
If you are looking to hide pending manual jobs or skipped jobs, that kind of indicates that they may not need to be present in the first place. Refactoring your
.gitlab-ci.yml to do exactly what you are looking to accomplish is probably the better option here.
Let me know if something isn’t clear.