gitea源码

container.tmpl 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. {{if eq .PackageDescriptor.Package.Type "container"}}
  2. <h4 class="ui top attached header">{{ctx.Locale.Tr "packages.installation"}}</h4>
  3. <div class="ui attached segment">
  4. <div class="ui form">
  5. <div class="field">
  6. <label>{{svg "octicon-terminal"}} {{ctx.Locale.Tr "packages.container.pull"}}</label>
  7. {{if eq .PackageDescriptor.Metadata.Type "helm"}}
  8. <div class="markup"><pre class="code-block"><code>helm pull oci://{{.PackageRegistryHost}}/{{.PackageDescriptor.Owner.LowerName}}/{{.PackageDescriptor.Package.LowerName}} --version {{.PackageDescriptor.Version.LowerVersion}}</code></pre></div>
  9. {{else}}
  10. {{$separator := ":"}}
  11. {{if not .PackageDescriptor.Metadata.IsTagged}}
  12. {{$separator = "@"}}
  13. {{end}}
  14. <div class="markup"><pre class="code-block"><code>docker pull {{.PackageRegistryHost}}/{{.PackageDescriptor.Owner.LowerName}}/{{.PackageDescriptor.Package.LowerName}}{{$separator}}{{.PackageDescriptor.Version.LowerVersion}}</code></pre></div>
  15. {{end}}
  16. </div>
  17. <div class="field">
  18. <label>{{svg "octicon-code"}} {{ctx.Locale.Tr "packages.container.digest"}}</label>
  19. <div class="markup">
  20. <div class="code-block-container code-overflow-scroll">
  21. <pre class="code-block"><code>
  22. {{- range .PackageDescriptor.Files -}}
  23. {{- if eq .File.LowerName "manifest.json" -}}
  24. {{- .Properties.GetByName "container.digest" -}}{{"\n"}}
  25. {{- end -}}
  26. {{- end -}}
  27. </code></pre>
  28. </div>
  29. </div>
  30. </div>
  31. <div class="field">
  32. <label>{{ctx.Locale.Tr "packages.registry.documentation" "Container" "https://docs.gitea.com/usage/packages/container/"}}</label>
  33. </div>
  34. </div>
  35. </div>
  36. {{if .PackageDescriptor.Metadata.Manifests}}
  37. <h4 class="ui top attached header">{{ctx.Locale.Tr "packages.container.images"}}</h4>
  38. <div class="ui attached segment">
  39. <table class="ui very basic compact table">
  40. <thead>
  41. <tr>
  42. <th>{{ctx.Locale.Tr "packages.container.digest"}}</th>
  43. <th>{{ctx.Locale.Tr "packages.container.multi_arch"}}</th>
  44. <th>{{ctx.Locale.Tr "admin.packages.size"}}</th>
  45. </tr>
  46. </thead>
  47. <tbody>
  48. {{range .PackageDescriptor.Metadata.Manifests}}
  49. {{/* "unknown/unknown" is attestation-manifest, so we should skip it */}}
  50. {{if ne .Platform "unknown/unknown"}}
  51. <tr>
  52. <td>
  53. <a class="tw-font-mono" href="{{$.PackageDescriptor.PackageWebLink}}/{{$.PackageDescriptor.Version.LowerVersion}}/{{PathEscape .Digest}}">
  54. {{StringUtils.TrimPrefix .Digest "sha256:" | ShortSha}}
  55. </a>
  56. </td>
  57. <td>{{.Platform}}</td>
  58. <td>{{FileSize .Size}}</td>
  59. </tr>
  60. {{end}}
  61. {{end}}
  62. </tbody>
  63. </table>
  64. </div>
  65. {{end}}
  66. {{if .PackageDescriptor.Metadata.Description}}
  67. <h4 class="ui top attached header">{{ctx.Locale.Tr "packages.about"}}</h4>
  68. <div class="ui attached segment">
  69. {{.PackageDescriptor.Metadata.Description}}
  70. </div>
  71. {{end}}
  72. {{/* a container manifest may contain sub manifests, so here we try to display some information of the sub manifest,
  73. not perfect, just better than before */}}
  74. {{$imageMetadata := .ContainerImageMetadata}}
  75. {{if $imageMetadata.ImageLayers}}
  76. <h4 class="ui top attached header flex-text-block">
  77. {{ctx.Locale.Tr "packages.container.layers"}}
  78. {{/* only show the platform if the image metadata is not the package's, which means that it is a sub manifest */}}
  79. {{if ne .ContainerImageMetadata .PackageDescriptor.Metadata}}
  80. <span class="tw-text-sm flex-text-inline" title="{{ctx.Locale.Tr "packages.container.details.platform"}}">
  81. ({{svg "octicon-cpu" 12}} {{.ContainerImageMetadata.Platform}})
  82. </span>
  83. {{end}}
  84. </h4>
  85. <div class="ui attached segment tw-break-anywhere">
  86. <table class="ui very basic compact table tw-font-mono">
  87. <tbody>
  88. {{range $imageMetadata.ImageLayers}}
  89. <tr>
  90. <td>{{.}}</td>
  91. </tr>
  92. {{end}}
  93. </tbody>
  94. </table>
  95. </div>
  96. {{end}}
  97. {{if $imageMetadata.Labels}}
  98. <h4 class="ui top attached header">{{ctx.Locale.Tr "packages.container.labels"}}</h4>
  99. <div class="ui attached segment">
  100. <table class="ui very basic compact table tw-font-mono">
  101. <thead>
  102. <tr>
  103. <th>{{ctx.Locale.Tr "packages.container.labels.key"}}</th>
  104. <th>{{ctx.Locale.Tr "packages.container.labels.value"}}</th>
  105. </tr>
  106. </thead>
  107. <tbody>
  108. {{range $key, $value := $imageMetadata.Labels}}
  109. <tr>
  110. <td class="tw-align-top">{{$key}}</td>
  111. <td class="tw-break-anywhere">{{$value}}</td>
  112. </tr>
  113. {{end}}
  114. </tbody>
  115. </table>
  116. </div>
  117. {{end}}
  118. {{end}}