Clone another GitLab repository in GitLab CI script












-1















I've seen this: `git clone project2` in gitlab-ci.yml? as well as a bunch of similar posts with similar answers implying that one should use Git submodules.



Without getting into arguments about whether submodules in Git work well, in my case, that just isn't an option at all (what other project to check out depends on the arguments passed to the trigger of the job, or, at least, it should).



Another requirement is that I need to be able to track the user who started the chain of triggers. I.e. hard-coding my personal token, or just any token will not do it: I need GitLab to use the permissions of the user who executed the job in order to clone other repositories.



Short of giving up GitLab and looking for a mature CI alternative, is there any way to get this done?










share|improve this question



























    -1















    I've seen this: `git clone project2` in gitlab-ci.yml? as well as a bunch of similar posts with similar answers implying that one should use Git submodules.



    Without getting into arguments about whether submodules in Git work well, in my case, that just isn't an option at all (what other project to check out depends on the arguments passed to the trigger of the job, or, at least, it should).



    Another requirement is that I need to be able to track the user who started the chain of triggers. I.e. hard-coding my personal token, or just any token will not do it: I need GitLab to use the permissions of the user who executed the job in order to clone other repositories.



    Short of giving up GitLab and looking for a mature CI alternative, is there any way to get this done?










    share|improve this question

























      -1












      -1








      -1








      I've seen this: `git clone project2` in gitlab-ci.yml? as well as a bunch of similar posts with similar answers implying that one should use Git submodules.



      Without getting into arguments about whether submodules in Git work well, in my case, that just isn't an option at all (what other project to check out depends on the arguments passed to the trigger of the job, or, at least, it should).



      Another requirement is that I need to be able to track the user who started the chain of triggers. I.e. hard-coding my personal token, or just any token will not do it: I need GitLab to use the permissions of the user who executed the job in order to clone other repositories.



      Short of giving up GitLab and looking for a mature CI alternative, is there any way to get this done?










      share|improve this question














      I've seen this: `git clone project2` in gitlab-ci.yml? as well as a bunch of similar posts with similar answers implying that one should use Git submodules.



      Without getting into arguments about whether submodules in Git work well, in my case, that just isn't an option at all (what other project to check out depends on the arguments passed to the trigger of the job, or, at least, it should).



      Another requirement is that I need to be able to track the user who started the chain of triggers. I.e. hard-coding my personal token, or just any token will not do it: I need GitLab to use the permissions of the user who executed the job in order to clone other repositories.



      Short of giving up GitLab and looking for a mature CI alternative, is there any way to get this done?







      gitlab






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 20 '18 at 10:42









      wvxvwwvxvw

      95111122




      95111122
























          1 Answer
          1






          active

          oldest

          votes


















          0














          This should be possible using the gitlab-ci-token variable as documented here:



          git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/myuser/mydependentrepo



          This issue discusses the permissions of the gitlab-ci-token, and in the proposal also mentions:





          1. We will authorize access to the resource by getting from Ci::Build information about a person who run this build, it could be: pusher of
            git push, person who did retry a build, person who did merge a changes







          share|improve this answer
























          • This almost gets me there, but I also need to have push permissions on other repositories (so, read-only won't be enough). A typical scenario: user submitted pull request, it was staged, tested, and now it needs to be rebased on master, but the master isn't in the repository against which the user submitted their PR.

            – wvxvw
            Nov 20 '18 at 16:38











          • @wvxvw didn't realise about the push permissions. This sounds like it's getting out of scope for what GitLab CI is capable of without as you said, personal tokens. Are you sure you couldn't do this the other way around? Instead of cloning said repository, trigger the repository from the one you want to clone, and so you can handle rebasing from that repository? Although this suggestion is a stab in the dark as I don't know your full requirements.

            – Rekovni
            Nov 20 '18 at 16:55











          • Nah, not really. The repository has at least these two projects (in reality there's more), which work as a client and server, and they need to be compiled (and updated) together, otherwise they won't work, but developers can contribute to either one of them.

            – wvxvw
            Nov 20 '18 at 18:49











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53391229%2fclone-another-gitlab-repository-in-gitlab-ci-script%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          This should be possible using the gitlab-ci-token variable as documented here:



          git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/myuser/mydependentrepo



          This issue discusses the permissions of the gitlab-ci-token, and in the proposal also mentions:





          1. We will authorize access to the resource by getting from Ci::Build information about a person who run this build, it could be: pusher of
            git push, person who did retry a build, person who did merge a changes







          share|improve this answer
























          • This almost gets me there, but I also need to have push permissions on other repositories (so, read-only won't be enough). A typical scenario: user submitted pull request, it was staged, tested, and now it needs to be rebased on master, but the master isn't in the repository against which the user submitted their PR.

            – wvxvw
            Nov 20 '18 at 16:38











          • @wvxvw didn't realise about the push permissions. This sounds like it's getting out of scope for what GitLab CI is capable of without as you said, personal tokens. Are you sure you couldn't do this the other way around? Instead of cloning said repository, trigger the repository from the one you want to clone, and so you can handle rebasing from that repository? Although this suggestion is a stab in the dark as I don't know your full requirements.

            – Rekovni
            Nov 20 '18 at 16:55











          • Nah, not really. The repository has at least these two projects (in reality there's more), which work as a client and server, and they need to be compiled (and updated) together, otherwise they won't work, but developers can contribute to either one of them.

            – wvxvw
            Nov 20 '18 at 18:49
















          0














          This should be possible using the gitlab-ci-token variable as documented here:



          git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/myuser/mydependentrepo



          This issue discusses the permissions of the gitlab-ci-token, and in the proposal also mentions:





          1. We will authorize access to the resource by getting from Ci::Build information about a person who run this build, it could be: pusher of
            git push, person who did retry a build, person who did merge a changes







          share|improve this answer
























          • This almost gets me there, but I also need to have push permissions on other repositories (so, read-only won't be enough). A typical scenario: user submitted pull request, it was staged, tested, and now it needs to be rebased on master, but the master isn't in the repository against which the user submitted their PR.

            – wvxvw
            Nov 20 '18 at 16:38











          • @wvxvw didn't realise about the push permissions. This sounds like it's getting out of scope for what GitLab CI is capable of without as you said, personal tokens. Are you sure you couldn't do this the other way around? Instead of cloning said repository, trigger the repository from the one you want to clone, and so you can handle rebasing from that repository? Although this suggestion is a stab in the dark as I don't know your full requirements.

            – Rekovni
            Nov 20 '18 at 16:55











          • Nah, not really. The repository has at least these two projects (in reality there's more), which work as a client and server, and they need to be compiled (and updated) together, otherwise they won't work, but developers can contribute to either one of them.

            – wvxvw
            Nov 20 '18 at 18:49














          0












          0








          0







          This should be possible using the gitlab-ci-token variable as documented here:



          git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/myuser/mydependentrepo



          This issue discusses the permissions of the gitlab-ci-token, and in the proposal also mentions:





          1. We will authorize access to the resource by getting from Ci::Build information about a person who run this build, it could be: pusher of
            git push, person who did retry a build, person who did merge a changes







          share|improve this answer













          This should be possible using the gitlab-ci-token variable as documented here:



          git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/myuser/mydependentrepo



          This issue discusses the permissions of the gitlab-ci-token, and in the proposal also mentions:





          1. We will authorize access to the resource by getting from Ci::Build information about a person who run this build, it could be: pusher of
            git push, person who did retry a build, person who did merge a changes








          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 20 '18 at 14:41









          RekovniRekovni

          1,1471429




          1,1471429













          • This almost gets me there, but I also need to have push permissions on other repositories (so, read-only won't be enough). A typical scenario: user submitted pull request, it was staged, tested, and now it needs to be rebased on master, but the master isn't in the repository against which the user submitted their PR.

            – wvxvw
            Nov 20 '18 at 16:38











          • @wvxvw didn't realise about the push permissions. This sounds like it's getting out of scope for what GitLab CI is capable of without as you said, personal tokens. Are you sure you couldn't do this the other way around? Instead of cloning said repository, trigger the repository from the one you want to clone, and so you can handle rebasing from that repository? Although this suggestion is a stab in the dark as I don't know your full requirements.

            – Rekovni
            Nov 20 '18 at 16:55











          • Nah, not really. The repository has at least these two projects (in reality there's more), which work as a client and server, and they need to be compiled (and updated) together, otherwise they won't work, but developers can contribute to either one of them.

            – wvxvw
            Nov 20 '18 at 18:49



















          • This almost gets me there, but I also need to have push permissions on other repositories (so, read-only won't be enough). A typical scenario: user submitted pull request, it was staged, tested, and now it needs to be rebased on master, but the master isn't in the repository against which the user submitted their PR.

            – wvxvw
            Nov 20 '18 at 16:38











          • @wvxvw didn't realise about the push permissions. This sounds like it's getting out of scope for what GitLab CI is capable of without as you said, personal tokens. Are you sure you couldn't do this the other way around? Instead of cloning said repository, trigger the repository from the one you want to clone, and so you can handle rebasing from that repository? Although this suggestion is a stab in the dark as I don't know your full requirements.

            – Rekovni
            Nov 20 '18 at 16:55











          • Nah, not really. The repository has at least these two projects (in reality there's more), which work as a client and server, and they need to be compiled (and updated) together, otherwise they won't work, but developers can contribute to either one of them.

            – wvxvw
            Nov 20 '18 at 18:49

















          This almost gets me there, but I also need to have push permissions on other repositories (so, read-only won't be enough). A typical scenario: user submitted pull request, it was staged, tested, and now it needs to be rebased on master, but the master isn't in the repository against which the user submitted their PR.

          – wvxvw
          Nov 20 '18 at 16:38





          This almost gets me there, but I also need to have push permissions on other repositories (so, read-only won't be enough). A typical scenario: user submitted pull request, it was staged, tested, and now it needs to be rebased on master, but the master isn't in the repository against which the user submitted their PR.

          – wvxvw
          Nov 20 '18 at 16:38













          @wvxvw didn't realise about the push permissions. This sounds like it's getting out of scope for what GitLab CI is capable of without as you said, personal tokens. Are you sure you couldn't do this the other way around? Instead of cloning said repository, trigger the repository from the one you want to clone, and so you can handle rebasing from that repository? Although this suggestion is a stab in the dark as I don't know your full requirements.

          – Rekovni
          Nov 20 '18 at 16:55





          @wvxvw didn't realise about the push permissions. This sounds like it's getting out of scope for what GitLab CI is capable of without as you said, personal tokens. Are you sure you couldn't do this the other way around? Instead of cloning said repository, trigger the repository from the one you want to clone, and so you can handle rebasing from that repository? Although this suggestion is a stab in the dark as I don't know your full requirements.

          – Rekovni
          Nov 20 '18 at 16:55













          Nah, not really. The repository has at least these two projects (in reality there's more), which work as a client and server, and they need to be compiled (and updated) together, otherwise they won't work, but developers can contribute to either one of them.

          – wvxvw
          Nov 20 '18 at 18:49





          Nah, not really. The repository has at least these two projects (in reality there's more), which work as a client and server, and they need to be compiled (and updated) together, otherwise they won't work, but developers can contribute to either one of them.

          – wvxvw
          Nov 20 '18 at 18:49




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53391229%2fclone-another-gitlab-repository-in-gitlab-ci-script%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          鏡平學校

          ꓛꓣだゔៀៅຸ໢ທຮ໕໒ ,ໂ'໥໓າ໼ឨឲ៵៭ៈゎゔit''䖳𥁄卿' ☨₤₨こゎもょの;ꜹꟚꞖꞵꟅꞛေၦေɯ,ɨɡ𛃵𛁹ޝ޳ޠ޾,ޤޒޯ޾𫝒𫠁သ𛅤チョ'サノބޘދ𛁐ᶿᶇᶀᶋᶠ㨑㽹⻮ꧬ꧹؍۩وَؠ㇕㇃㇪ ㇦㇋㇋ṜẰᵡᴠ 軌ᵕ搜۳ٰޗޮ޷ސޯ𫖾𫅀ल, ꙭ꙰ꚅꙁꚊꞻꝔ꟠Ꝭㄤﺟޱސꧨꧼ꧴ꧯꧽ꧲ꧯ'⽹⽭⾁⿞⼳⽋២៩ញណើꩯꩤ꩸ꩮᶻᶺᶧᶂ𫳲𫪭𬸄𫵰𬖩𬫣𬊉ၲ𛅬㕦䬺𫝌𫝼,,𫟖𫞽ហៅ஫㆔ాఆఅꙒꚞꙍ,Ꙟ꙱エ ,ポテ,フࢰࢯ𫟠𫞶 𫝤𫟠ﺕﹱﻜﻣ𪵕𪭸𪻆𪾩𫔷ġ,ŧآꞪ꟥,ꞔꝻ♚☹⛵𛀌ꬷꭞȄƁƪƬșƦǙǗdžƝǯǧⱦⱰꓕꓢႋ神 ဴ၀க௭எ௫ឫោ ' េㇷㇴㇼ神ㇸㇲㇽㇴㇼㇻㇸ'ㇸㇿㇸㇹㇰㆣꓚꓤ₡₧ ㄨㄟ㄂ㄖㄎ໗ツڒذ₶।ऩछएोञयूटक़कयँृी,冬'𛅢𛅥ㇱㇵㇶ𥄥𦒽𠣧𠊓𧢖𥞘𩔋цѰㄠſtʯʭɿʆʗʍʩɷɛ,əʏダヵㄐㄘR{gỚṖḺờṠṫảḙḭᴮᵏᴘᵀᵷᵕᴜᴏᵾq﮲ﲿﴽﭙ軌ﰬﶚﶧ﫲Ҝжюїкӈㇴffצּ﬘﭅﬈軌'ffistfflſtffतभफɳɰʊɲʎ𛁱𛁖𛁮𛀉 𛂯𛀞నఋŀŲ 𫟲𫠖𫞺ຆຆ ໹້໕໗ๆทԊꧢꧠ꧰ꓱ⿝⼑ŎḬẃẖỐẅ ,ờỰỈỗﮊDžȩꭏꭎꬻ꭮ꬿꭖꭥꭅ㇭神 ⾈ꓵꓑ⺄㄄ㄪㄙㄅㄇstA۵䞽ॶ𫞑𫝄㇉㇇゜軌𩜛𩳠Jﻺ‚Üမ႕ႌႊၐၸဓၞၞၡ៸wyvtᶎᶪᶹစဎ꣡꣰꣢꣤ٗ؋لㇳㇾㇻㇱ㆐㆔,,㆟Ⱶヤマފ޼ޝަݿݞݠݷݐ',ݘ,ݪݙݵ𬝉𬜁𫝨𫞘くせぉて¼óû×ó£…𛅑הㄙくԗԀ5606神45,神796'𪤻𫞧ꓐ㄁ㄘɥɺꓵꓲ3''7034׉ⱦⱠˆ“𫝋ȍ,ꩲ軌꩷ꩶꩧꩫఞ۔فڱێظペサ神ナᴦᵑ47 9238їﻂ䐊䔉㠸﬎ffiﬣ,לּᴷᴦᵛᵽ,ᴨᵤ ᵸᵥᴗᵈꚏꚉꚟ⻆rtǟƴ𬎎

          Why https connections are so slow when debugging (stepping over) in Java?