'GitHub PR doesn't trigger GitLab pipeline
I'm trying to use GitHub to trigger on PR a GitLab pipeline. Practically when a developer creates a PR in GitHub, his/her code get tested against a GitLab pipeline.
I'm trying to follow this user guide: https://docs.gitlab.com/ee/ci/ci_cd_for_external_repos/github_integration.html
and we have a silver account, but it won't work. When creating the PR, the GitLab pipeline is not triggered.
Anyone with this kind of experience who can help? Thanks Joe
Solution 1:[1]
I've found the cause of the issue. In order for GitHub to trigger GitLab as CD/CI mostly in PR request, you need to have a Silver/Premium account AND, very important, being the root owner.
Any other case, you won't be able to see github in the integration list on GitLab. People from gitlab had the brilliant idea to hide it instead of showing it disabled (which would had been a tip to understand that you needed an upgraded license)
In the video above it's not explained.
Solution 2:[2]
Firstly, you need to give us the content of your .gitlab-ci.yaml
file. In your question you asked about GitHub but you're following Gitlab documentation which is completely different. Both are using git
commands to commit and push repos but Github
& Gitlab
are different.
- For Github pipelines, you need to create a repository, then you go to Actions. Github will propose you to configure a
.github/workflows
directory which contain afile.yaml
. In this.yaml
file you can code your pipelines. According to your project, Github will propose you several linux machines with the adequate configuration to run your files (If it's a Java Project --> you'll be proposed maven machines, Python --> Python Machines, React/Angular -> machines withnpm
installed, Docker, Kubernetes for deployments...) and you're limited to 4 private project as far as I know (check this last information).
- For Gitlab you have two options, you can use preconfigured machines like github, and you call them by adding for example a
tag: npm
in your.gitlab-ci.yaml
file, to call a machine with npm installed, but you need to pay an amount of money. Or you can configure your own runners by following theGitlab
documentation withgitlab
commands (which is the best option), but you'll need good machines and servers to runnpm - mvn - python3 - ... commands
Of course, in your Gitlab repository, and finally to answer your question this an example, of.gitlab-ci.yaml
file with two simple stages: build & test, theonly
statement specifies that these pipelines will run if there is a merge request ( I use the preconfigured machines of Gitlab as a sample here) More details on my python github project https://github.com/mehdimaaref7/Scrapping-Sentiment-Analysis and for gitlab https://docs.gitlab.com/runner/
stages:
- build
- test
build:
tags:
- shell
- linux
stage: build
script:
- echo "Building"
- mkdir build
- touch build/info.txt
artifacts:
paths:
- build/
only:
- merge_requests
test:
tags:
- shell
- linux
stage: test
script:
- echo "Testing"
- test -f "build/info.txt"
only:
- merge_requests
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Joe |
Solution 2 | Fuzzby |