{"action":"closed","number":96,"pull_request":{"url":"https://api.github.com/repos/ls1intum/Artemis/pulls/96","id":206625733,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA2NjI1NzMz","html_url":"https://github.com/ls1intum/Artemis/pull/96","diff_url":"https://github.com/ls1intum/Artemis/pull/96.diff","patch_url":"https://github.com/ls1intum/Artemis/pull/96.patch","issue_url":"https://api.github.com/repos/ls1intum/Artemis/issues/96","number":96,"state":"closed","locked":false,"title":"[BLOCKED] Add Gitlab as alternative Version Control System","user":{"login":"sleiss","id":5084100,"node_id":"MDQ6VXNlcjUwODQxMDA=","avatar_url":"https://avatars3.githubusercontent.com/u/5084100?v=4","gravatar_id":"","url":"https://api.github.com/users/sleiss","html_url":"https://github.com/sleiss","followers_url":"https://api.github.com/users/sleiss/followers","following_url":"https://api.github.com/users/sleiss/following{/other_user}","gists_url":"https://api.github.com/users/sleiss/gists{/gist_id}","starred_url":"https://api.github.com/users/sleiss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sleiss/subscriptions","organizations_url":"https://api.github.com/users/sleiss/orgs","repos_url":"https://api.github.com/users/sleiss/repos","events_url":"https://api.github.com/users/sleiss/events{/privacy}","received_events_url":"https://api.github.com/users/sleiss/received_events","type":"User","site_admin":false},"body":"This PullRequest adds Gitlab as alternative implementation of the VersionControlSystem interface.\r\nIt has the same functions like BitBucket, however several things still have to be decided: \r\n\r\n- [x]  ~~Decide if we also have to add users to groups like BitBucket does for LTI-Users (Gitlab does not support groups specifying permissions, we could only add them to Gitlab-groups (equivalent of BitBucket-projects)). **Decision: No**~~\r\n- [x]  ~~Notification of the CIService about pushes has to be decided: The VersionControlSystem interface now supports the creation of WebHooks when pushing to the VCS (both Gitlab and BitBucket), however, we have to decide if we inform ArTEMiS and proxy the request to the CI-Server or if we want to notify the CI-Server without the proxying through ArTEMiS. **Proposal:** The WebHook should notify ArTEMiS and the CI-Server in case this is necessary -> setting in application-dev.yml artemis.version-control.create-ci-webhook) **UPDATE:** No longer needed as we use the ContinuousIntegrationUpdateService for this.~~\r\n- [x]  ~~The config-layout has to be specified: One entry for both BitBucket and Gitlab could be possible in theory, although Gitlab uses private-tokens while Bitbucket uses a password to authenticate. We might use a \"secret\"-value that represents either the password or the private-token. The selection of the implementation should be possible through the Spring profiles, so we don't need an option for this. Additionally, we have to think about a possible migration of existing configs. **Decision:** One entry: artemis.version-control with artemis.version-control.secret (which is used for either a password or a private-token)~~\r\n- [x]  ~~In Gitlab, forks can only be created with the same name, therefor we cannot directly fork the repository into the same namespace. We avoid this by creating a new project and importing the old project. However, no fork-relationship is created when using this. We can create the fork-relationship via API if needed, but it has to be decided whether this is needed. **Decision:** that's ok~~\r\n- [x] ~~Is an initial build fine for every project or is this producing to much load?  **Update:** We can avoid this by initially sending a changeDetection-Call (without forcing a build)~~\r\n- [x] ~~Is the creation of a new config value fine for the external URL of ArTEMiS? **Decision:** Yes~~\r\n- [x] ~~Can JSoup be included in order to enable triggerlist support for the Bamboo hook? **Decision:** Yes~~\r\n- [x] ~~Updates of the Test-Repository need to be announced to ArTEMiS and the ContinousIntegrationService **DONE, BUT** we still have to save the test-repository URL in ArTEMiS. **Update:** The instructor will manually add the WebHook~~\r\n- [x] ~~Submission has to be linked to a result~~\r\n- [x] User integration? LDAP, Jira Crowd? **Update:** See Confluence\r\n- [x] ~~Shared Credentials in Bamboo, currently hardcoded as \"artemis-gitlab\", is this fine? **Update:** Should be~~","created_at":"2018-08-07T08:55:54Z","updated_at":"2019-11-18T22:38:37Z","closed_at":"2019-11-18T22:38:37Z","merged_at":null,"merge_commit_sha":"9bb1ab152c9f70c350d71afb3af2100e2578d774","assignee":null,"assignees":[],"requested_reviewers":[{"login":"krusche","id":744067,"node_id":"MDQ6VXNlcjc0NDA2Nw==","avatar_url":"https://avatars1.githubusercontent.com/u/744067?v=4","gravatar_id":"","url":"https://api.github.com/users/krusche","html_url":"https://github.com/krusche","followers_url":"https://api.github.com/users/krusche/followers","following_url":"https://api.github.com/users/krusche/following{/other_user}","gists_url":"https://api.github.com/users/krusche/gists{/gist_id}","starred_url":"https://api.github.com/users/krusche/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krusche/subscriptions","organizations_url":"https://api.github.com/users/krusche/orgs","repos_url":"https://api.github.com/users/krusche/repos","events_url":"https://api.github.com/users/krusche/events{/privacy}","received_events_url":"https://api.github.com/users/krusche/received_events","type":"User","site_admin":false},{"login":"jpbernius","id":6382716,"node_id":"MDQ6VXNlcjYzODI3MTY=","avatar_url":"https://avatars1.githubusercontent.com/u/6382716?v=4","gravatar_id":"","url":"https://api.github.com/users/jpbernius","html_url":"https://github.com/jpbernius","followers_url":"https://api.github.com/users/jpbernius/followers","following_url":"https://api.github.com/users/jpbernius/following{/other_user}","gists_url":"https://api.github.com/users/jpbernius/gists{/gist_id}","starred_url":"https://api.github.com/users/jpbernius/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpbernius/subscriptions","organizations_url":"https://api.github.com/users/jpbernius/orgs","repos_url":"https://api.github.com/users/jpbernius/repos","events_url":"https://api.github.com/users/jpbernius/events{/privacy}","received_events_url":"https://api.github.com/users/jpbernius/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":1221610597,"node_id":"MDU6TGFiZWwxMjIxNjEwNTk3","url":"https://api.github.com/repos/ls1intum/Artemis/labels/blocked","name":"blocked","color":"000000","default":false},{"id":1380059758,"node_id":"MDU6TGFiZWwxMzgwMDU5NzU4","url":"https://api.github.com/repos/ls1intum/Artemis/labels/server","name":"server","color":"ffa221","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/ls1intum/Artemis/pulls/96/commits","review_comments_url":"https://api.github.com/repos/ls1intum/Artemis/pulls/96/comments","review_comment_url":"https://api.github.com/repos/ls1intum/Artemis/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ls1intum/Artemis/issues/96/comments","statuses_url":"https://api.github.com/repos/ls1intum/Artemis/statuses/870985547952646684abed43ded820ed0508881e","head":{"label":"ls1intum:feature/gitlab-service","ref":"feature/gitlab-service","sha":"870985547952646684abed43ded820ed0508881e","user":{"login":"ls1intum","id":11064260,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMDY0MjYw","avatar_url":"https://avatars3.githubusercontent.com/u/11064260?v=4","gravatar_id":"","url":"https://api.github.com/users/ls1intum","html_url":"https://github.com/ls1intum","followers_url":"https://api.github.com/users/ls1intum/followers","following_url":"https://api.github.com/users/ls1intum/following{/other_user}","gists_url":"https://api.github.com/users/ls1intum/gists{/gist_id}","starred_url":"https://api.github.com/users/ls1intum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ls1intum/subscriptions","organizations_url":"https://api.github.com/users/ls1intum/orgs","repos_url":"https://api.github.com/users/ls1intum/repos","events_url":"https://api.github.com/users/ls1intum/events{/privacy}","received_events_url":"https://api.github.com/users/ls1intum/received_events","type":"Organization","site_admin":false},"repo":{"id":69562331,"node_id":"MDEwOlJlcG9zaXRvcnk2OTU2MjMzMQ==","name":"Artemis","full_name":"ls1intum/Artemis","private":false,"owner":{"login":"ls1intum","id":11064260,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMDY0MjYw","avatar_url":"https://avatars3.githubusercontent.com/u/11064260?v=4","gravatar_id":"","url":"https://api.github.com/users/ls1intum","html_url":"https://github.com/ls1intum","followers_url":"https://api.github.com/users/ls1intum/followers","following_url":"https://api.github.com/users/ls1intum/following{/other_user}","gists_url":"https://api.github.com/users/ls1intum/gists{/gist_id}","starred_url":"https://api.github.com/users/ls1intum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ls1intum/subscriptions","organizations_url":"https://api.github.com/users/ls1intum/orgs","repos_url":"https://api.github.com/users/ls1intum/repos","events_url":"https://api.github.com/users/ls1intum/events{/privacy}","received_events_url":"https://api.github.com/users/ls1intum/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/ls1intum/Artemis","description":"Automated Individual Feedback System for Interactive Learning","fork":false,"url":"https://api.github.com/repos/ls1intum/Artemis","forks_url":"https://api.github.com/repos/ls1intum/Artemis/forks","keys_url":"https://api.github.com/repos/ls1intum/Artemis/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ls1intum/Artemis/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ls1intum/Artemis/teams","hooks_url":"https://api.github.com/repos/ls1intum/Artemis/hooks","issue_events_url":"https://api.github.com/repos/ls1intum/Artemis/issues/events{/number}","events_url":"https://api.github.com/repos/ls1intum/Artemis/events","assignees_url":"https://api.github.com/repos/ls1intum/Artemis/assignees{/user}","branches_url":"https://api.github.com/repos/ls1intum/Artemis/branches{/branch}","tags_url":"https://api.github.com/repos/ls1intum/Artemis/tags","blobs_url":"https://api.github.com/repos/ls1intum/Artemis/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ls1intum/Artemis/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ls1intum/Artemis/git/refs{/sha}","trees_url":"https://api.github.com/repos/ls1intum/Artemis/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ls1intum/Artemis/statuses/{sha}","languages_url":"https://api.github.com/repos/ls1intum/Artemis/languages","stargazers_url":"https://api.github.com/repos/ls1intum/Artemis/stargazers","contributors_url":"https://api.github.com/repos/ls1intum/Artemis/contributors","subscribers_url":"https://api.github.com/repos/ls1intum/Artemis/subscribers","subscription_url":"https://api.github.com/repos/ls1intum/Artemis/subscription","commits_url":"https://api.github.com/repos/ls1intum/Artemis/commits{/sha}","git_commits_url":"https://api.github.com/repos/ls1intum/Artemis/git/commits{/sha}","comments_url":"https://api.github.com/repos/ls1intum/Artemis/comments{/number}","issue_comment_url":"https://api.github.com/repos/ls1intum/Artemis/issues/comments{/number}","contents_url":"https://api.github.com/repos/ls1intum/Artemis/contents/{+path}","compare_url":"https://api.github.com/repos/ls1intum/Artemis/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ls1intum/Artemis/merges","archive_url":"https://api.github.com/repos/ls1intum/Artemis/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ls1intum/Artemis/downloads","issues_url":"https://api.github.com/repos/ls1intum/Artemis/issues{/number}","pulls_url":"https://api.github.com/repos/ls1intum/Artemis/pulls{/number}","milestones_url":"https://api.github.com/repos/ls1intum/Artemis/milestones{/number}","notifications_url":"https://api.github.com/repos/ls1intum/Artemis/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ls1intum/Artemis/labels{/name}","releases_url":"https://api.github.com/repos/ls1intum/Artemis/releases{/id}","deployments_url":"https://api.github.com/repos/ls1intum/Artemis/deployments","created_at":"2016-09-29T11:46:05Z","updated_at":"2019-11-18T21:44:57Z","pushed_at":"2019-11-18T22:37:27Z","git_url":"git://github.com/ls1intum/Artemis.git","ssh_url":"git@github.com:ls1intum/Artemis.git","clone_url":"https://github.com/ls1intum/Artemis.git","svn_url":"https://github.com/ls1intum/Artemis","homepage":"http://www.interactive-learning.org","size":53070,"stargazers_count":67,"watchers_count":67,"language":"TypeScript","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":32,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":120,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":32,"open_issues":120,"watchers":67,"default_branch":"develop"}},"base":{"label":"ls1intum:develop","ref":"develop","sha":"4e1d5cb13cecceaeb2d42191be3b28e3ba3b5127","user":{"login":"ls1intum","id":11064260,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMDY0MjYw","avatar_url":"https://avatars3.githubusercontent.com/u/11064260?v=4","gravatar_id":"","url":"https://api.github.com/users/ls1intum","html_url":"https://github.com/ls1intum","followers_url":"https://api.github.com/users/ls1intum/followers","following_url":"https://api.github.com/users/ls1intum/following{/other_user}","gists_url":"https://api.github.com/users/ls1intum/gists{/gist_id}","starred_url":"https://api.github.com/users/ls1intum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ls1intum/subscriptions","organizations_url":"https://api.github.com/users/ls1intum/orgs","repos_url":"https://api.github.com/users/ls1intum/repos","events_url":"https://api.github.com/users/ls1intum/events{/privacy}","received_events_url":"https://api.github.com/users/ls1intum/received_events","type":"Organization","site_admin":false},"repo":{"id":69562331,"node_id":"MDEwOlJlcG9zaXRvcnk2OTU2MjMzMQ==","name":"Artemis","full_name":"ls1intum/Artemis","private":false,"owner":{"login":"ls1intum","id":11064260,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMDY0MjYw","avatar_url":"https://avatars3.githubusercontent.com/u/11064260?v=4","gravatar_id":"","url":"https://api.github.com/users/ls1intum","html_url":"https://github.com/ls1intum","followers_url":"https://api.github.com/users/ls1intum/followers","following_url":"https://api.github.com/users/ls1intum/following{/other_user}","gists_url":"https://api.github.com/users/ls1intum/gists{/gist_id}","starred_url":"https://api.github.com/users/ls1intum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ls1intum/subscriptions","organizations_url":"https://api.github.com/users/ls1intum/orgs","repos_url":"https://api.github.com/users/ls1intum/repos","events_url":"https://api.github.com/users/ls1intum/events{/privacy}","received_events_url":"https://api.github.com/users/ls1intum/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/ls1intum/Artemis","description":"Automated Individual Feedback System for Interactive Learning","fork":false,"url":"https://api.github.com/repos/ls1intum/Artemis","forks_url":"https://api.github.com/repos/ls1intum/Artemis/forks","keys_url":"https://api.github.com/repos/ls1intum/Artemis/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ls1intum/Artemis/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ls1intum/Artemis/teams","hooks_url":"https://api.github.com/repos/ls1intum/Artemis/hooks","issue_events_url":"https://api.github.com/repos/ls1intum/Artemis/issues/events{/number}","events_url":"https://api.github.com/repos/ls1intum/Artemis/events","assignees_url":"https://api.github.com/repos/ls1intum/Artemis/assignees{/user}","branches_url":"https://api.github.com/repos/ls1intum/Artemis/branches{/branch}","tags_url":"https://api.github.com/repos/ls1intum/Artemis/tags","blobs_url":"https://api.github.com/repos/ls1intum/Artemis/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ls1intum/Artemis/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ls1intum/Artemis/git/refs{/sha}","trees_url":"https://api.github.com/repos/ls1intum/Artemis/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ls1intum/Artemis/statuses/{sha}","languages_url":"https://api.github.com/repos/ls1intum/Artemis/languages","stargazers_url":"https://api.github.com/repos/ls1intum/Artemis/stargazers","contributors_url":"https://api.github.com/repos/ls1intum/Artemis/contributors","subscribers_url":"https://api.github.com/repos/ls1intum/Artemis/subscribers","subscription_url":"https://api.github.com/repos/ls1intum/Artemis/subscription","commits_url":"https://api.github.com/repos/ls1intum/Artemis/commits{/sha}","git_commits_url":"https://api.github.com/repos/ls1intum/Artemis/git/commits{/sha}","comments_url":"https://api.github.com/repos/ls1intum/Artemis/comments{/number}","issue_comment_url":"https://api.github.com/repos/ls1intum/Artemis/issues/comments{/number}","contents_url":"https://api.github.com/repos/ls1intum/Artemis/contents/{+path}","compare_url":"https://api.github.com/repos/ls1intum/Artemis/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ls1intum/Artemis/merges","archive_url":"https://api.github.com/repos/ls1intum/Artemis/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ls1intum/Artemis/downloads","issues_url":"https://api.github.com/repos/ls1intum/Artemis/issues{/number}","pulls_url":"https://api.github.com/repos/ls1intum/Artemis/pulls{/number}","milestones_url":"https://api.github.com/repos/ls1intum/Artemis/milestones{/number}","notifications_url":"https://api.github.com/repos/ls1intum/Artemis/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ls1intum/Artemis/labels{/name}","releases_url":"https://api.github.com/repos/ls1intum/Artemis/releases{/id}","deployments_url":"https://api.github.com/repos/ls1intum/Artemis/deployments","created_at":"2016-09-29T11:46:05Z","updated_at":"2019-11-18T21:44:57Z","pushed_at":"2019-11-18T22:37:27Z","git_url":"git://github.com/ls1intum/Artemis.git","ssh_url":"git@github.com:ls1intum/Artemis.git","clone_url":"https://github.com/ls1intum/Artemis.git","svn_url":"https://github.com/ls1intum/Artemis","homepage":"http://www.interactive-learning.org","size":53070,"stargazers_count":67,"watchers_count":67,"language":"TypeScript","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":32,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":120,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":32,"open_issues":120,"watchers":67,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/ls1intum/Artemis/pulls/96"},"html":{"href":"https://github.com/ls1intum/Artemis/pull/96"},"issue":{"href":"https://api.github.com/repos/ls1intum/Artemis/issues/96"},"comments":{"href":"https://api.github.com/repos/ls1intum/Artemis/issues/96/comments"},"review_comments":{"href":"https://api.github.com/repos/ls1intum/Artemis/pulls/96/comments"},"review_comment":{"href":"https://api.github.com/repos/ls1intum/Artemis/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ls1intum/Artemis/pulls/96/commits"},"statuses":{"href":"https://api.github.com/repos/ls1intum/Artemis/statuses/870985547952646684abed43ded820ed0508881e"}},"author_association":"CONTRIBUTOR","merged":false,"mergeable":true,"rebaseable":false,"mergeable_state":"unstable","merged_by":null,"comments":2,"review_comments":0,"maintainer_can_modify":false,"commits":48,"additions":737,"deletions":0,"changed_files":5}}
{"actor":{"display_login":"krusche"}}