diff --git a/CONTRIBUTING.org b/CONTRIBUTING.org index 705c6d1ff83f0b34e82aa59d826343fe979cc8d5..18bab331a53a86f9645c0736433c387c6fd10175 100644 --- a/CONTRIBUTING.org +++ b/CONTRIBUTING.org @@ -1,60 +1,58 @@ * To contribute to the project, you need to do it through merge request +** Create a fork + First you need to fork the repository into your own account. You can + do that simply by clicking the fork button on the gitlab interface. - First you need to fork the repository into your own account. You can - do that simply by clicking the fork button on the gitlab interface. - - https://gitlab.inria.fr/solverstack/chameleon/forks/new - - Then, clone the repository on your laptop: - #+begin_src sh - git clone git@gitlab.inria.fr:username/forkname.git - #+end_src - - Once this is done, you can setup the chameleon repository as the - upstream of your clone to simplify the update of your fork - repository. - #+begin_src sh - git remote add upstream git@gitlab.inria.fr:solverstack/chameleon.git - #+end_src - - To update your fork with the upstream chameleon's state: - #+begin_src sh - git pull upstream master - git push -u origin master - #+end_src - - Now, you have your repository configured, and you want to create a - new pull request. The first step is to create a branch from the HEAD - of the your fork repository. - - #+begin_src sh - git branch your_branch_name - git checkout your_branch_name - #+end_src - - Apply your modifications in your branch. Then, you need to push this - branch on your online repository - #+begin_src sh - git push -f origin your_branch_name - #+end_src - or without -f, if the branch already exists online, and you just - want to update it. - - Once your branch is online, on the gitlab interface, go to the - branches webpage, select the branch you want to push as a merge - request, and push the button !!! - - *Be careful to check the 'close after merge' check box, and to push - to the solverstack/chameleon repository*. By default the checkbox - may not be checked, and the default repository is your fork. - - If the pull request is made to fix an issue, please name the branch - "issueXX" so it is automatically linked to the issue. In addition, - please add "fix issue #xx" in the comment of the pull request to - automatically close the issue when the PR is merged. + https://gitlab.inria.fr/solverstack/chameleon/forks/new -** Rebase on top of 'master' + Then, clone the repository on your laptop: + #+begin_src sh + git clone git@gitlab.inria.fr:username/forkname.git + #+end_src + + Once this is done, you can setup the chameleon repository as the + upstream of your clone to simplify the update of your fork + repository. + #+begin_src sh + git remote add upstream git@gitlab.inria.fr:solverstack/chameleon.git + #+end_src + To update your fork with the upstream chameleon's state: + #+begin_src sh + git pull upstream master + git push -u origin master + #+end_src + +** Create a "Feature" branch in your fork + + To add a new feature, fix a bug, and so on, you need to create a + new branch from the last state of the master branch + #+begin_src sh + git branch your_branch_name + git checkout your_branch_name + #+end_src + + Apply your modifications in that "Feature" branch. Then, you need + to push this branch on your online repository + #+begin_src sh + git push origin your_branch_name + #+end_src + +** Merge request + Once your branch is online, on the gitlab interface, go to the + branches webpage, select the branch you want to push as a merge + request, and push the button !!! + + *Be careful to check the 'close after merge' check box, and to push + to the solverstack/chameleon repository*. By default the checkbox + may not be checked, and the default repository is your fork. + + If the pull request is made to fix an issue, please name the branch + "issueXX" so it is automatically linked to the issue. In addition, + please add "fix issue #xx" in the comment of the pull request to + automatically close the issue when the PR is merged. + +** Rebase on top of 'master' In some cases your "feature" branch you want to merge into "master" has a long life span so that your branch and the master branch could make some conflicts. To avoid having to handle the possible @@ -74,6 +72,74 @@ Then push the button *merge request*. +* Configure a runner to test your branch + To be effectively merged, your branch must be tested through the + [[https://gitlab.inria.fr/help/ci/README.md][gitlab-ci]] mechanism. + + In order to execute the tests the contributor should define his own + /gitlab runner/, /e.g/. his laptop or any other remote machine. To avoid + having to install the proper dependencies in every runners we use + the [[https://www.docker.com/][Docker]] image /hpclib/hiepacs/ whose recipe is defined + [[https://gitlab.inria.fr/sed-bso/hpclib/blob/master/tools/dockerfiles/hiepacs/Dockerfile][here]]. Consequently, to register a compatible runner the requirements + on the system are : + * OS must be Linux + * Docker must be installed, e.g. + #+begin_src sh + sudo apt-get update && sudo apt-get install -y curl + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - + sudo apt install -y software-properties-common + sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" + sudo apt-get update + sudo apt install -y docker-ce + sudo usermod -aG docker ${USER} + newgrp docker + #+end_src + +*** Register your runner + Please read first the [[https://gitlab.inria.fr/help/ci/runners/README.md][Gitlab documentation]] for general information + about runners registration. + + Three steps are required: + 1) install the gitlab-runner program + 2) register your runner to your project (your fork of Chameleon) + 3) start gitlab-runner as a service + #+begin_src sh + # install gitlab-runner + sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-ci-multi-runner-linux-amd64 + sudo chmod +x /usr/local/bin/gitlab-runner + sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash + + # register runner to https://gitlab.inria.fr/ + sudo gitlab-runner register # see just after for an example + + # install and run as a service + sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner + sudo gitlab-runner start + #+end_src + + Example of registering sequence: + #+begin_example + sudo gitlab-runner register + Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/): + https://gitlab.inria.fr/ + Please enter the gitlab-ci token for this runner: + # copy/paste the project's secret token here + Please enter the gitlab-ci description for this runner: + [ubuntu1604]: + Please enter the gitlab-ci tags for this runner (comma separated): + linux, ubuntu + Whether to run untagged builds [true/false]: + [false]: true + Whether to lock Runner to current project [true/false]: + [false]: + Registering runner... succeeded runner=4jknGvoz + Please enter the executor: shell, ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh: + docker + Please enter the default Docker image (e.g. ruby:2.1): + ubuntu + Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! + #+end_example + * To review locally a private pull request submitted by someone else Get the patch from the pull request (Need to update that !!!!