Skip to content

Commit

Permalink
chore: package help improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
robinshine committed Jan 25, 2024
1 parent 0f10d6c commit d38013f
Show file tree
Hide file tree
Showing 14 changed files with 45 additions and 40 deletions.
2 changes: 1 addition & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
</div>

<div align="center">
<h1>Self-hosted Git Server with Kanban and CI/CD</h1>
<h1>Git Server with CI/CD, Kanban, and Packages</h1>

<h2>
<a href="https://docs.onedev.io">Quickstart</a>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public void setDockerfile(String dockerfile) {
}

@Editable(order=300, description="Specify full tag of the image, for instance <tt>myorg/myrepo:latest</tt>, "
+ "<tt>myorg/myrepo:1.0.0</tt>, or <tt>myregistry:5000/myorg/myrepo:1.0.0</tt>. "
+ "<tt>myorg/myrepo:1.0.0</tt>, or <tt>onedev.example.com/myproject/myrepo:1.0.0</tt>. "
+ "Multiple tags should be separated with space.<br>")
@Interpolative(variableSuggester="suggestVariables")
@NotEmpty
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import io.onedev.server.search.entity.pack.PackQueryLexer;
import io.onedev.server.search.entity.pack.TypeCriteria;
import io.onedev.server.web.page.project.packs.ProjectPacksPage;
import io.onedev.server.web.util.WicketUtils;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.link.Link;
Expand Down Expand Up @@ -83,7 +82,7 @@ protected void populateItem(ListItem<Map.Entry<String, Long>> item) {
@Override
protected void onConfigure() {
super.onConfigure();
setVisible(WicketUtils.isSubscriptionActive() && getTotalCount() != 0);
setVisible(getTotalCount() != 0);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,7 @@ public void unauthorized() {
}

protected String getPageTitle() {
return "OneDev: Self-hosted Git Server with Built-in CI/CD";
return "OneDev - Git Server with CI/CD, Kanban, and Packages";
}

protected int getPageRefreshInterval() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
<wicket:panel>
<div>
<div class="font-size-lg font-weight-bolder mb-3">Run below command to publish OCI compliant container images</div>
<div class="code">
<div wicket:id="loginCommand" class="text-break font-size-sm"></div>
<span class="text-muted font-size-sm">Specify user with package write permission over the project</span>
<div wicket:id="pushCommand" class="text-break font-size-sm mt-2"></div>
</div>
<div class="mt-4">You may also do this via publish docker image step in CI/CD job, and specify built-in registry access
<div class="font-size-lg font-weight-bolder mb-3">Login to OneDev docker registry</div>
<div wicket:id="loginCommand"></div>
<div class="text-muted font-size-sm mt-2 mb-5">Login user needs to have package write permission over the project below</div>

<div class="font-size-lg font-weight-bolder mb-3">Then push image to desired repository under specified project</div>
<div wicket:id="pushCommand" class="mb-5"></div>

<div>You may also do this via publish docker image step in CI/CD job, and specify built-in registry access
token secret with package write permission</div>
<div wicket:id="insecureRegistryNote" class="mt-4"></div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
import io.onedev.server.OneDev;
import io.onedev.server.entitymanager.SettingManager;
import io.onedev.server.util.UrlUtils;
import org.apache.wicket.markup.html.basic.Label;
import io.onedev.server.web.component.codesnippet.CodeSnippetPanel;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;

public class ContainerHelpPanel extends Panel {

Expand All @@ -21,8 +22,8 @@ protected void onInitialize() {

var serverUrl = OneDev.getInstance(SettingManager.class).getSystemSetting().getServerUrl();
var server = UrlUtils.getServer(serverUrl);
add(new Label("loginCommand", "docker login " + server));
add(new Label("pushCommand", "docker push " + server + "/" + projectPath + "/<repository>:<tag>"));
add(new CodeSnippetPanel("loginCommand", Model.of("$ docker login " + server)));
add(new CodeSnippetPanel("pushCommand", Model.of("$ docker push " + server + "/" + projectPath + "/<repository>:<tag>")));
add(new InsecureRegistryNotePanel("insecureRegistryNote"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public String getReference(Pack pack, boolean withProject) {
reference = substringBeforeLast(pack.getName(), ":") + ":<Plugins Metadata>";

if (withProject)
reference = pack.getProject().getPath() + ">" + reference;
reference = pack.getProject().getPath() + "/" + reference;
return reference;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
<wicket:panel>
<div class="font-size-lg font-weight-bolder mb-3">Configure your scope to use below registry</div>
<div class="code mb-5">
<div wicket:id="scopeRegistry" class="text-break font-size-sm"></div>
<div wicket:id="registryAuth" class="text-break font-size-sm mt-2"></div>
<span class="text-muted font-size-sm">Make sure the access token has package write permission over the project</span>
</div>
<div wicket:id="scopeRegistry" class="mb-5"></div>
<div class="font-size-lg font-weight-bolder mb-3">And configure auth token of the registry</div>
<div wicket:id="registryAuth"></div>
<div class="text-muted font-size-sm mt-2 mb-5">Make sure the access token has package write permission over the project</div>

<div class="font-size-lg font-weight-bolder mb-3">Then publish package from project directory like below</div>
<div class="code mb-5">npm publish</div>
<div wicket:id="publishCommand" class="mb-5"></div>

<div class="font-size-lg font-weight-bolder mb-3">For CI/CD job, run below to publish package via command step</div>
<div wicket:id="jobCommands"></div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
import io.onedev.server.OneDev;
import io.onedev.server.entitymanager.SettingManager;
import io.onedev.server.web.component.codesnippet.CodeSnippetPanel;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;

import static org.apache.commons.lang3.StringUtils.substringAfter;

Expand All @@ -23,19 +23,20 @@ protected void onInitialize() {
super.onInitialize();

var registryUrl = getServerUrl() + "/" + projectPath + "/~" + NpmPackService.SERVICE_ID + "/";
add(new Label("scopeRegistry", "$ npm config set @myscope:registry " + registryUrl));
add(new Label("registryAuth", "$ npm config set -- '" + substringAfter(registryUrl, ":") + ":_authToken' \"onedev_access_token\""));

add(new CodeSnippetPanel("scopeRegistry", Model.of("$ npm config set @myscope:registry " + registryUrl)));
add(new CodeSnippetPanel("registryAuth", Model.of("$ npm config set -- '" + substringAfter(registryUrl, ":") + ":_authToken' \"onedev_access_token\"")));
add(new CodeSnippetPanel("publishCommand", Model.of("$ npm publish")));

add(new CodeSnippetPanel("jobCommands", new LoadableDetachableModel<>() {

@Override
protected String load() {
var registryUrl = getServerUrl() + "/" + projectPath + "/~npm/";
return "" +
"# Use @@ to reference scope in job commands to avoid being interpreted as variable\n" +
"# Use @@ to reference scope in job commands to avoid being interpreted as variable\n\n" +
"npm config set @@myscope:registry " + registryUrl + "\n\n" +
"# Use job token to tell OneDev the build publishing the package\n" +
"# Job secret 'access-token' should be defined in project build setting as an access token with package write permission\n" +
"# Job secret 'access-token' should be defined in project build setting as an access token with package write permission\n\n" +
"npm config set -- '" + substringAfter(registryUrl, ":") + ":_authToken' \"@job_token@:@secret:access-token@\"\n\n" +
"npm publish";
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
<wicket:panel>
<div class="font-size-lg font-weight-bolder mb-3">Add a package source like below</div>
<div class="code mb-5">
<div wicket:id="addSource" class="text-break font-size-sm"></div>
<span class="text-muted font-size-sm">Make sure the user has package write permission over the project</span>
</div>
<div wicket:id="addSource"></div>
<div class="text-muted font-size-sm mt-2 mb-5">Make sure the user has package write permission over the project</div>

<div class="font-size-lg font-weight-bolder mb-3">Then push package to the source</div>
<div class="code mb-5">$ dotnet nuget push -s onedev /path/to/&lt;PackageId&gt;.&lt;PackageVersion&gt;.nupkg</div>
<div wicket:id="pushCommand" class="mb-5"></div>

<div class="font-size-lg font-weight-bolder mb-3">For CI/CD job, run below to add package source via command step</div>
<div wicket:id="jobCommands"></div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
import io.onedev.server.OneDev;
import io.onedev.server.entitymanager.SettingManager;
import io.onedev.server.web.component.codesnippet.CodeSnippetPanel;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;

import static io.onedev.server.plugin.pack.nuget.NugetPackService.SERVICE_ID;

Expand All @@ -23,14 +23,16 @@ protected void onInitialize() {
super.onInitialize();

var registryUrl = getServerUrl() + "/" + projectPath + "/~" + SERVICE_ID + "/index.json";
add(new Label("addSource", "$ dotnet nuget add source --name onedev --username <onedev_account_name> --password <onedev_password_or_access_token> --store-password-in-clear-text " + registryUrl));
add(new CodeSnippetPanel("addSource", Model.of("$ dotnet nuget add source --name onedev --username <onedev_account_name> --password <onedev_account_password> --store-password-in-clear-text " + registryUrl)));

add(new CodeSnippetPanel("pushCommand", Model.of("$ dotnet nuget push -s onedev /path/to/<PackageId>.<PackageVersion>.nupkg")));

add(new CodeSnippetPanel("jobCommands", new LoadableDetachableModel<String>() {
@Override
protected String load() {
return "" +
"# Use job token to tell OneDev the build pushing the package\n" +
"# Job secret 'access-token' should be defined in project build setting as an access token with package write permission\n" +
"# Job secret 'access-token' should be defined in project build setting as an access token with package write permission\n\n" +
"dotnet nuget add source --name onedev --username @job_token@ --password @secret:access-token@ --store-password-in-clear-text " + registryUrl;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<div class="text-muted font-size-sm mt-2 mb-5">Make sure the user has package write permission over the project</div>

<div class="font-size-lg font-weight-bolder mb-3">Then upload package to the repository with twine</div>
<div class="code mb-5">$ python3 -m twine upload --repository onedev /path/to/files_to_upload</div>
<div wicket:id="uploadCommand" class="mb-5"></div>

<div class="font-size-lg font-weight-bolder mb-3">For CI/CD job, run below to add package repository via command step</div>
<div wicket:id="jobCommands"></div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;

public class PypiHelpPanel extends Panel {

Expand All @@ -30,11 +31,13 @@ public String getObject() {
" onedev\n\n" +
"[onedev]\n" +
"repository=" + registryUrl + "\n" +
"username={username}\n" +
"password={password_or_access_token}";
"username=<onedev_account_name>\n" +
"password=<onedev_account_password>";
}

}));

add(new CodeSnippetPanel("uploadCommand", Model.of("$ python3 -m twine upload --repository onedev /path/to/files_to_upload")));

add(new CodeSnippetPanel("jobCommands", new LoadableDetachableModel<>() {
@Override
Expand Down
2 changes: 1 addition & 1 deletion server-product/helm/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# OneDev Helm Chart

Self-hosted Git Server with CI/CD and Kanban
Git Server with CI/CD, Kanban, and Packages

### Homepage
https://onedev.io
Expand Down

0 comments on commit d38013f

Please sign in to comment.