9

CI サーバーとして teamcity で git flow を使用しています。特定のブランチで成功した最新のビルドからアーティファクトを取得したいと考えています。

この URL を使用して、ブランチで最新のビルドを取得できます。http://$teamcity$/httpAuth/app/rest/buildTypes/name:$BuildTypeName$/builds/branch:name:$branchName$

ただし、ブランチ名に含まれる場合は失敗します/(例: git フロー名のブランチfeature/%release/%)。

をURLエンコードしてみました/。たとえば、$branchName$> == 'release/branchName'私が使用する場合/builds/branch:name:release%2F$branchName$)

  • 作品 -/builds/branch:name:develop
  • 失敗 - /builds/branch:name:release%2F$branchName$.

API エラーは発生しませんが、API の結果は空です。

4

3 に答える 3

7

ビルド ロケーターを URL のパス要素の一部としてではなく、クエリ文字列に入れることで、これを回避/builds/branch:name:release%2F1.0.1できます/builds?locator=branch:name:release%2F1.0.1。返されるデータの形式は同じではないように見えますが、内部ビルド ID が含まれているため、その ID を使用して正確なビルドの 2 番目のリクエストをいつでも行うことができます/builds/id:3332

私が個人的に試したことのない別のポイントは、JetBrains の問題トラッカーからのこのコメントにあります。

これについて少し調べてみたところ、Tomcat バージョン 6.0.10 以降では、パス要素でエンコードされたスラッシュとバックスラッシュがデフォルトで受け入れられなくなっていることがわかりました。この動作は、2 つの Tomcat サーバー プロパティ ( http://tomcat.apache.org/security-6.html#Fixed_in_Apache_Tomcat_6.0.10にあります)を変更することで変更できます。

-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
-Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true

これが悪いセキュリティ慣行と見なされるかどうかはわかりません。

于 2015-02-25T14:28:26.470 に答える
3

どうやらこれは8.0.3 の時点でのTeamCity のバグです

取り組んでいるようです。

于 2013-09-25T17:31:54.617 に答える