<p>osmith has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ci/+/26423">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">jobs/redmine-fetch: close issues on gerrit merge<br><br>Add a job that is triggered by every gerrit merge, which translates the<br>GERRIT_PROJECT to the redmine project + repository and then triggers a<br>repository fetch by downloading the repository view url. Redmine will<br>then also parse the "Closes: OS#..." tags from commit messages and mark<br>related issues as resolved.<br><br>Redmine does not have a setting to fetch the repositories periodically<br>by itself, the redmine wiki recommends setting up a cron job or a<br>serverside git hook that also triggers the repository fetch. I have<br>considered implementing such a hook in gerrit instead, but then we would<br>not be able to see the logs as easily and notice failures.<br><br>Another consideration was fetching all redmine projects and associated<br>git repositories via redmine API and then just triggering a repository<br>fetch on all of them, in order to avoid the mapping from gerrit <><br>redmine. However, the redmine API apparently doesn't list the<br>repositories and one would need to iterate through the projects,<br>recursively.<br><br>I have tested this job and verified that GERRIT_PROJECT gets set as<br>expected.<br><br>Related: https://www.redmine.org/projects/redmine/wiki/RedmineSettings#Fetch-commits-automatically<br>Related: OS#5331<br>Change-Id: Ia7c6c8426e5ca0de04378cedd0360c368e9d5027<br>---<br>A jobs/redmine-fetch.yml<br>1 file changed, 105 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/23/26423/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/jobs/redmine-fetch.yml b/jobs/redmine-fetch.yml</span><br><span>new file mode 100644</span><br><span>index 0000000..59903b3</span><br><span>--- /dev/null</span><br><span>+++ b/jobs/redmine-fetch.yml</span><br><span>@@ -0,0 +1,105 @@</span><br><span style="color: hsl(120, 100%, 40%);">+# Fetch repositories in redmine, in order to mark issues as resolved where</span><br><span style="color: hsl(120, 100%, 40%);">+# mentioned in commit messages (OS#5331).</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+- job:</span><br><span style="color: hsl(120, 100%, 40%);">+    name: redmine-fetch</span><br><span style="color: hsl(120, 100%, 40%);">+    project-type: freestyle</span><br><span style="color: hsl(120, 100%, 40%);">+    node: osmocom-gerrit-debian9</span><br><span style="color: hsl(120, 100%, 40%);">+    properties:</span><br><span style="color: hsl(120, 100%, 40%);">+      - build-discarder:</span><br><span style="color: hsl(120, 100%, 40%);">+          days-to-keep: 30</span><br><span style="color: hsl(120, 100%, 40%);">+          num-to-keep: 120</span><br><span style="color: hsl(120, 100%, 40%);">+    description: |</span><br><span style="color: hsl(120, 100%, 40%);">+      Fetch repositories in redmine, in order to mark issues as resolved where</span><br><span style="color: hsl(120, 100%, 40%);">+      mentioned in commit messages.</span><br><span style="color: hsl(120, 100%, 40%);">+      </br></br></span><br><span style="color: hsl(120, 100%, 40%);">+      Related issue: <a href="https://osmocom.org/issues/5331">OS#5331</a></span><br><span style="color: hsl(120, 100%, 40%);">+    triggers:</span><br><span style="color: hsl(120, 100%, 40%);">+      - gerrit:</span><br><span style="color: hsl(120, 100%, 40%);">+          trigger-on:</span><br><span style="color: hsl(120, 100%, 40%);">+            - change-merged-event</span><br><span style="color: hsl(120, 100%, 40%);">+          projects:</span><br><span style="color: hsl(120, 100%, 40%);">+            - project-compare-type: 'ANT'</span><br><span style="color: hsl(120, 100%, 40%);">+              project-pattern: '**'</span><br><span style="color: hsl(120, 100%, 40%);">+              branches:</span><br><span style="color: hsl(120, 100%, 40%);">+                - branch-compare-type: 'ANT'</span><br><span style="color: hsl(120, 100%, 40%);">+                  branch-pattern: '**'</span><br><span style="color: hsl(120, 100%, 40%);">+    builders:</span><br><span style="color: hsl(120, 100%, 40%);">+      - shell: |-</span><br><span style="color: hsl(120, 100%, 40%);">+          # When triggered from gerrit, GERRIT_PROJECT is set. Use "osmo-bts"</span><br><span style="color: hsl(120, 100%, 40%);">+          # as dummy value for manual triggers.</span><br><span style="color: hsl(120, 100%, 40%);">+          if [ -z "$GERRIT_PROJECT" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+            GERRIT_PROJECT="erlang/mgw_nat"</span><br><span style="color: hsl(120, 100%, 40%);">+          fi</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+          # Translate GERRIT_PROJECT name to redmine project name and</span><br><span style="color: hsl(120, 100%, 40%);">+          # repository. One redmine project can have multiple repositories.</span><br><span style="color: hsl(120, 100%, 40%);">+          PROJECT="$GERRIT_PROJECT"</span><br><span style="color: hsl(120, 100%, 40%);">+          REPO="$GERRIT_PROJECT"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+          case "$GERRIT_PROJECT" in</span><br><span style="color: hsl(120, 100%, 40%);">+            # Git repo not in redmine (multiple lines for readability)</span><br><span style="color: hsl(120, 100%, 40%);">+            asn1c|erlang/osmo_dia2gsup|erlang/osmo_gsup|titan.*|gr-gsm)</span><br><span style="color: hsl(120, 100%, 40%);">+              exit 0</span><br><span style="color: hsl(120, 100%, 40%);">+              ;;</span><br><span style="color: hsl(120, 100%, 40%);">+            gtp-load-gen|libasn1c|libgtpnl|libtelnet|libusrp|meta-telephony)</span><br><span style="color: hsl(120, 100%, 40%);">+              exit 0</span><br><span style="color: hsl(120, 100%, 40%);">+              ;;</span><br><span style="color: hsl(120, 100%, 40%);">+            mncc-python|openbsc|openggsn|openpcd|osmo-sdf4-dfu|osmo-dev)</span><br><span style="color: hsl(120, 100%, 40%);">+              exit 0</span><br><span style="color: hsl(120, 100%, 40%);">+              ;;</span><br><span style="color: hsl(120, 100%, 40%);">+            osmo-e2ltpd|osmo-el2tpd|osmo-gsm-manuals|osmo-gsm-tester|osmo-iuh)</span><br><span style="color: hsl(120, 100%, 40%);">+              exit 0</span><br><span style="color: hsl(120, 100%, 40%);">+              ;;</span><br><span style="color: hsl(120, 100%, 40%);">+            osmo-sysmon|osmo-upf|osmocom-lcs|python/osmo-python-tests|sandbox)</span><br><span style="color: hsl(120, 100%, 40%);">+              exit 0</span><br><span style="color: hsl(120, 100%, 40%);">+              ;;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+            # Git repo or project name not the same as gerrit project</span><br><span style="color: hsl(120, 100%, 40%);">+            docker-playground|osmo-ttcn3-hacks|osmo-ci)</span><br><span style="color: hsl(120, 100%, 40%);">+              PROJECT="core-testing-infra"</span><br><span style="color: hsl(120, 100%, 40%);">+              ;;</span><br><span style="color: hsl(120, 100%, 40%);">+            erlang/*)</span><br><span style="color: hsl(120, 100%, 40%);">+              PROJECT="$(echo "$GERRIT_PROJECT" | tr '/' '-')"</span><br><span style="color: hsl(120, 100%, 40%);">+              REPO="$PROJECT"</span><br><span style="color: hsl(120, 100%, 40%);">+              ;;</span><br><span style="color: hsl(120, 100%, 40%);">+            osmo-bsc)</span><br><span style="color: hsl(120, 100%, 40%);">+              PROJECT="osmobsc"</span><br><span style="color: hsl(120, 100%, 40%);">+              ;;</span><br><span style="color: hsl(120, 100%, 40%);">+            osmo-bts)</span><br><span style="color: hsl(120, 100%, 40%);">+              PROJECT="osmobts"</span><br><span style="color: hsl(120, 100%, 40%);">+              ;;</span><br><span style="color: hsl(120, 100%, 40%);">+            osmo-e1-hardware|osmo-e1d)</span><br><span style="color: hsl(120, 100%, 40%);">+              PROJECT="e1-t1-adapter"</span><br><span style="color: hsl(120, 100%, 40%);">+              ;;</span><br><span style="color: hsl(120, 100%, 40%);">+            osmo-ggsn)</span><br><span style="color: hsl(120, 100%, 40%);">+              PROJECT="openggsn"</span><br><span style="color: hsl(120, 100%, 40%);">+              ;;</span><br><span style="color: hsl(120, 100%, 40%);">+            osmo-msc)</span><br><span style="color: hsl(120, 100%, 40%);">+              PROJECT="osmomsc"</span><br><span style="color: hsl(120, 100%, 40%);">+              ;;</span><br><span style="color: hsl(120, 100%, 40%);">+            osmo-pcu)</span><br><span style="color: hsl(120, 100%, 40%);">+              PROJECT="osmopcu"</span><br><span style="color: hsl(120, 100%, 40%);">+              ;;</span><br><span style="color: hsl(120, 100%, 40%);">+            osmo-sgsn)</span><br><span style="color: hsl(120, 100%, 40%);">+              PROJECT="osmosgsn"</span><br><span style="color: hsl(120, 100%, 40%);">+              ;;</span><br><span style="color: hsl(120, 100%, 40%);">+            osmo-sip-connector)</span><br><span style="color: hsl(120, 100%, 40%);">+              PROJECT="osmo-sip-conector"</span><br><span style="color: hsl(120, 100%, 40%);">+              ;;</span><br><span style="color: hsl(120, 100%, 40%);">+            osmo-tetra)</span><br><span style="color: hsl(120, 100%, 40%);">+              PROJECT="tetra"</span><br><span style="color: hsl(120, 100%, 40%);">+              REPO="osmotetra"</span><br><span style="color: hsl(120, 100%, 40%);">+              ;;</span><br><span style="color: hsl(120, 100%, 40%);">+            osmo-trx)</span><br><span style="color: hsl(120, 100%, 40%);">+              PROJECT="osmotrx"</span><br><span style="color: hsl(120, 100%, 40%);">+              ;;</span><br><span style="color: hsl(120, 100%, 40%);">+            osmocom-bb)</span><br><span style="color: hsl(120, 100%, 40%);">+              PROJECT="baseband"</span><br><span style="color: hsl(120, 100%, 40%);">+              REPO="osmocombb"</span><br><span style="color: hsl(120, 100%, 40%);">+              ;;</span><br><span style="color: hsl(120, 100%, 40%);">+          esac</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+          wget \</span><br><span style="color: hsl(120, 100%, 40%);">+            -O /dev/null \</span><br><span style="color: hsl(120, 100%, 40%);">+            "https://osmocom.org/projects/$PROJECT/repository/$REPO"</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ci/+/26423">change 26423</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-ci/+/26423"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ci </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ia7c6c8426e5ca0de04378cedd0360c368e9d5027 </div>
<div style="display:none"> Gerrit-Change-Number: 26423 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>