Fix all lint errors

This commit is contained in:
Tim Jacomb 2022-08-25 21:50:53 +01:00
parent f033a611ff
commit e3fdfa527e
No known key found for this signature in database
GPG Key ID: D40F4AD2F55AF15F
1066 changed files with 21826 additions and 16885 deletions

View File

@ -1,11 +1,12 @@
<!-- Comment:
<!-- Comment:
A great PR typically begins with the line below.
Replace XXXXX with the numeric part of the issue's id you created on JIRA.
Please note that if you want your changes backported into LTS, you will need to create a JIRA ticket for it. Read https://www.jenkins.io/download/lts/#backporting-process for more.
-->
See [JENKINS-XXXXX](https://issues.jenkins.io/browse/JENKINS-XXXXX).
<!-- Comment:
<!-- Comment:
If the issue is not fully described in the ticket, add more information here (justification, pull request links, etc.).
* We do not require JIRA issues for minor improvements.
@ -15,10 +16,10 @@ If the issue is not fully described in the ticket, add more information here (ju
### Proposed changelog entries
* Entry 1: Issue, Human-readable Text
* ...
- Entry 1: Issue, Human-readable Text
- ...
<!-- Comment:
<!-- Comment:
The changelogs will be integrated by the core maintainers after the merge.
The changelog entry should be in the imperative mood; e.g., write "do this"/"return that" rather than "does this"/"returns that".
For examples, see: https://www.jenkins.io/changelog/
@ -32,9 +33,9 @@ N/A
- [ ] (If applicable) Jira issue is well described
- [ ] Changelog entries and upgrade guidelines are appropriate for the audience affected by the change (users or developer, depending on the change) and are in the imperative mood. [Examples](https://github.com/jenkins-infra/jenkins.io/blob/master/content/_data/changelogs/weekly.yml)
* Fill-in the `Proposed changelog entries` section only if there are breaking changes or other changes which may require extra steps from users during the upgrade
- Fill-in the `Proposed changelog entries` section only if there are breaking changes or other changes which may require extra steps from users during the upgrade
- [ ] Appropriate autotests or explanation to why this change has no tests
- [ ] New public classes, fields, and methods are annotated with `@Restricted` or have `@since TODO` Javadoc, as appropriate.
- [ ] New public classes, fields, and methods are annotated with `@Restricted` or have `@since TODO` Javadoc, as appropriate.
- [ ] New deprecations are annotated with `@Deprecated(since = "TODO")` or `@Deprecated(forRemoval = true, since = "TODO")` if applicable.
- [ ] New or substantially changed JavaScript is not defined inline and does not call `eval` to ease future introduction of Content-Security-Policy directives (see [documentation on jenkins.io](https://www.jenkins.io/doc/developer/security/csp/)).
- [ ] For dependency updates: links to external changelogs and, if possible, full diffs
@ -51,7 +52,7 @@ If you need an accelerated review process by the community (e.g., for critical b
### Maintainer checklist
Before the changes are marked as `ready-for-merge`:
Before the changes are marked as `ready-for-merge`:
- [ ] There are at least 2 approvals for the pull request and no outstanding requests for change
- [ ] Conversations in the pull request are over OR it is explicit that a reviewer does not block the change

View File

@ -27,7 +27,6 @@ updates:
# Log4j 1.2.17 is the final 1.x release.
- dependency-name: "log4j:log4j"
# Here lies technical debt. Exclusions in this section have been triaged
# and determined to be temporary. Exclusions should be removed from this
# section once the remaining action items have been completed.

View File

@ -10,5 +10,5 @@ template: |
See https://www.jenkins.io/changelog/ for the official changelogs._
$CHANGES
All contributors: $CONTRIBUTORS

View File

@ -15,7 +15,7 @@ jobs:
- name: Set up JDK 8
uses: actions/setup-java@v3
with:
distribution: 'temurin'
distribution: "temurin"
java-version: 8
- name: Set version
id: set-version
@ -193,7 +193,7 @@ jobs:
echo $REPO
wget -q https://get.jenkins.io/${REPO}/jenkins-${PROJECT_VERSION}-1.2.noarch.rpm -O ${OUTPUT_FILE_NAME}
wget -q https://get.jenkins.io/${REPO}/jenkins-${PROJECT_VERSION}-1.2.noarch.rpm -O ${OUTPUT_FILE_NAME}
- name: Upload Release Asset
id: upload-suse-rpm
if: always()

View File

@ -1,7 +1,7 @@
tasks:
- init: |
mvn -am -pl war,bom -P quick-build clean install
command: |
command: |
mvn -pl war jetty:run -Dhost=0.0.0.0
name: Run
- command: gp await-port 8080 && gp url 8080 && gp preview $(gp url 8080)/jenkins/

View File

@ -9,19 +9,19 @@ This page provides information about contributing code to the Jenkins core codeb
1. Fork the repository on GitHub
2. Clone the forked repository to your machine
3. Install the necessary development tools. In order to develop Jenkins, you need the following:
* Java Development Kit (JDK) 11 or 17.
- Java Development Kit (JDK) 11 or 17.
In the Jenkins project we usually use [Eclipse Temurin](https://adoptium.net/) or [OpenJDK](https://openjdk.java.net/), but you can use other JDKs as well.
* Apache Maven 3.8.1 or above. You can [download Maven here](https://maven.apache.org/download.cgi).
- Apache Maven 3.8.1 or above. You can [download Maven here](https://maven.apache.org/download.cgi).
In the Jenkins project we usually use the most recent Maven release.
* Any IDE which supports importing Maven projects.
* Install [NodeJS 16.x](https://nodejs.org/en/). **Note:** only needed to work on the frontend assets found in the `war` module.
* Frontend tasks are run using [yarn](https://yarnpkg.com/). Run `npm install -g yarn` to install it.
- Any IDE which supports importing Maven projects.
- Install [NodeJS 16.x](https://nodejs.org/en/). **Note:** only needed to work on the frontend assets found in the `war` module.
- Frontend tasks are run using [yarn](https://yarnpkg.com/). Run `npm install -g yarn` to install it.
4. Set up your development environment as described in [Preparing for Plugin Development](https://www.jenkins.io/doc/developer/tutorial/prepare/)
If you want to contribute to Jenkins, or just learn about the project,
you can start by fixing some easier issues.
In the Jenkins issue tracker we mark such issues as `newbie-friendly`.
You can find them by using this query (check the link) for [newbie friendly issues](https://issues.jenkins.io/issues/?jql=project%20%3D%20JENKINS%20AND%20status%20in%20(Open%2C%20%22In%20Progress%22%2C%20Reopened)%20AND%20component%20%3D%20core%20AND%20labels%20in%20(newbie-friendly)).
You can find them by using this query (check the link) for [newbie friendly issues](<https://issues.jenkins.io/issues/?jql=project%20%3D%20JENKINS%20AND%20status%20in%20(Open%2C%20%22In%20Progress%22%2C%20Reopened)%20AND%20component%20%3D%20core%20AND%20labels%20in%20(newbie-friendly)>).
## Building and Debugging
@ -53,11 +53,13 @@ mvn -pl war jetty:run
To work on the `war` module frontend assets, two processes are needed at the same time:
On one terminal, start a development server that will not process frontend assets:
```sh
mvn -pl war jetty:run -Dskip.yarn
```
On another terminal, move to the war folder and start a [webpack](https://webpack.js.org/) dev server:
```sh
cd war; yarn start
```
@ -82,9 +84,9 @@ so there is no strict need to run full test suites before proposing a pull reque
There are 3 profiles for tests:
* `light-test` - runs only unit tests, no functional tests
* `smoke-test` - runs unit tests + a number of functional tests
* `all-tests` - runs all tests, with re-run (default)
- `light-test` - runs only unit tests, no functional tests
- `smoke-test` - runs unit tests + a number of functional tests
- `all-tests` - runs all tests, with re-run (default)
In addition to the included tests, you can also find extra integration and UI
tests in the [Acceptance Test Harness (ATH)](https://github.com/jenkinsci/acceptance-test-harness) repository.
@ -93,6 +95,7 @@ If you propose complex UI changes, you should create new ATH tests for them.
### JavaScript unit tests
In case there's only need to run the JS tests:
```sh
cd war; yarn test
```
@ -105,17 +108,17 @@ All proposed changes are submitted, and code reviewed, using a [GitHub pull requ
To submit a pull request:
1. Commit your changes and push them to your fork on GitHub.
It is a good practice is to create branches instead of pushing to master.
It is a good practice is to create branches instead of pushing to master.
2. In the GitHub Web UI, click the _New Pull Request_ button.
3. Select `jenkinsci` as _base fork_ and `master` as `base`, then click _Create Pull Request_.
* We integrate all changes into the master branch towards the Weekly releases.
* After that, the changes may be backported to the current LTS baseline by the LTS Team.
- We integrate all changes into the master branch towards the Weekly releases.
- After that, the changes may be backported to the current LTS baseline by the LTS Team.
Read more about the [backporting process](https://www.jenkins.io/download/lts/).
4. Fill in the Pull Request description according to the [proposed template](.github/PULL_REQUEST_TEMPLATE.md).
5. Click _Create Pull Request_.
6. Wait for CI results/reviews, process the feedback.
* If you do not get feedback after 3 days, feel free to ping `@jenkinsci/core-pr-reviewers` in the comments.
* Usually we merge pull requests after 2 approvals from reviewers, no requested changes, and having waited some more time to give others an opportunity to provide their feedback.
- If you do not get feedback after 3 days, feel free to ping `@jenkinsci/core-pr-reviewers` in the comments.
- Usually we merge pull requests after 2 approvals from reviewers, no requested changes, and having waited some more time to give others an opportunity to provide their feedback.
See [this page](/docs/MAINTAINERS.adoc) for more information about our review process.
Once your Pull Request is ready to be merged,
@ -130,26 +133,26 @@ The complete list of labels can be found at https://github.com/jenkinsci/jenkins
These labels are defined as follows:
- `needs-docs` marks a pull request as lacking documentation, either for developers (e.g., Javadoc) or users (e.g., changes to the [Jenkins handbook](https://www.jenkins.io/doc/book/)).
For such pull requests to be approved and merged, the corresponding changes to the documentation should be proposed.
If those changes belong to a separate repository (e.g., `jenkins-infra/jenkins.io`), a secondary pull request should be created in draft state in the other repository and reviewed in tandem with the primary pull request that proposes the code change.
For such pull requests to be approved and merged, the corresponding changes to the documentation should be proposed.
If those changes belong to a separate repository (e.g., `jenkins-infra/jenkins.io`), a secondary pull request should be created in draft state in the other repository and reviewed in tandem with the primary pull request that proposes the code change.
- `needs-fix` marks a pull request which has pending requests for change that have not yet been addressed.
Such pull requests will not be merged until the code has been fixed and the tests pass.
Such pull requests will not be merged until the code has been fixed and the tests pass.
- `needs-justification` marks a pull request where the reasoning is unclear, incomplete or not entirely cogent.
To properly evaluate the solution provided in a pull request, maintainers must be able to understand the high-level problem that the pull request attempts to solve.
While the context might be obvious to the author, it is not always apparent to reviewers and maintainers.
The use of design documents, high-level tracking epics, [minimal reproducible examples (MREs)](https://en.wikipedia.org/wiki/Minimal_reproducible_example), etc. is strongly encouraged.
To properly evaluate the solution provided in a pull request, maintainers must be able to understand the high-level problem that the pull request attempts to solve.
While the context might be obvious to the author, it is not always apparent to reviewers and maintainers.
The use of design documents, high-level tracking epics, [minimal reproducible examples (MREs)](https://en.wikipedia.org/wiki/Minimal_reproducible_example), etc. is strongly encouraged.
- `needs-more-review` marks a pull request as lacking a sufficient number of reviews from subject-matter expert(s) (SME), either because the changes are complex and not sufficiently explained or because there is a lack of consensus regarding the proposed solution.
- `on-hold` marks a pull request that depends on another event and cannot be merged until the completion of that event.
When the dependent task has been completed, the pull request will be ready for merge.
When the dependent task has been completed, the pull request will be ready for merge.
- `proposed-for-close` marks a pull request where there is either no consensus on the next steps or where the next steps have not been taken and an extended period of time has elapsed.
Such pull requests are typically closed approximately one week after the label has been applied.
They can always be reopened once consensus has been reached on the next steps or when action is taken regarding these next steps.
Such pull requests are typically closed approximately one week after the label has been applied.
They can always be reopened once consensus has been reached on the next steps or when action is taken regarding these next steps.
- `ready-for-merge` marks a pull request that has met the acceptance criteria, as defined elsewhere in this document.
If there is no negative feedback, such pull requests are typically merged within approximately 24 hours.
If there is no negative feedback, such pull requests are typically merged within approximately 24 hours.
- `stalled` marks a pull request that is off to a promising start but requires additional effort to reach completion - effort that appears to have been abandoned.
If the original author lacks the time and interest to continue the original effort, we suggest that someone else pick up where the original author left off to drive the effort to completion.
If the original author lacks the time and interest to continue the original effort, we suggest that someone else pick up where the original author left off to drive the effort to completion.
- `work-in-progress` marks a pull request that remains under active development.
Such pull requests are not ready for final review.
Such pull requests are not ready for final review.
To ensure that pull requests are processed efficiently, the `ready-for-merge`, `stalled`, and `proposed-for-close` labels are subject to time constraints.
@ -172,7 +175,7 @@ The setting can be found in Settings -> Editor -> General -> On Save -> Remove t
This will help minimize the diff, which makes reviewing PRs easier.
We also do not recommend `*` imports in the production code.
Please disable them in Settings > Editor > Codestyle > Java by setting _Class count to use import with '*'_ and Names count to use import with '*'_ to a high value, e.g. 100.
Please disable them in Settings > Editor > Codestyle > Java by setting _Class count to use import with '\*'_ and Names count to use import with '\*'\_ to a high value, e.g. 100.
The addition of `@{jenkins.addOpens}` to `argLine` exposes a bug in IntelliJ IDEA.
A patch has been proposed in [JetBrains/intellij-community#1976](https://github.com/JetBrains/intellij-community/pull/1976).
@ -209,7 +212,7 @@ just submit a pull request.
# Links
* [Jenkins Contribution Landing Page](https://www.jenkins.io/participate/)
* [Jenkins Chat Channels](https://www.jenkins.io/chat/)
* [Beginners Guide To Contributing](https://www.jenkins.io/participate/)
* [List of newbie-friendly issues in the core](https://issues.jenkins.io/issues/?jql=project%20%3D%20JENKINS%20AND%20status%20in%20(Open%2C%20%22In%20Progress%22%2C%20Reopened)%20AND%20component%20%3D%20core%20AND%20labels%20in%20(newbie-friendly))
- [Jenkins Contribution Landing Page](https://www.jenkins.io/participate/)
- [Jenkins Chat Channels](https://www.jenkins.io/chat/)
- [Beginners Guide To Contributing](https://www.jenkins.io/participate/)
- [List of newbie-friendly issues in the core](<https://issues.jenkins.io/issues/?jql=project%20%3D%20JENKINS%20AND%20status%20in%20(Open%2C%20%22In%20Progress%22%2C%20Reopened)%20AND%20component%20%3D%20core%20AND%20labels%20in%20(newbie-friendly)>)

View File

@ -12,8 +12,8 @@
[![Docker Pulls](https://img.shields.io/docker/pulls/jenkins/jenkins.svg)](https://hub.docker.com/r/jenkins/jenkins/)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/3538/badge)](https://bestpractices.coreinfrastructure.org/projects/3538)
In a nutshell, Jenkins is the leading open-source automation server.
Built with Java, it provides over 1,800 [plugins](https://plugins.jenkins.io/) to support automating virtually anything,
In a nutshell, Jenkins is the leading open-source automation server.
Built with Java, it provides over 1,800 [plugins](https://plugins.jenkins.io/) to support automating virtually anything,
so that humans can spend their time doing things machines cannot.
# What to Use Jenkins for and When to Use It
@ -34,17 +34,17 @@ See the [Downloads](https://www.jenkins.io/download) page for references.
For all distributions Jenkins offers two release lines:
* [Weekly](https://www.jenkins.io/download/weekly/) -
- [Weekly](https://www.jenkins.io/download/weekly/) -
Frequent releases which include all new features, improvements, and bug fixes.
* [Long-Term Support (LTS)](https://www.jenkins.io/download/lts/) -
- [Long-Term Support (LTS)](https://www.jenkins.io/download/lts/) -
Older release line which gets periodically updated via bug fix backports.
Latest releases:
[![Jenkins Regular Release](https://img.shields.io/endpoint?url=https%3A%2F%2Fwww.jenkins.io%2Fchangelog%2Fbadge.json)](https://www.jenkins.io/changelog)
[![Jenkins LTS Release](https://img.shields.io/endpoint?url=https%3A%2F%2Fwww.jenkins.io%2Fchangelog-stable%2Fbadge.json)](https://www.jenkins.io/changelog-stable)
# Source
Our latest and greatest source of Jenkins can be found on [GitHub](https://github.com/jenkinsci/jenkins). Fork us!
# Contributing to Jenkins
@ -71,4 +71,5 @@ Jenkins is used by millions of users and thousands of companies.
See [adopters](https://www.jenkins.io/project/adopters/) for the list of Jenkins adopters and their success stories.
# License
Jenkins is **licensed** under the **[MIT License](https://github.com/jenkinsci/jenkins/blob/master/LICENSE.txt)**.

View File

@ -12,4 +12,4 @@ https://github.com/jenkins-infra/jenkins.io/blob/master/content/_data/changelogs
Be sure to use PRs for changes to these files, as malformed files WILL result in build failures of the jenkins.io static site generation.
-->
-->

View File

@ -1,430 +1,496 @@
Behaviour.specify("#filter-box", '_table', 0, function(e) {
function applyFilter() {
var filter = e.value.toLowerCase().trim();
var filterParts = filter.split(/ +/).filter (function(word) { return word.length > 0; });
var items = document.getElementsBySelector("TR.plugin").concat(document.getElementsBySelector("TR.unavailable"));
var anyVisible = false;
for (var i=0; i<items.length; i++) {
if ((filterParts.length < 1 || filter.length < 2) && items[i].hasClassName("hidden-by-default")) {
items[i].addClassName("jenkins-hidden");
continue;
}
var makeVisible = true;
Behaviour.specify("#filter-box", "_table", 0, function (e) {
function applyFilter() {
var filter = e.value.toLowerCase().trim();
var filterParts = filter.split(/ +/).filter(function (word) {
return word.length > 0;
});
var items = document
.getElementsBySelector("TR.plugin")
.concat(document.getElementsBySelector("TR.unavailable"));
var anyVisible = false;
for (var i = 0; i < items.length; i++) {
if (
(filterParts.length < 1 || filter.length < 2) &&
items[i].hasClassName("hidden-by-default")
) {
items[i].addClassName("jenkins-hidden");
continue;
}
var makeVisible = true;
var pluginId = items[i].getAttribute('data-plugin-id');
var content = (items[i].querySelector('.details').innerText + " " + pluginId).toLowerCase();
var pluginId = items[i].getAttribute("data-plugin-id");
var content = (
items[i].querySelector(".details").innerText +
" " +
pluginId
).toLowerCase();
for (var j = 0; j < filterParts.length; j++) {
var part = filterParts[j];
if (content.indexOf(part) < 0) {
makeVisible = false;
break;
}
}
if (makeVisible) {
items[i].classList.remove("jenkins-hidden");
anyVisible = true;
} else {
items[i].classList.add("jenkins-hidden");
}
}
var instructions = document.getElementById("hidden-by-default-instructions")
if (instructions) {
instructions.style.display = anyVisible ? 'none' : '';
for (var j = 0; j < filterParts.length; j++) {
var part = filterParts[j];
if (content.indexOf(part) < 0) {
makeVisible = false;
break;
}
}
layoutUpdateCallback.call();
if (makeVisible) {
items[i].classList.remove("jenkins-hidden");
anyVisible = true;
} else {
items[i].classList.add("jenkins-hidden");
}
}
var instructions = document.getElementById(
"hidden-by-default-instructions"
);
if (instructions) {
instructions.style.display = anyVisible ? "none" : "";
}
e.addEventListener("input", () => applyFilter());
(function() {
var instructionsTd = document.getElementById("hidden-by-default-instructions-td");
if (instructionsTd) { // only on Available tab
instructionsTd.innerText = instructionsTd.getAttribute("data-loaded-text");
}
applyFilter();
}());
layoutUpdateCallback.call();
}
e.addEventListener("input", () => applyFilter());
(function () {
var instructionsTd = document.getElementById(
"hidden-by-default-instructions-td"
);
if (instructionsTd) {
// only on Available tab
instructionsTd.innerText =
instructionsTd.getAttribute("data-loaded-text");
}
applyFilter();
})();
});
/**
* Code for handling the enable/disable behavior based on plugin
* dependencies and dependents.
*/
(function(){
function selectAll(selector, element) {
if (element) {
return $(element).select(selector);
} else {
return Element.select(undefined, selector);
}
(function () {
function selectAll(selector, element) {
if (element) {
return $(element).select(selector);
} else {
return Element.select(undefined, selector);
}
function select(selector, element) {
var elementsBySelector = selectAll(selector, element);
if (elementsBySelector.length > 0) {
return elementsBySelector[0];
} else {
return undefined;
}
}
function select(selector, element) {
var elementsBySelector = selectAll(selector, element);
if (elementsBySelector.length > 0) {
return elementsBySelector[0];
} else {
return undefined;
}
}
/**
* Wait for document onload.
*/
Element.observe(window, "load", function () {
var pluginsTable = select("#plugins");
var pluginTRs = selectAll(".plugin", pluginsTable);
if (!pluginTRs) {
return;
}
/**
* Wait for document onload.
*/
Element.observe(window, "load", function() {
var pluginsTable = select('#plugins');
var pluginTRs = selectAll('.plugin', pluginsTable);
var pluginI18n = select(".plugins.i18n");
function i18n(messageId) {
return pluginI18n.getAttribute("data-" + messageId);
}
if (!pluginTRs) {
// Create a map of the plugin rows, making it easy to index them.
var plugins = {};
for (var i = 0; i < pluginTRs.length; i++) {
var pluginTR = pluginTRs[i];
var pluginId = pluginTR.getAttribute("data-plugin-id");
plugins[pluginId] = pluginTR;
}
function getPluginTR(pluginId) {
return plugins[pluginId];
}
function getPluginName(pluginId) {
var pluginTR = getPluginTR(pluginId);
if (pluginTR) {
return pluginTR.getAttribute("data-plugin-name");
} else {
return pluginId;
}
}
function processSpanSet(spans) {
var ids = [];
for (var i = 0; i < spans.length; i++) {
var span = spans[i];
var pluginId = span.getAttribute("data-plugin-id");
var pluginName = getPluginName(pluginId);
span.update(pluginName);
ids.push(pluginId);
}
return ids;
}
function markAllDependentsDisabled(pluginTR) {
var jenkinsPluginMetadata = pluginTR.jenkinsPluginMetadata;
var dependentIds = jenkinsPluginMetadata.dependentIds;
if (dependentIds) {
// If the only dependent is jenkins-core (it's a bundle plugin), then lets
// treat it like all its dependents are disabled. We're really only interested in
// dependent plugins in this case.
// Note: This does not cover "implied" dependencies ala detached plugins. See https://goo.gl/lQHrUh
if (dependentIds.length === 1 && dependentIds[0] === "jenkins-core") {
pluginTR.addClassName("all-dependents-disabled");
return;
}
for (var i = 0; i < dependentIds.length; i++) {
var dependentId = dependentIds[i];
if (dependentId === "jenkins-core") {
// Jenkins core is always enabled. So, make sure it's not possible to disable/uninstall
// any plugins that it "depends" on. (we sill have bundled plugins)
pluginTR.removeClassName("all-dependents-disabled");
return;
}
// The dependent is a plugin....
var dependentPluginTr = getPluginTR(dependentId);
if (
dependentPluginTr &&
dependentPluginTr.jenkinsPluginMetadata.enableInput.checked
) {
// One of the plugins that depend on this plugin, is marked as enabled.
pluginTR.removeClassName("all-dependents-disabled");
return;
}
}
}
pluginTR.addClassName("all-dependents-disabled");
}
function markHasDisabledDependencies(pluginTR) {
var jenkinsPluginMetadata = pluginTR.jenkinsPluginMetadata;
var dependencyIds = jenkinsPluginMetadata.dependencyIds;
if (dependencyIds) {
for (var i = 0; i < dependencyIds.length; i++) {
var dependencyPluginTr = getPluginTR(dependencyIds[i]);
if (
dependencyPluginTr &&
!dependencyPluginTr.jenkinsPluginMetadata.enableInput.checked
) {
// One of the plugins that this plugin depend on, is marked as disabled.
pluginTR.addClassName("has-disabled-dependency");
return;
}
}
}
pluginTR.removeClassName("has-disabled-dependency");
}
function setEnableWidgetStates() {
for (var i = 0; i < pluginTRs.length; i++) {
var pluginMetadata = pluginTRs[i].jenkinsPluginMetadata;
if (pluginTRs[i].hasClassName("has-dependents-but-disabled")) {
if (pluginMetadata.enableInput.checked) {
pluginTRs[i].removeClassName("has-dependents-but-disabled");
}
}
markAllDependentsDisabled(pluginTRs[i]);
markHasDisabledDependencies(pluginTRs[i]);
}
}
function addDependencyInfoRow(pluginTR, infoTR) {
infoTR.addClassName("plugin-dependency-info");
pluginTR.insert({
after: infoTR,
});
}
function removeDependencyInfoRow(pluginTR) {
var nextRows = pluginTR.nextSiblings();
if (nextRows && nextRows.length > 0) {
var nextRow = nextRows[0];
if (nextRow.hasClassName("plugin-dependency-info")) {
nextRow.remove();
}
}
}
function populateEnableDisableInfo(pluginTR, infoContainer) {
var pluginMetadata = pluginTR.jenkinsPluginMetadata;
// Remove all existing class info
infoContainer.removeAttribute("class");
infoContainer.addClassName("enable-state-info");
if (pluginTR.hasClassName("has-disabled-dependency")) {
var dependenciesDiv = pluginMetadata.dependenciesDiv;
var dependencySpans = pluginMetadata.dependencies;
infoContainer.update(
'<div class="title">' +
i18n("cannot-enable") +
'</div><div class="subtitle">' +
i18n("disabled-dependencies") +
".</div>"
);
// Go through each dependency <span> element. Show the spans where the dependency is
// disabled. Hide the others.
for (var i = 0; i < dependencySpans.length; i++) {
var dependencySpan = dependencySpans[i];
var pluginId = dependencySpan.getAttribute("data-plugin-id");
var depPluginTR = getPluginTR(pluginId);
var enabled = false;
if (depPluginTR) {
var depPluginMetadata = depPluginTR.jenkinsPluginMetadata;
enabled = depPluginMetadata.enableInput.checked;
}
if (enabled) {
// It's enabled ... hide the span
dependencySpan.setStyle({ display: "none" });
} else {
// It's disabled ... show the span
dependencySpan.setStyle({ display: "inline-block" });
}
}
var pluginI18n = select('.plugins.i18n');
function i18n(messageId) {
return pluginI18n.getAttribute('data-' + messageId);
}
dependenciesDiv.setStyle({ display: "inherit" });
infoContainer.appendChild(dependenciesDiv);
// Create a map of the plugin rows, making it easy to index them.
var plugins = {};
for (var i = 0; i < pluginTRs.length; i++) {
var pluginTR = pluginTRs[i];
var pluginId = pluginTR.getAttribute('data-plugin-id');
plugins[pluginId] = pluginTR;
}
function getPluginTR(pluginId) {
return plugins[pluginId];
}
function getPluginName(pluginId) {
var pluginTR = getPluginTR(pluginId);
if (pluginTR) {
return pluginTR.getAttribute('data-plugin-name');
} else {
return pluginId;
}
}
function processSpanSet(spans) {
var ids = [];
for (var i = 0; i < spans.length; i++) {
var span = spans[i];
var pluginId = span.getAttribute('data-plugin-id');
var pluginName = getPluginName(pluginId);
span.update(pluginName);
ids.push(pluginId);
}
return ids;
}
function markAllDependentsDisabled(pluginTR) {
var jenkinsPluginMetadata = pluginTR.jenkinsPluginMetadata;
var dependentIds = jenkinsPluginMetadata.dependentIds;
if (dependentIds) {
// If the only dependent is jenkins-core (it's a bundle plugin), then lets
// treat it like all its dependents are disabled. We're really only interested in
// dependent plugins in this case.
// Note: This does not cover "implied" dependencies ala detached plugins. See https://goo.gl/lQHrUh
if (dependentIds.length === 1 && dependentIds[0] === 'jenkins-core') {
pluginTR.addClassName('all-dependents-disabled');
return;
}
for (var i = 0; i < dependentIds.length; i++) {
var dependentId = dependentIds[i];
if (dependentId === 'jenkins-core') {
// Jenkins core is always enabled. So, make sure it's not possible to disable/uninstall
// any plugins that it "depends" on. (we sill have bundled plugins)
pluginTR.removeClassName('all-dependents-disabled');
return;
}
// The dependent is a plugin....
var dependentPluginTr = getPluginTR(dependentId);
if (dependentPluginTr && dependentPluginTr.jenkinsPluginMetadata.enableInput.checked) {
// One of the plugins that depend on this plugin, is marked as enabled.
pluginTR.removeClassName('all-dependents-disabled');
return;
}
}
}
pluginTR.addClassName('all-dependents-disabled');
}
function markHasDisabledDependencies(pluginTR) {
var jenkinsPluginMetadata = pluginTR.jenkinsPluginMetadata;
var dependencyIds = jenkinsPluginMetadata.dependencyIds;
if (dependencyIds) {
for (var i = 0; i < dependencyIds.length; i++) {
var dependencyPluginTr = getPluginTR(dependencyIds[i]);
if (dependencyPluginTr && !dependencyPluginTr.jenkinsPluginMetadata.enableInput.checked) {
// One of the plugins that this plugin depend on, is marked as disabled.
pluginTR.addClassName('has-disabled-dependency');
return;
}
}
}
pluginTR.removeClassName('has-disabled-dependency');
}
function setEnableWidgetStates() {
for (var i = 0; i < pluginTRs.length; i++) {
var pluginMetadata = pluginTRs[i].jenkinsPluginMetadata;
if (pluginTRs[i].hasClassName('has-dependents-but-disabled')) {
if (pluginMetadata.enableInput.checked) {
pluginTRs[i].removeClassName('has-dependents-but-disabled');
}
}
markAllDependentsDisabled(pluginTRs[i]);
markHasDisabledDependencies(pluginTRs[i]);
}
}
function addDependencyInfoRow(pluginTR, infoTR) {
infoTR.addClassName('plugin-dependency-info');
pluginTR.insert({
after: infoTR
});
}
function removeDependencyInfoRow(pluginTR) {
var nextRows = pluginTR.nextSiblings();
if (nextRows && nextRows.length > 0) {
var nextRow = nextRows[0];
if (nextRow.hasClassName('plugin-dependency-info')) {
nextRow.remove();
}
}
}
function populateEnableDisableInfo(pluginTR, infoContainer) {
var pluginMetadata = pluginTR.jenkinsPluginMetadata;
// Remove all existing class info
infoContainer.removeAttribute('class');
infoContainer.addClassName('enable-state-info');
if (pluginTR.hasClassName('has-disabled-dependency')) {
var dependenciesDiv = pluginMetadata.dependenciesDiv;
var dependencySpans = pluginMetadata.dependencies;
infoContainer.update('<div class="title">' + i18n('cannot-enable') + '</div><div class="subtitle">' + i18n('disabled-dependencies') + '.</div>');
// Go through each dependency <span> element. Show the spans where the dependency is
// disabled. Hide the others.
for (var i = 0; i < dependencySpans.length; i++) {
var dependencySpan = dependencySpans[i];
var pluginId = dependencySpan.getAttribute('data-plugin-id');
var depPluginTR = getPluginTR(pluginId);
var enabled = false;
if (depPluginTR) {
var depPluginMetadata = depPluginTR.jenkinsPluginMetadata;
enabled = depPluginMetadata.enableInput.checked;
}
if (enabled) {
// It's enabled ... hide the span
dependencySpan.setStyle({display: 'none'});
} else {
// It's disabled ... show the span
dependencySpan.setStyle({display: 'inline-block'});
}
}
dependenciesDiv.setStyle({display: 'inherit'});
infoContainer.appendChild(dependenciesDiv);
return true;
} if (pluginTR.hasClassName('has-dependents')) {
if (!pluginTR.hasClassName('all-dependents-disabled')) {
var dependentIds = pluginMetadata.dependentIds;
// If the only dependent is jenkins-core (it's a bundle plugin), then lets
// treat it like all its dependents are disabled. We're really only interested in
// dependent plugins in this case.
// Note: This does not cover "implied" dependencies ala detached plugins. See https://goo.gl/lQHrUh
if (dependentIds.length === 1 && dependentIds[0] === 'jenkins-core') {
pluginTR.addClassName('all-dependents-disabled');
return false;
}
infoContainer.update('<div class="title">' + i18n('cannot-disable') + '</div><div class="subtitle">' + i18n('enabled-dependents') + '.</div>');
infoContainer.appendChild(getDependentsDiv(pluginTR, true));
return true;
}
}
if (pluginTR.hasClassName('possibly-has-implied-dependents')) {
infoContainer.update('<div class="title">' + i18n('detached-disable') + '</div><div class="subtitle">' + i18n('detached-possible-dependents') + '</div>');
infoContainer.appendChild(getDependentsDiv(pluginTR, true));
return true;
}
return true;
}
if (pluginTR.hasClassName("has-dependents")) {
if (!pluginTR.hasClassName("all-dependents-disabled")) {
var dependentIds = pluginMetadata.dependentIds;
// If the only dependent is jenkins-core (it's a bundle plugin), then lets
// treat it like all its dependents are disabled. We're really only interested in
// dependent plugins in this case.
// Note: This does not cover "implied" dependencies ala detached plugins. See https://goo.gl/lQHrUh
if (dependentIds.length === 1 && dependentIds[0] === "jenkins-core") {
pluginTR.addClassName("all-dependents-disabled");
return false;
}
infoContainer.update(
'<div class="title">' +
i18n("cannot-disable") +
'</div><div class="subtitle">' +
i18n("enabled-dependents") +
".</div>"
);
infoContainer.appendChild(getDependentsDiv(pluginTR, true));
return true;
}
}
function populateUninstallInfo(pluginTR, infoContainer) {
// Remove all existing class info
infoContainer.removeAttribute('class');
infoContainer.addClassName('uninstall-state-info');
if (pluginTR.hasClassName("possibly-has-implied-dependents")) {
infoContainer.update(
'<div class="title">' +
i18n("detached-disable") +
'</div><div class="subtitle">' +
i18n("detached-possible-dependents") +
"</div>"
);
infoContainer.appendChild(getDependentsDiv(pluginTR, true));
return true;
}
if (pluginTR.hasClassName('has-dependents')) {
infoContainer.update('<div class="title">' + i18n('cannot-uninstall') + '</div><div class="subtitle">' + i18n('installed-dependents') + '.</div>');
infoContainer.appendChild(getDependentsDiv(pluginTR, false));
return true;
}
return false;
}
if (pluginTR.hasClassName('possibly-has-implied-dependents')) {
infoContainer.update('<div class="title">' + i18n('detached-uninstall') + '</div><div class="subtitle">' + i18n('detached-possible-dependents') + '</div>');
infoContainer.appendChild(getDependentsDiv(pluginTR, false));
return true;
}
function populateUninstallInfo(pluginTR, infoContainer) {
// Remove all existing class info
infoContainer.removeAttribute("class");
infoContainer.addClassName("uninstall-state-info");
return false;
if (pluginTR.hasClassName("has-dependents")) {
infoContainer.update(
'<div class="title">' +
i18n("cannot-uninstall") +
'</div><div class="subtitle">' +
i18n("installed-dependents") +
".</div>"
);
infoContainer.appendChild(getDependentsDiv(pluginTR, false));
return true;
}
if (pluginTR.hasClassName("possibly-has-implied-dependents")) {
infoContainer.update(
'<div class="title">' +
i18n("detached-uninstall") +
'</div><div class="subtitle">' +
i18n("detached-possible-dependents") +
"</div>"
);
infoContainer.appendChild(getDependentsDiv(pluginTR, false));
return true;
}
return false;
}
function getDependentsDiv(pluginTR, hideDisabled) {
var pluginMetadata = pluginTR.jenkinsPluginMetadata;
var dependentsDiv = pluginMetadata.dependentsDiv;
var dependentSpans = pluginMetadata.dependents;
// Go through each dependent <span> element. If disabled should be hidden, show the spans where
// the dependent is enabled and hide the others. Otherwise show them all.
for (var i = 0; i < dependentSpans.length; i++) {
var dependentSpan = dependentSpans[i];
var dependentId = dependentSpan.getAttribute("data-plugin-id");
if (!hideDisabled || dependentId === "jenkins-core") {
dependentSpan.setStyle({ display: "inline-block" });
} else {
var depPluginTR = getPluginTR(dependentId);
var depPluginMetadata = depPluginTR.jenkinsPluginMetadata;
if (depPluginMetadata.enableInput.checked) {
// It's enabled ... show the span
dependentSpan.setStyle({ display: "inline-block" });
} else {
// It's disabled ... hide the span
dependentSpan.setStyle({ display: "none" });
}
}
}
function getDependentsDiv(pluginTR, hideDisabled) {
var pluginMetadata = pluginTR.jenkinsPluginMetadata;
var dependentsDiv = pluginMetadata.dependentsDiv;
var dependentSpans = pluginMetadata.dependents;
dependentsDiv.setStyle({ display: "inherit" });
return dependentsDiv;
}
// Go through each dependent <span> element. If disabled should be hidden, show the spans where
// the dependent is enabled and hide the others. Otherwise show them all.
for (var i = 0; i < dependentSpans.length; i++) {
var dependentSpan = dependentSpans[i];
var dependentId = dependentSpan.getAttribute('data-plugin-id');
function initPluginRowHandling(pluginTR) {
var enableInput = select(".enable input", pluginTR);
var dependenciesDiv = select(".dependency-list", pluginTR);
var dependentsDiv = select(".dependent-list", pluginTR);
var enableTD = select("td.enable", pluginTR);
var uninstallTD = select("td.uninstall", pluginTR);
if (!hideDisabled || dependentId === 'jenkins-core') {
dependentSpan.setStyle({display: 'inline-block'});
} else {
var depPluginTR = getPluginTR(dependentId);
var depPluginMetadata = depPluginTR.jenkinsPluginMetadata;
if (depPluginMetadata.enableInput.checked) {
// It's enabled ... show the span
dependentSpan.setStyle({display: 'inline-block'});
} else {
// It's disabled ... hide the span
dependentSpan.setStyle({display: 'none'});
}
}
}
pluginTR.jenkinsPluginMetadata = {
enableInput: enableInput,
dependenciesDiv: dependenciesDiv,
dependentsDiv: dependentsDiv,
};
dependentsDiv.setStyle({display: 'inherit'});
return dependentsDiv;
if (dependenciesDiv) {
pluginTR.jenkinsPluginMetadata.dependencies = selectAll(
"span",
dependenciesDiv
);
pluginTR.jenkinsPluginMetadata.dependencyIds = processSpanSet(
pluginTR.jenkinsPluginMetadata.dependencies
);
}
if (dependentsDiv) {
pluginTR.jenkinsPluginMetadata.dependents = selectAll(
"span",
dependentsDiv
);
pluginTR.jenkinsPluginMetadata.dependentIds = processSpanSet(
pluginTR.jenkinsPluginMetadata.dependents
);
}
// Setup event handlers...
if (enableInput) {
// Toggling of the enable/disable checkbox requires a check and possible
// change of visibility on the same checkbox on other plugins.
Element.observe(enableInput, "click", function () {
setEnableWidgetStates();
});
}
//
var infoTR = document.createElement("tr");
var infoTD = document.createElement("td");
var infoDiv = document.createElement("div");
infoTR.appendChild(infoTD);
infoTD.appendChild(infoDiv);
infoTD.setAttribute("colspan", "6"); // This is the cell that all info will be added to.
infoDiv.setStyle({ display: "inherit" });
// We don't want the info row to appear immediately. We wait for e.g. 1 second and if the mouse
// is still in there (hasn't left the cell) then we show. The following code is for clearing the
// show timeout where the mouse has left before the timeout has fired.
var showInfoTimeout = undefined;
function clearShowInfoTimeout() {
if (showInfoTimeout) {
clearTimeout(showInfoTimeout);
}
showInfoTimeout = undefined;
}
function initPluginRowHandling(pluginTR) {
var enableInput = select('.enable input', pluginTR);
var dependenciesDiv = select('.dependency-list', pluginTR);
var dependentsDiv = select('.dependent-list', pluginTR);
var enableTD = select('td.enable', pluginTR);
var uninstallTD = select('td.uninstall', pluginTR);
pluginTR.jenkinsPluginMetadata = {
enableInput: enableInput,
dependenciesDiv: dependenciesDiv,
dependentsDiv: dependentsDiv
};
if (dependenciesDiv) {
pluginTR.jenkinsPluginMetadata.dependencies = selectAll('span', dependenciesDiv);
pluginTR.jenkinsPluginMetadata.dependencyIds = processSpanSet(pluginTR.jenkinsPluginMetadata.dependencies);
// Handle mouse in/out of the enable/disable cell (left most cell).
if (enableTD) {
Element.observe(enableTD, "mouseenter", function () {
showInfoTimeout = setTimeout(function () {
showInfoTimeout = undefined;
infoDiv.update("");
if (populateEnableDisableInfo(pluginTR, infoDiv)) {
addDependencyInfoRow(pluginTR, infoTR);
}
if (dependentsDiv) {
pluginTR.jenkinsPluginMetadata.dependents = selectAll('span', dependentsDiv);
pluginTR.jenkinsPluginMetadata.dependentIds = processSpanSet(pluginTR.jenkinsPluginMetadata.dependents);
}, 1000);
});
Element.observe(enableTD, "mouseleave", function () {
clearShowInfoTimeout();
removeDependencyInfoRow(pluginTR);
});
}
// Handle mouse in/out of the uninstall cell (right most cell).
if (uninstallTD) {
Element.observe(uninstallTD, "mouseenter", function () {
showInfoTimeout = setTimeout(function () {
showInfoTimeout = undefined;
infoDiv.update("");
if (populateUninstallInfo(pluginTR, infoDiv)) {
addDependencyInfoRow(pluginTR, infoTR);
}
}, 1000);
});
Element.observe(uninstallTD, "mouseleave", function () {
clearShowInfoTimeout();
removeDependencyInfoRow(pluginTR);
});
}
}
// Setup event handlers...
if (enableInput) {
// Toggling of the enable/disable checkbox requires a check and possible
// change of visibility on the same checkbox on other plugins.
Element.observe(enableInput, 'click', function() {
setEnableWidgetStates();
});
}
for (let j = 0; j < pluginTRs.length; j++) {
initPluginRowHandling(pluginTRs[j]);
}
//
var infoTR = document.createElement("tr");
var infoTD = document.createElement("td");
var infoDiv = document.createElement("div");
infoTR.appendChild(infoTD)
infoTD.appendChild(infoDiv)
infoTD.setAttribute('colspan', '6'); // This is the cell that all info will be added to.
infoDiv.setStyle({display: 'inherit'});
setEnableWidgetStates();
});
})();
// We don't want the info row to appear immediately. We wait for e.g. 1 second and if the mouse
// is still in there (hasn't left the cell) then we show. The following code is for clearing the
// show timeout where the mouse has left before the timeout has fired.
var showInfoTimeout = undefined;
function clearShowInfoTimeout() {
if (showInfoTimeout) {
clearTimeout(showInfoTimeout);
}
showInfoTimeout = undefined;
}
Element.observe(window, "load", function () {
document.getElementById("filter-box").focus();
// Handle mouse in/out of the enable/disable cell (left most cell).
if (enableTD) {
Element.observe(enableTD, 'mouseenter', function() {
showInfoTimeout = setTimeout(function() {
showInfoTimeout = undefined;
infoDiv.update('');
if (populateEnableDisableInfo(pluginTR, infoDiv)) {
addDependencyInfoRow(pluginTR, infoTR);
}
}, 1000);
});
Element.observe(enableTD, 'mouseleave', function() {
clearShowInfoTimeout();
removeDependencyInfoRow(pluginTR);
});
}
// Handle mouse in/out of the uninstall cell (right most cell).
if (uninstallTD) {
Element.observe(uninstallTD, 'mouseenter', function() {
showInfoTimeout = setTimeout(function() {
showInfoTimeout = undefined;
infoDiv.update('');
if (populateUninstallInfo(pluginTR, infoDiv)) {
addDependencyInfoRow(pluginTR, infoTR);
}
}, 1000);
});
Element.observe(uninstallTD, 'mouseleave', function() {
clearShowInfoTimeout();
removeDependencyInfoRow(pluginTR);
});
}
}
for (let j = 0; j < pluginTRs.length; j++) {
initPluginRowHandling(pluginTRs[j]);
}
setEnableWidgetStates();
});
}());
Element.observe(window, "load", function() {
document.getElementById('filter-box').focus();
const compatibleCheckbox = document.querySelector("[data-select='compatible']");
const compatibleCheckbox = document.querySelector(
"[data-select='compatible']"
);
if (compatibleCheckbox) {
compatibleCheckbox.addEventListener("click", () => {
const inputs = document.getElementsByTagName('input');
const inputs = document.getElementsByTagName("input");
for (let i = 0; i < inputs.length; i++) {
const candidate = inputs[i];
if (candidate.type === "checkbox" && !candidate.disabled) {
candidate.checked = candidate.dataset.compatWarning === 'false';
candidate.checked = candidate.dataset.compatWarning === "false";
}
}
window.updateTableHeaderCheckbox();
})
});
}
});

View File

@ -1,14 +1,22 @@
<div>
If your Jenkins server sits behind a firewall and does not have the direct access to the internet,
and if your server JVM is not configured appropriately
(<a href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html">See JDK networking properties for more details</a>)
to enable internet connection, you can specify the HTTP proxy server name in this field to allow Jenkins
to install plugins on behalf of you. Note that Jenkins uses HTTPS to communicate with the update center to download plugins.
If your Jenkins server sits behind a firewall and does not have the direct
access to the internet, and if your server JVM is not configured appropriately
(
<a
href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html"
>
See JDK networking properties for more details
</a>
) to enable internet connection, you can specify the HTTP proxy server name in
this field to allow Jenkins to install plugins on behalf of you. Note that
Jenkins uses HTTPS to communicate with the update center to download plugins.
<p>
Leaving this field empty
means Jenkins will try to connect to the internet directly.
Leaving this field empty means Jenkins will try to connect to the internet
directly.
</p>
<p>
If you are unsure about the value, check the browser proxy configuration.
</div>
If you are unsure about the value, check the browser proxy configuration.
</p>
</div>

View File

@ -1,13 +1,17 @@
<div>
Ако вашият Jenkins е зад защитна стена и няма пряка връзка към Интернет, а JVM на сървъра не е
настроена правилно, за да се позволи връзка с Интернет, може да укажете име на сървър-посредник
за HTTP, за да позволите на Jenkins самостоятелно да инсталира приставки. (за повече детайли:
<a href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html">Networking Properties</a>)
Jenkins използва HTTPS, за да се свърже със сървъра за обновяване и изтегли приставките.
Ако вашият Jenkins е зад защитна стена и няма пряка връзка към Интернет, а JVM
на сървъра не е настроена правилно, за да се позволи връзка с Интернет, може
да укажете име на сървър-посредник за HTTP, за да позволите на Jenkins
самостоятелно да инсталира приставки. (за повече детайли:
<a
href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html"
>
Networking Properties
</a>
) Jenkins използва HTTPS, за да се свърже със сървъра за обновяване и изтегли
приставките.
<p>
Ако полето е празно, Jenkins ще се свързва директно с Интернет.
<p>Ако полето е празно, Jenkins ще се свързва директно с Интернет.</p>
<p>
Ако не сте сигурни, вижте какви са настройките на браузъра ви.
<p>Ако не сте сигурни, вижте какви са настройките на браузъра ви.</p>
</div>

View File

@ -1,17 +1,24 @@
<div>
Befindet sich Ihr Jenkins-Server hinter einer Firewall, hat keinen direkten Zugang
zum Internet und ist Ihre Server-JVM nicht hinreichend konfiguriert, um eine Internetverbindung herzustellen
(<a href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html">mehr über die JDK-Netzwerk-Einstellungen</a>),
dann können Sie in diesem Feld den Namen eines HTTP-Proxy-Servers angeben.
Sie erlauben dadurch Jenkins, in Ihrem Namen Plugins herunterzuladen und zu installieren.
Beachten Sie, dass Jenkins HTTPS verwendet, um mit dem Update-Center zu kommunizieren
und Plugins herunterzuladen.
Befindet sich Ihr Jenkins-Server hinter einer Firewall, hat keinen direkten
Zugang zum Internet und ist Ihre Server-JVM nicht hinreichend konfiguriert, um
eine Internetverbindung herzustellen (
<a
href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html"
>
mehr über die JDK-Netzwerk-Einstellungen
</a>
), dann können Sie in diesem Feld den Namen eines HTTP-Proxy-Servers angeben.
Sie erlauben dadurch Jenkins, in Ihrem Namen Plugins herunterzuladen und zu
installieren. Beachten Sie, dass Jenkins HTTPS verwendet, um mit dem
Update-Center zu kommunizieren und Plugins herunterzuladen.
<p>
Wenn Sie dieses Feld freilassen, versucht Jenkins, das Update-Center direkt zu kontaktieren.
Wenn Sie dieses Feld freilassen, versucht Jenkins, das Update-Center direkt
zu kontaktieren.
</p>
<p>
Wenn Sie sich nicht sicher sind, was Sie hier eintragen sollen, schauen Sie
in der Proxy-Konfiguration Ihres Browsers nach.
Wenn Sie sich nicht sicher sind, was Sie hier eintragen sollen, schauen Sie
in der Proxy-Konfiguration Ihres Browsers nach.
</p>
</div>

View File

@ -1,15 +1,22 @@
<div>
Si votre serveur Jenkins se trouve derrière un firewall, qu'il n'a pas d'accès direct à internet et
que la JVM de votre serveur n'est pas configurée de façon à permettre l'accès à internet (voir
<a href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html">les propriétés réseau du JDK pour plus d'informations</a>),
vous pouvez spécifier le nom d'un serveur proxy HTTP pour permettre à Jenkins
d'installer des plugins pour vous.
Notez que Jenkins utilise HTTPS pour communiquer avec le serveur de mise à jour pour télécharger les plugins.
Si votre serveur Jenkins se trouve derrière un firewall, qu'il n'a pas d'accès
direct à internet et que la JVM de votre serveur n'est pas configurée de façon
à permettre l'accès à internet (voir
<a
href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html"
>
les propriétés réseau du JDK pour plus d'informations
</a>
), vous pouvez spécifier le nom d'un serveur proxy HTTP pour permettre à
Jenkins d'installer des plugins pour vous. Notez que Jenkins utilise HTTPS
pour communiquer avec le serveur de mise à jour pour télécharger les plugins.
<p>
Si ce champ est vide Jenkins tentera de se
connecter directement au site.
Si ce champ est vide Jenkins tentera de se connecter directement au site.
</p>
<p>
Si vous ne savez pas quelle valeur indiquer, regardez la configuration proxy de votre navigateur web.
</div>
Si vous ne savez pas quelle valeur indiquer, regardez la configuration proxy
de votre navigateur web.
</p>
</div>

View File

@ -1,19 +1,24 @@
<div>
Se il server Jenkins è protetto da un firewall e non dispone di accesso
diretto a Internet, e se la JVM del server non è configurata in modo
appropriato per consentire la connessione a Internet
(<a href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html">
si vedano le proprietà di rete del JDK per ulteriori dettagli</a>), è
possibile specificare in questo campo il nome del server proxy HTTP per
consentire a Jenkins di installare componenti aggiuntivi per proprio conto.
Si noti che Jenkins utilizza HTTPS per comunicare con il Centro aggiornamenti
per scaricare i componenti aggiuntivi.
appropriato per consentire la connessione a Internet (
<a
href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html"
>
si vedano le proprietà di rete del JDK per ulteriori dettagli
</a>
), è possibile specificare in questo campo il nome del server proxy HTTP per
consentire a Jenkins di installare componenti aggiuntivi per proprio conto. Si
noti che Jenkins utilizza HTTPS per comunicare con il Centro aggiornamenti per
scaricare i componenti aggiuntivi.
<p>
Se si lascia questo campo vuoto, Jenkins proverà a collegarsi a Internet
direttamente.
Se si lascia questo campo vuoto, Jenkins proverà a collegarsi a Internet
direttamente.
</p>
<p>
Se non si è sicuri del valore da immettere, verificare la configurazione
proxy del browser.
Se non si è sicuri del valore da immettere, verificare la configurazione
proxy del browser.
</p>
</div>

View File

@ -1,14 +1,25 @@
<div>
Jenkinsサーバーがファイアーウォールの内側にあってインターネットに直接アクセスできない上に、
サーバーのJVMがインターネットと接続できるように適切(<a href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html">詳細はネットワークのプロパティを参照</a>)に設定されていない場合、
サーバーのJVMがインターネットと接続できるように適切(
<a
href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html"
>
詳細はネットワークのプロパティを参照
</a>
)に設定されていない場合、
この項目にプロキシーの名前を設定するとプラグインをインストールできます。
<p>
Jenkinsは、アップデートセンターとHTTPSで接続してプラグインをダウンロードすることに注意してください。
Jenkinsは、アップデートセンターとHTTPSで接続してプラグインをダウンロードすることに注意してください。
</p>
<p>
ここに設定した値は、システムプロパティ<code>http.proxyHost</code>に設定されます。空白にするとシステムプロパティを未設定にし、
Jenkinsは直接接続します。
ここに設定した値は、システムプロパティ
<code>http.proxyHost</code>
に設定されます。空白にするとシステムプロパティを未設定にし、
Jenkinsは直接接続します。
</p>
<p>
何を設定していいか分からない場合は、ブラウザのプロキシーの設定を確認してください。
何を設定していいか分からない場合は、ブラウザのプロキシーの設定を確認してください。
</p>
</div>

View File

@ -1,16 +1,26 @@
<div>
Indien Uw Jenkins server zich achter een firewall bevindt en geen directe toegang tot het internet heeft,
dan kunt U hier een HTTP-proxyservernaam opgeven via dewelke Jenkins dan voor U plugins kan installeren.
Merk op dat uw JVM hiertoe ook correct geconfigureerd dient te zijn (<a href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html">
Zie "JDK networking properties" voor meer details</a>).
Jenkins zal het opwaarderingscentrum via HTTPS contacteren voor het verkrijgen van de benodigde opwaarderingspakketten.
Indien Uw Jenkins server zich achter een firewall bevindt en geen directe
toegang tot het internet heeft, dan kunt U hier een HTTP-proxyservernaam
opgeven via dewelke Jenkins dan voor U plugins kan installeren. Merk op dat uw
JVM hiertoe ook correct geconfigureerd dient te zijn (
<a
href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html"
>
Zie "JDK networking properties" voor meer details
</a>
). Jenkins zal het opwaarderingscentrum via HTTPS contacteren voor het
verkrijgen van de benodigde opwaarderingspakketten.
<p>
De waarde die U hier opgeeft zal als systeemparameter <code>http.proxyHost</code> gezet worden. Indien U dit
veld leeg laat, zal de systeemparameter niet gezet worden, waardoor Jenkins de server rechtstreeks zal proberen
te contacteren.
De waarde die U hier opgeeft zal als systeemparameter
<code>http.proxyHost</code>
gezet worden. Indien U dit veld leeg laat, zal de systeemparameter niet
gezet worden, waardoor Jenkins de server rechtstreeks zal proberen te
contacteren.
</p>
<p>
Indien U niet zeker ben welke waarde U hier dient in te vullen, kunt U best de proxy configuratie van uw
browser bekijken.
Indien U niet zeker ben welke waarde U hier dient in te vullen, kunt U best
de proxy configuratie van uw browser bekijken.
</p>
</div>

View File

@ -1,13 +1,22 @@
<div>
Jeśli Jenkins znajduje się za zaporą sieciową i nie ma bezpośredniego dostępu do Internetu,
a JVM nie jest skonfigurowana odpowiednio
(<a href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html">sprawdź ustawienia sieciowe</a>),
możesz udostępnić Internet ustawiając serwer proxy, aby Jenkins samodzielnie pobrał i zainstalował wtyczki.
Pamiętaj, że Jenkins używa połączenia https, aby pobrać wtyczki z centrum aktualizacji.
Jeśli Jenkins znajduje się za zaporą sieciową i nie ma bezpośredniego dostępu
do Internetu, a JVM nie jest skonfigurowana odpowiednio (
<a
href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html"
>
sprawdź ustawienia sieciowe
</a>
), możesz udostępnić Internet ustawiając serwer proxy, aby Jenkins
samodzielnie pobrał i zainstalował wtyczki. Pamiętaj, że Jenkins używa
połączenia https, aby pobrać wtyczki z centrum aktualizacji.
<p>
Pozostaw to pole puste, aby Jenkins korzystał z bezpośredniego połączenia z Internetem.
Pozostaw to pole puste, aby Jenkins korzystał z bezpośredniego połączenia z
Internetem.
</p>
<p>
Jeśli nie jesteś pewny ustawień, sprawdź ustawienia serwerów proxy w przeglądarce.
</div>
Jeśli nie jesteś pewny ustawień, sprawdź ustawienia serwerów proxy w
przeglądarce.
</p>
</div>

View File

@ -1,14 +1,24 @@
<div>
Se seu servidor Jenkins estiver atr&#225;s de um firewall e n&#227;o tem acesso direto a internet,
e se a JVM do seu servidor n&#227;o estiver configurada apropriadamente
(<a href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html">Veja as propriedades de redes do JDK para mais detalhes</a>)
para habilitar a conex&#227;o de internet, voc&#234; pode especificar o nome do servidor de proxy HTTP neste campos para permitir ao Jenkins
instalar plugins para voc&#234;. Note que o Jenkins usa HTTPS para se comunicar com o centro de atualiza&#231;&#227;o para baixar os plugins.
Se seu servidor Jenkins estiver atr&#225;s de um firewall e n&#227;o tem
acesso direto a internet, e se a JVM do seu servidor n&#227;o estiver
configurada apropriadamente (
<a
href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html"
>
Veja as propriedades de redes do JDK para mais detalhes
</a>
) para habilitar a conex&#227;o de internet, voc&#234; pode especificar o nome
do servidor de proxy HTTP neste campos para permitir ao Jenkins instalar
plugins para voc&#234;. Note que o Jenkins usa HTTPS para se comunicar com o
centro de atualiza&#231;&#227;o para baixar os plugins.
<p>
Deixar este campo vazio
faz com que o Jenkins tente conectar &#224; internet diretamente.
Deixar este campo vazio faz com que o Jenkins tente conectar &#224; internet
diretamente.
</p>
<p>
Se voc&#234; n&#227;o est&#225; certo sobre o valor, cheque a configura&#231;&#227;o de proxy de seu browser.
Se voc&#234; n&#227;o est&#225; certo sobre o valor, cheque a
configura&#231;&#227;o de proxy de seu browser.
</p>
</div>

View File

@ -1,13 +1,19 @@
<div>
如果您的 Jenkins 在防火牆後面、不能直接連到 Internet而且伺服器 JVM 也沒有特別設定
(<a href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html">參考 JDK 的 《Networking Properties》了解詳情</a>)。
可以在這裡指定 HTTP 代理伺服器名稱,讓 Jenkins 能幫您安裝外掛程式。
如果您的 Jenkins 在防火牆後面、不能直接連到 Internet而且伺服器 JVM
也沒有特別設定 (
<a
href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html"
>
參考 JDK 的 《Networking Properties》了解詳情
</a>
)。 可以在這裡指定 HTTP 代理伺服器名稱,讓 Jenkins 能幫您安裝外掛程式。
請注意Jenkins 使用 HTTPS 協定由更新中心下載外掛程式。
<p>
您在這裡送出的值會被設為 <code>http.proxyHost</code> 系統屬性。
不填任何值代表不要設定這項屬性Jenkins 會試著直接連線到主機。
您在這裡送出的值會被設為
<code>http.proxyHost</code>
系統屬性。 不填任何值代表不要設定這項屬性Jenkins 會試著直接連線到主機。
</p>
<p>
如果您不確定該怎麼填,可以參考瀏覽器的代理伺服器設定。
</div>
<p>如果您不確定該怎麼填,可以參考瀏覽器的代理伺服器設定。</p>
</div>

View File

@ -1,4 +1,5 @@
<div>
Specify host name patterns that shouldn't go through the proxy, one host per line.
"*" is the wild card host name (such as "*.jenkins.io" or "www*.jenkins-ci.org")
</div>
Specify host name patterns that shouldn't go through the proxy, one host per
line. "*" is the wild card host name (such as "*.jenkins.io" or
"www*.jenkins-ci.org")
</div>

View File

@ -1,4 +1,5 @@
<div>
Шаблони за имената на сървърите, към които да се свързва директно, а не през сървъра-посредник.
По един шаблон на ред. „*“ напасва всички имена (напр. „*.cloudbees.com“ или „w*.jenkins.io“)
Шаблони за имената на сървърите, към които да се свързва директно, а не през
сървъра-посредник. По един шаблон на ред. „*“ напасва всички имена (напр.
„*.cloudbees.com“ или „w*.jenkins.io“)
</div>

View File

@ -1,6 +1,6 @@
<div>
Geben Sie Servernamen-Muster an, die nicht über den Proxy abgerufen werden sollen.
Geben Sie einen Eintrag pro Zeile ein.
Verwenden Sie gegebenenfalls das Jokerzeichen "*", um Gruppen von Servern anzugeben
(wie in "*.jenkins.io" or "www*.jenkins-ci.org")
Geben Sie Servernamen-Muster an, die nicht über den Proxy abgerufen werden
sollen. Geben Sie einen Eintrag pro Zeile ein. Verwenden Sie gegebenenfalls
das Jokerzeichen "*", um Gruppen von Servern anzugeben (wie in "*.jenkins.io"
or "www*.jenkins-ci.org")
</div>

View File

@ -1,5 +1,5 @@
<div>
Specificare i pattern dei nomi host per cui le richieste non devono essere
gestite dal proxy; immettere un host per riga. "*" è il carattere jolly per
i nomi host (ad es. "*.jenkins.io" o "www*.jenkins-ci.org").
Specificare i pattern dei nomi host per cui le richieste non devono essere
gestite dal proxy; immettere un host per riga. "*" è il carattere jolly per i
nomi host (ad es. "*.jenkins.io" o "www*.jenkins-ci.org").
</div>

View File

@ -1,4 +1,4 @@
<div>
プロキシーを使用しないホスト名のパターンを1行に1つずつ設定します。
ホスト名には"*"(ワイルドカード)を、"*.jenkins.io"や"www*.jenkins-ci.org"のように使用することができます。
</div>
プロキシーを使用しないホスト名のパターンを1行に1つずつ設定します。
ホスト名には"*"(ワイルドカード)を、"*.jenkins.io"や"www*.jenkins-ci.org"のように使用することができます。
</div>

View File

@ -1,4 +1,4 @@
<div>
指定不要透過代理伺服器連線的主機名稱樣式,一行一個。
可以使用 "*" 代表任何字串 (例如 "*.jenkins.io" 或是 "www*.jenkins-ci.org")。
</div>
指定不要透過代理伺服器連線的主機名稱樣式,一行一個。 可以使用 "*" 代表任何字串
(例如 "*.jenkins.io" 或是 "www*.jenkins-ci.org")。
</div>

View File

@ -1,3 +1,4 @@
<div>
This field works in conjunction with the proxy server field to specify the HTTP proxy port.
</div>
This field works in conjunction with the proxy server field to specify the
HTTP proxy port.
</div>

View File

@ -1,3 +1 @@
<div>
Това поле определя порта за сървъра-посредник по HTTP.
</div>
<div>Това поле определя порта за сървъра-посредник по HTTP.</div>

View File

@ -1,4 +1,4 @@
<div>
Dieses Feld arbeitet im Zusammenhang mit dem Feld "Proxy-Server" und gibt die
Portnummer des HTTP-Proxies an.
</div>
Portnummer des HTTP-Proxies an.
</div>

View File

@ -1,3 +1,3 @@
<div>
Ce champ est le numéro de port du proxy HTTP, utilisé avec le nom du serveur.
</div>
</div>

View File

@ -1,4 +1,4 @@
<div>
Questo campo lavora in abbinamento con il campo Server proxy per consentire
di specificare la porta HTTP del proxy.
Questo campo lavora in abbinamento con il campo Server proxy per consentire di
specificare la porta HTTP del proxy.
</div>

View File

@ -1,3 +1,4 @@
<div>
この項目にはプロキシーのポート番号を指定すると、"HTTP proxy server"とあわせて機能します。
</div>
この項目にはプロキシーのポート番号を指定すると、"HTTP proxy
server"とあわせて機能します。
</div>

View File

@ -1,3 +1,4 @@
<div>
Met dit veld configureert U de HTTP proxy poort die de proxy server dient te gebruiken.
</div>
Met dit veld configureert U de HTTP proxy poort die de proxy server dient te
gebruiken.
</div>

View File

@ -1,3 +1,4 @@
<div>
Este campo trabalha em conjunto com o campo do servidor de proxy para especificar a porta do proxy HTTP.
Este campo trabalha em conjunto com o campo do servidor de proxy para
especificar a porta do proxy HTTP.
</div>

View File

@ -1,3 +1,4 @@
<div>
Bu alan, HTTP proxy portunu tan&#305;mlamak i&#231;in, proxy sunucusu alan&#305; ile ortakla&#351;a &#231;al&#305;&#351;&#305;r.
</div>
Bu alan, HTTP proxy portunu tan&#305;mlamak i&#231;in, proxy sunucusu
alan&#305; ile ortakla&#351;a &#231;al&#305;&#351;&#305;r.
</div>

View File

@ -1,3 +1 @@
<div>
指定 HTTP 代理伺服器連接埠,要跟「伺服器」欄位一起使用。
</div>
<div>指定 HTTP 代理伺服器連接埠,要跟「伺服器」欄位一起使用。</div>

View File

@ -1,10 +1,12 @@
<div>
This field works in conjunction with the proxy server field
to specify the username used to authenticate with the proxy.
This field works in conjunction with the proxy server field to specify the
username used to authenticate with the proxy.
<p>
If this proxy requires Microsofts <a href="https://en.wikipedia.org/wiki/NTLM">NTLM</a>
authentication scheme then the domain name can be encoded
within the username by prefixing the domain name followed
by a back-slash '\' before the username, e.g "ACME\John Doo".
If this proxy requires Microsofts
<a href="https://en.wikipedia.org/wiki/NTLM">NTLM</a>
authentication scheme then the domain name can be encoded within the
username by prefixing the domain name followed by a back-slash '\' before
the username, e.g "ACME\John Doo".
</p>
</div>

View File

@ -2,8 +2,9 @@
Това поле определя името за идентификация пред сървъра-посредник .
<p>
Ако този сървър-посредник ползва схемата да идентификация на
Microsoft: <a href="https://en.wikipedia.org/wiki/NTLM">NTLM</a>,
то името за домейна се добавя пред потребителското име с
разделител „\“. Например: „ACME\John Doo“".
Ако този сървър-посредник ползва схемата да идентификация на Microsoft:
<a href="https://en.wikipedia.org/wiki/NTLM">NTLM</a>
, то името за домейна се добавя пред потребителското име с разделител „\“.
Например: „ACME\John Doo“".
</p>
</div>

View File

@ -1,11 +1,14 @@
<div>
Dieses Feld arbeitet im Zusammenspiel mit dem Proxy-Server-Feld
und gibt den Benutzernamen an, der zur Authentifizierung
gegenüber dem Proxy verwendet wird.
Dieses Feld arbeitet im Zusammenspiel mit dem Proxy-Server-Feld und gibt den
Benutzernamen an, der zur Authentifizierung gegenüber dem Proxy verwendet
wird.
<p>
Wenn der Proxy Microsofts <a href="https://en.wikipedia.org/wiki/NTLM">
NTLM-Authentifizierungsschema</a> verwendet, kann die Domäne durch
Voranstellen des Domänennamens, gefolgt von einem umgekehrten Schrägstrich,
angegeben werden, also z.B. "ACME\John Doo".
Wenn der Proxy Microsofts
<a href="https://en.wikipedia.org/wiki/NTLM">
NTLM-Authentifizierungsschema
</a>
verwendet, kann die Domäne durch Voranstellen des Domänennamens, gefolgt von
einem umgekehrten Schrägstrich, angegeben werden, also z.B. "ACME\John Doo".
</p>
</div>

View File

@ -3,9 +3,10 @@
il nome utente utilizzato per l'autenticazione al proxy.
<p>
Se questo proxy richiede lo schema di autenticazione Microsoft
<a href="https://en.wikipedia.org/wiki/NTLM">NTLM</a>, è possibile codificare
il nome di dominio all'interno del nome utente aggiungendo all'inizio, prima
del nome utente, il nome del dominio seguito da una barra contraria ("\"),
ad es. "ACME\Mario Rossi".
Se questo proxy richiede lo schema di autenticazione Microsoft
<a href="https://en.wikipedia.org/wiki/NTLM">NTLM</a>
, è possibile codificare il nome di dominio all'interno del nome utente
aggiungendo all'inizio, prima del nome utente, il nome del dominio seguito
da una barra contraria ("\"), ad es. "ACME\Mario Rossi".
</p>
</div>

View File

@ -2,6 +2,9 @@
この項目はサーバー名と併せて使用し、PROXY認証で使用するユーザー名を指定します。
<p>
プロキシーがMicrosoftの<a href="https://en.wikipedia.org/wiki/NTLM">NTLM</a>認証が必要なら、
ドメイン名は、"ACME\John Doo"のように、ユーザー名の前にバックスラッシュ''\''で区切って入力します。
プロキシーがMicrosoftの
<a href="https://en.wikipedia.org/wiki/NTLM">NTLM</a>
認証が必要なら、 ドメイン名は、"ACME\John
Doo"のように、ユーザー名の前にバックスラッシュ''\''で区切って入力します。
</p>
</div>

View File

@ -2,6 +2,9 @@
指定代理伺服器驗證用的使用者名稱,要跟「伺服器」欄位一起使用。
<p>
如果代理伺服器要用到 Microsoft 的 <a href="https://en.wikipedia.org/wiki/NTLM">NTLM</a>
驗證配置,可以把網域名稱跟反斜線 '\' 加到使用者名稱前,例如 "ACME\John Doo"。
如果代理伺服器要用到 Microsoft 的
<a href="https://en.wikipedia.org/wiki/NTLM">NTLM</a>
驗證配置,可以把網域名稱跟反斜線 '\' 加到使用者名稱前,例如 "ACME\John
Doo"。
</p>
</div>

View File

@ -1,8 +1,14 @@
(function() {
Behaviour.specify("INPUT.reveal-expandable-detail", 'ExpandableDetailsNote', 0, function(e) {
var detail = e.nextSibling;
makeButton(e,function() {
detail.style.display = (detail.style.display=="block")?"none":"block";
});
});
}());
(function () {
Behaviour.specify(
"INPUT.reveal-expandable-detail",
"ExpandableDetailsNote",
0,
function (e) {
var detail = e.nextSibling;
makeButton(e, function () {
detail.style.display =
detail.style.display == "block" ? "none" : "block";
});
}
);
})();

View File

@ -1,6 +1,6 @@
DIV.expandable-detail {
display: none;
background-color: #d3d7cf;
margin: 0.5em;
padding: 0.5em;
}
display: none;
background-color: #d3d7cf;
margin: 0.5em;
padding: 0.5em;
}

View File

@ -1,3 +1,3 @@
.reverse-proxy__hidden {
display: none;
.reverse-proxy__hidden {
display: none;
}

View File

@ -1,49 +1,53 @@
(function () {
var redirectForm = document.getElementById('redirect-error');
if (!redirectForm) {
console.warn('This script expects to have an element with id="redirect-error" to be working.');
return;
}
var redirectForm = document.getElementById("redirect-error");
if (!redirectForm) {
console.warn(
'This script expects to have an element with id="redirect-error" to be working.'
);
return;
}
var urlToTest = redirectForm.getAttribute('data-url');
var callUrlToTest = function(testWithContext, callback) {
var options = {
onComplete: callback
};
if (testWithContext === true) {
options.parameters = { testWithContext: true };
}
new Ajax.Request(urlToTest, options);
};
var displayWarningMessage = function(withContextMessage) {
redirectForm.classList.remove('reverse-proxy__hidden');
if (withContextMessage === true) {
redirectForm.querySelectorAll('.js-context-message').forEach(function (node) {
return node.classList.remove('reverse-proxy__hidden');
});
}
};
var urlToTest = redirectForm.getAttribute("data-url");
var callUrlToTest = function (testWithContext, callback) {
var options = {
onComplete: callback,
};
if (testWithContext === true) {
options.parameters = { testWithContext: true };
}
new Ajax.Request(urlToTest, options);
};
callUrlToTest( false, function(response) {
if (response.status !== 200) {
var context = redirectForm.getAttribute('data-context');
// to cover the case where the JenkinsRootUrl is configured without the context
if (context) {
callUrlToTest(true, function(response2) {
if (response2.status === 200) {
// this means the root URL was configured but without the contextPath,
// so different message to display
displayWarningMessage(true);
} else {
displayWarningMessage(false);
}
});
} else {
// redirect failed. Unfortunately, according to the spec http://www.w3.org/TR/XMLHttpRequest/
// in case of error, we can either get 0 or a failure code
displayWarningMessage(false);
}
}
});
var displayWarningMessage = function (withContextMessage) {
redirectForm.classList.remove("reverse-proxy__hidden");
if (withContextMessage === true) {
redirectForm
.querySelectorAll(".js-context-message")
.forEach(function (node) {
return node.classList.remove("reverse-proxy__hidden");
});
}
};
callUrlToTest(false, function (response) {
if (response.status !== 200) {
var context = redirectForm.getAttribute("data-context");
// to cover the case where the JenkinsRootUrl is configured without the context
if (context) {
callUrlToTest(true, function (response2) {
if (response2.status === 200) {
// this means the root URL was configured but without the contextPath,
// so different message to display
displayWarningMessage(true);
} else {
displayWarningMessage(false);
}
});
} else {
// redirect failed. Unfortunately, according to the spec http://www.w3.org/TR/XMLHttpRequest/
// in case of error, we can either get 0 or a failure code
displayWarningMessage(false);
}
}
});
})();

View File

@ -1,7 +1,8 @@
<div>
If set, the optional display name is shown for the project throughout the Jenkins
web GUI. As it is for display purposes only, the display name is not required to be
unique amongst projects. <br />
If the display name is not set, the Jenkins web GUI will default to showing the
project name.
</div>
If set, the optional display name is shown for the project throughout the
Jenkins web GUI. As it is for display purposes only, the display name is not
required to be unique amongst projects.
<br />
If the display name is not set, the Jenkins web GUI will default to showing
the project name.
</div>

View File

@ -1,7 +1,8 @@
<div>
Ако е зададено, незадължителното показвано име се използва за проекта в
интерфейса на Jenkins. Понеже се ползва чисто визуално, няма изискване за
уникалност на това име на проект.<br />
Ако не е зададено показвано име, интерфейсът на Jenkins показва обичайното
име на проект.
</div>
Ако е зададено, незадължителното показвано име се използва за проекта в
интерфейса на Jenkins. Понеже се ползва чисто визуално, няма изискване за
уникалност на това име на проект.
<br />
Ако не е зададено показвано име, интерфейсът на Jenkins показва обичайното име
на проект.
</div>

View File

@ -1,8 +1,9 @@
<div>
Wenn Sie hier einen Anzeigenamen eingeben, verwendet Jenkins diesen durchgängig
statt des Projektnamens, wo immer im Web-Interface das Projekt angezeigt wird.
Da dieser Wert nur der Anzeige dient, dürfen mehrere Projekte denselben Anzeigenamen
haben.<br />
Wenn Sie diesen Wert leer lassen, verwendet Jenkins an allen relevanten Stellen den
Projektnamen.
</div>
Wenn Sie hier einen Anzeigenamen eingeben, verwendet Jenkins diesen
durchgängig statt des Projektnamens, wo immer im Web-Interface das Projekt
angezeigt wird. Da dieser Wert nur der Anzeige dient, dürfen mehrere Projekte
denselben Anzeigenamen haben.
<br />
Wenn Sie diesen Wert leer lassen, verwendet Jenkins an allen relevanten
Stellen den Projektnamen.
</div>

View File

@ -1,8 +1,9 @@
<div>
Se impostato, il nome visualizzato (facoltativo) sarà visualizzato in
riferimento al progetto in tutta l'interfaccia utente Web di Jenkins. Dal
momento che tale nome è utilizzato solo per scopi di visualizzazione, non è
richiesto che sia univoco per ogni progetto.<br />
Se il nome visualizzato non è impostato, l'interfaccia utente Web di Jenkins
visualizzerà il nome del progetto per impostazione predefinita.
Se impostato, il nome visualizzato (facoltativo) sarà visualizzato in
riferimento al progetto in tutta l'interfaccia utente Web di Jenkins. Dal
momento che tale nome è utilizzato solo per scopi di visualizzazione, non è
richiesto che sia univoco per ogni progetto.
<br />
Se il nome visualizzato non è impostato, l'interfaccia utente Web di Jenkins
visualizzerà il nome del progetto per impostazione predefinita.
</div>

View File

@ -1,5 +1,5 @@
<div>
Jenkinsの画面に表示用のプロジェクト名を表示します。表示のためだけのものですので、他のプロジェクトと重複しても問題ありません。
<br />
表示用プロジェクト名を設定しない場合、Jenkinsの画面にはプロジェクト名を表示します。
</div>
Jenkinsの画面に表示用のプロジェクト名を表示します。表示のためだけのものですので、他のプロジェクトと重複しても問題ありません。
<br />
表示用プロジェクト名を設定しない場合、Jenkinsの画面にはプロジェクト名を表示します。
</div>

View File

@ -1,5 +1,6 @@
<div>
設定後Jenkins 網頁就會用這個名稱來顯示。因為只是單純顯示用,所以不同專案的顯示名稱可以相同。
<br />
如果沒有設定Jenkins 網頁上預設會用專案的名稱。
</div>
設定後Jenkins
網頁就會用這個名稱來顯示。因為只是單純顯示用,所以不同專案的顯示名稱可以相同。
<br />
如果沒有設定Jenkins 網頁上預設會用專案的名稱。
</div>

View File

@ -1,15 +1,22 @@
<div>
By default, builds of this project may be executed on any agents that
are available and configured to accept new builds.
By default, builds of this project may be executed on any agents that are
available and configured to accept new builds.
<p>
When this option is checked, you have the possibility to ensure that builds of
this project only occur on a certain agent, or set of agents.
When this option is checked, you have the possibility to ensure that builds
of this project only occur on a certain agent, or set of agents.
</p>
<p>
For example, if your project should only be built on a certain operating
system, or on machines that have a certain set of tools installed, or even one
specific machine, you can restrict this project to only execute on agents that
that meet those criteria.
For example, if your project should only be built on a certain operating
system, or on machines that have a certain set of tools installed, or even
one specific machine, you can restrict this project to only execute on
agents that that meet those criteria.
</p>
<p>
The help text for the <i>Label Expression</i> field, shown when this option is
checked, provides more detailed information on how to specify agent criteria.
The help text for the
<i>Label Expression</i>
field, shown when this option is checked, provides more detailed information
on how to specify agent criteria.
</p>
</div>

View File

@ -2,14 +2,21 @@
Стандартно, всеки наличен и настроен да приема нови изграждания агент може да
изгради проекта.
<p>
Ако изберете тази опция може да осигурите изграждането на проекта да се
извършва от определена група от компютри (в частност — само един компютър).
Ако изберете тази опция може да осигурите изграждането на проекта да се
извършва от определена група от компютри (в частност — само един компютър).
</p>
<p>
Например, ако проектът трябва да се изгражда само на определени
операционни системи или на компютри, на които са инсталирани специфични
инструменти, можете да укажете на проекта да се изгражда само на машини,
коитоy отговарят на интересуващите ви критерии.
Например, ако проектът трябва да се изгражда само на определени операционни
системи или на компютри, на които са инсталирани специфични инструменти,
можете да укажете на проекта да се изгражда само на машини, коитоy отговарят
на интересуващите ви критерии.
</p>
<p>
Помощният текст за полето <i>Израз с етикети</i>, което се показва, когато
сте избрали тази опция, съдържа повече информация, как се указват критерии.
Помощният текст за полето
<i>Израз с етикети</i>
, което се показва, когато сте избрали тази опция, съдържа повече
информация, как се указват критерии.
</p>
</div>

View File

@ -1,14 +1,12 @@
<div>
Parfois, un projet ne peut être construit que sur une machine-agent
particulière. Dans ce cas, cette option force Jenkins à toujours
construire ce projet sur cette machine.
Si cette stratégie n'est pas nécessaire, décochez la case afin que
Jenkins puisse programmer des builds sur les machines les plus
particulière. Dans ce cas, cette option force Jenkins à toujours construire ce
projet sur cette machine. Si cette stratégie n'est pas nécessaire, décochez la
case afin que Jenkins puisse programmer des builds sur les machines les plus
disponibles, ce qui donnera un meilleur temps de réponse.
<p>
Cette option est également utile quand vous souhaitez vous assurer qu'un
projet peut réellement être construit sur un noeud (machine)
particulier.
</div>
Cette option est également utile quand vous souhaitez vous assurer qu'un
projet peut réellement être construit sur un noeud (machine) particulier.
</p>
</div>

View File

@ -3,17 +3,23 @@
essere eseguite su qualunque agente disponibile e configurato per accettare
nuove compilazioni.
<p>
Se quest'opzione è selezionata, si ha la possibilità di assicurarsi che le
compilazioni di questo progetto vengano eseguite solo su un determinato
agente o insieme di agenti.
Se quest'opzione è selezionata, si ha la possibilità di assicurarsi che le
compilazioni di questo progetto vengano eseguite solo su un determinato
agente o insieme di agenti.
</p>
<p>
Ad esempio, se il progetto dovrebbe essere compilato solo su un determinato
sistema operativo, oppure su macchine che hanno installato un determinato
insieme di strumenti, o addirittura su una specifica macchina, è possibile
aggiungere una restrizione al progetto in modo che la compilazione venga
eseguita solo sugli agenti che rispettano questi criteri.
Ad esempio, se il progetto dovrebbe essere compilato solo su un determinato
sistema operativo, oppure su macchine che hanno installato un determinato
insieme di strumenti, o addirittura su una specifica macchina, è possibile
aggiungere una restrizione al progetto in modo che la compilazione venga
eseguita solo sugli agenti che rispettano questi criteri.
</p>
<p>
Il testo della guida per il campo <i>Espressione etichetta</i>, visualizzato
quando quest'opzione è selezionata, fornisce informazioni più dettagliate
su come specificare i criteri di selezione dell'agente.
Il testo della guida per il campo
<i>Espressione etichetta</i>
, visualizzato quando quest'opzione è selezionata, fornisce informazioni più
dettagliate su come specificare i criteri di selezione dell'agente.
</p>
</div>

View File

@ -1,16 +1,19 @@
<div>
特定のエージェント(もしくはマスタ)でしか、ビルドできないプロジェクトがあります。
そのような場合にこのオプションを設定すると、
そのプロジェクトをある特定のコンピューターでのみビルドするようにできます。
 
<p> 
そのプロジェクトをビルドできるコンピューターのグループがあるなら、プロジェクトを結びつけるノードとしてラベルを設定することができます。
そうすることで、Jenkinsはそのラベルを持ついずれかのコンピューター上でビルドを実行します。
そのプロジェクトをある特定のコンピューターでのみビルドするようにできます。  
<p>
 
そのプロジェクトをビルドできるコンピューターのグループがあるなら、プロジェクトを結びつけるノードとしてラベルを設定することができます。
そうすることで、Jenkinsはそのラベルを持ついずれかのコンピューター上でビルドを実行します。
</p>
<p>
そうでなければ、利用可能なノードでビルドをスケジューリングできるように、チェックをはずしてください。
所要時間が短くなります。
そうでなければ、利用可能なノードでビルドをスケジューリングできるように、チェックをはずしてください。
所要時間が短くなります。
</p>
<p>
このオプションは、あるプロジェクトを特定のノードでビルドできるか確認したい場合にも便利です。
このオプションは、あるプロジェクトを特定のノードでビルドできるか確認したい場合にも便利です。
</p>
</div>

View File

@ -1,12 +1,11 @@
<div>
Иногда проект может быть собран только на конкретном узле (или мастере).
Если это так, эта опция указывает Jenkins всегда выполнять сборку только на указанном узле
или узлах.
Иначе, снимите флажок и Jenkins будет выполнять сборки на свободных узлах, что
снизит временные затраты на сборку.
Иногда проект может быть собран только на конкретном узле (или мастере). Если
это так, эта опция указывает Jenkins всегда выполнять сборку только на
указанном узле или узлах. Иначе, снимите флажок и Jenkins будет выполнять
сборки на свободных узлах, что снизит временные затраты на сборку.
<p>
Эта опция также полезна если вы желаете удостовериться в том, что проект
может собираться на каком-то конкретном узле.
</div>
Эта опция также полезна если вы желаете удостовериться в том, что проект
может собираться на каком-то конкретном узле.
</p>
</div>

View File

@ -1,39 +1,65 @@
<div>
When this option is checked, multiple builds of this project may be executed
in parallel.
<p>
By default, only a single build of a project is executed at a time &mdash; any
other requests to start building that project will remain in the build queue
until the first build is complete.<br>
This is a safe default, as projects can often require exclusive access to
certain resources, such as a database, or a piece of hardware.
By default, only a single build of a project is executed at a time &mdash;
any other requests to start building that project will remain in the build
queue until the first build is complete.
<br />
This is a safe default, as projects can often require exclusive access to
certain resources, such as a database, or a piece of hardware.
</p>
<p>
But with this option enabled, if there are enough build executors available
that can handle this project, then multiple builds of this project will take
place in parallel. If there are not enough available executors at any point,
any further build requests will be held in the build queue as normal.
But with this option enabled, if there are enough build executors available
that can handle this project, then multiple builds of this project will take
place in parallel. If there are not enough available executors at any point,
any further build requests will be held in the build queue as normal.
</p>
<p>
Enabling concurrent builds is useful for projects that execute lengthy test
suites, as it allows each build to contain a smaller number of changes, while
the total turnaround time decreases as subsequent builds do not need to wait
for previous test runs to complete.<br>
This feature is also useful for parameterized projects, whose individual build
executions &mdash; depending on the parameters used &mdash; can be
completely independent from one another.
Enabling concurrent builds is useful for projects that execute lengthy test
suites, as it allows each build to contain a smaller number of changes,
while the total turnaround time decreases as subsequent builds do not need
to wait for previous test runs to complete.
<br />
This feature is also useful for parameterized projects, whose individual
build executions &mdash; depending on the parameters used &mdash; can be
completely independent from one another.
</p>
<p>
Each concurrently executed build occurs in its own build workspace, isolated
from any other builds. By default, Jenkins appends "<code>@&lt;num&gt;</code>" to
the workspace directory name, e.g. "<code>@2</code>".<br>
The separator "<code>@</code>" can be changed by setting the
<code>hudson.slaves.WorkspaceList</code> Java system property when starting
Jenkins. For example, "<code>hudson.slaves.WorkspaceList=-</code>" would change
the separator to a hyphen.<br>
For more information on setting system properties, see the <a
href="https://www.jenkins.io/redirect/setting-system-properties"
rel="noopener noreferrer" target="_blank">wiki page</a>.
Each concurrently executed build occurs in its own build workspace, isolated
from any other builds. By default, Jenkins appends "
<code>@&lt;num&gt;</code>
" to the workspace directory name, e.g. "
<code>@2</code>
".
<br />
The separator "
<code>@</code>
" can be changed by setting the
<code>hudson.slaves.WorkspaceList</code>
Java system property when starting Jenkins. For example, "
<code>hudson.slaves.WorkspaceList=-</code>
" would change the separator to a hyphen.
<br />
For more information on setting system properties, see the
<a
href="https://www.jenkins.io/redirect/setting-system-properties"
rel="noopener noreferrer"
target="_blank"
>
wiki page
</a>
.
</p>
<p>
However, if you enable the <i>Use custom workspace</i> option, all builds will
be executed in the same workspace. Therefore caution is required, as multiple
builds may end up altering the same directory at the same time.
However, if you enable the
<i>Use custom workspace</i>
option, all builds will be executed in the same workspace. Therefore caution
is required, as multiple builds may end up altering the same directory at
the same time.
</p>
</div>

View File

@ -1,43 +1,68 @@
<div>
Когато тази опция е избрана, паралелно може да се изпълняват множество
изграждания на този проект.
<p>
Стандартно, в един момент се изпълнява максимум едно изграждане на отделен
проект — последващите заявки за изграждането на проекта се поставят в опашка
да изчакат завършването на текущото изграждане, преди да се продължи със
следващото.<br>
Това е по-безопасният вариант, защото често проектите изискват достъпът до
определени ресурси да е поединично — например база от данни или някакво
хардуерно устройство.
Стандартно, в един момент се изпълнява максимум едно изграждане на отделен
проект — последващите заявки за изграждането на проекта се поставят в опашка
да изчакат завършването на текущото изграждане, преди да се продължи със
следващото.
<br />
Това е по-безопасният вариант, защото често проектите изискват достъпът до
определени ресурси да е поединично — например база от данни или някакво
хардуерно устройство.
</p>
<p>
Ако изберете тази опция и в даден момент има достатъчно изграждащи машини, то
паралелно ще могат да се изпълняват множество изграждания на проекта. Ако в
определен момент няма достатъчно свободни машини, то заявките за изграждане ще
изчакват в опашка както обикновено.
Ако изберете тази опция и в даден момент има достатъчно изграждащи машини,
то паралелно ще могат да се изпълняват множество изграждания на проекта. Ако
в определен момент няма достатъчно свободни машини, то заявките за
изграждане ще изчакват в опашка както обикновено.
</p>
<p>
Включването на паралелните изграждане е полезно при проекти с дълги тестове,
защото това позволява отделното изграждане да съдържа сравнително малък на
брой промени, без това да увеличава прекомерно много времето за работа, защото
всяко ново изграждане няма нужда да изчаква завършването на всички предишни
изграждания.<br>
Тази възможност е полезна и за параметризираните проекти, чиито изграждания
може да са напълно независими едно от друго — при определени стойности на
параметрите.
Включването на паралелните изграждане е полезно при проекти с дълги тестове,
защото това позволява отделното изграждане да съдържа сравнително малък на
брой промени, без това да увеличава прекомерно много времето за работа,
защото всяко ново изграждане няма нужда да изчаква завършването на всички
предишни изграждания.
<br />
Тази възможност е полезна и за параметризираните проекти, чиито изграждания
може да са напълно независими едно от друго — при определени стойности на
параметрите.
</p>
<p>
Всяко паралелно изпълнявано изграждане се извършва в отделно от всички други
работни пространства. Стандартно добавя „<code>@&lt;номер&gt;</code>“ към името на
работната директория, например „<code>@2</code>“.<br>
Разделителят „<code>@</code>“ може да се смени с промяната на системното свойство
на Java — „<code>hudson.slaves.WorkspaceList</code>“ при стартирането на Jenkins.
Например чрез „<code>hudson.slaves.WorkspaceList=-</code>“ ще смените разделителя
с тирето от ASCII.<br>
За повече информация погледнете <a
href="https://www.jenkins.io/redirect/setting-system-properties"
rel="noopener noreferrer" target="_blank">документацията в уикито</a>.
Всяко паралелно изпълнявано изграждане се извършва в отделно от всички други
работни пространства. Стандартно добавя „
<code>@&lt;номер&gt;</code>
“ към името на работната директория, например „
<code>@2</code>
“.
<br />
Разделителят „
<code>@</code>
“ може да се смени с промяната на системното свойство на Java — „
<code>hudson.slaves.WorkspaceList</code>
“ при стартирането на Jenkins. Например чрез „
<code>hudson.slaves.WorkspaceList=-</code>
“ ще смените разделителя с тирето от ASCII.
<br />
За повече информация погледнете
<a
href="https://www.jenkins.io/redirect/setting-system-properties"
rel="noopener noreferrer"
target="_blank"
>
документацията в уикито
</a>
.
</p>
<p>
Ако настройката <i>Специално работно пространство</i> е включена, всички
изграждания на проекта ще се правят в едно и също работно пространство,
поради което трябва да внимавате, защото множество изпълнения може едновременно
да променят работната директория.
Ако настройката
<i>Специално работно пространство</i>
е включена, всички изграждания на проекта ще се правят в едно и също работно
пространство, поради което трябва да внимавате, защото множество изпълнения
може едновременно да променят работната директория.
</p>
</div>

View File

@ -1,25 +1,37 @@
<div>
Wenn angewählt, wird Jenkins Builds parallel planen und ausführen (vorausgesetzt, es existieren
ausreichend viele Build-Prozessoren und Build-Aufträge). Dies ist nützlich bei Build- und Testjobs, die
lange dauern: Wird öfter gebaut, so beinhaltet ein Build weniger Änderungen. Gleichzeitig verringert sich
die Gesamtzeit, da ein Build nun nicht mehr so lange auf das Ende des vorausgehenden Builds warten muss.
Parallele Ausführung ist oft auch in Kombination mit parametrisierten Builds nützlich, die
unabhängig voneinander gebaut werden können.
Wenn angewählt, wird Jenkins Builds parallel planen und ausführen
(vorausgesetzt, es existieren ausreichend viele Build-Prozessoren und
Build-Aufträge). Dies ist nützlich bei Build- und Testjobs, die lange dauern:
Wird öfter gebaut, so beinhaltet ein Build weniger Änderungen. Gleichzeitig
verringert sich die Gesamtzeit, da ein Build nun nicht mehr so lange auf das
Ende des vorausgehenden Builds warten muss. Parallele Ausführung ist oft auch
in Kombination mit parametrisierten Builds nützlich, die unabhängig
voneinander gebaut werden können.
<p>
Für bestimmte Arten von Jobs kann eine parallele Ausführung mehrerer Builds problematisch sein,
z.B. wenn der Build exklusiven Zugriff auf eine bestimmte Ressource, etwa eine Datenbank, voraussetzt
oder für Jobs, bei denen Jenkins als cron-Ersatz eingesetzt wird.
<p>
Für bestimmte Arten von Jobs kann eine parallele Ausführung mehrerer Builds
problematisch sein, z.B. wenn der Build exklusiven Zugriff auf eine
bestimmte Ressource, etwa eine Datenbank, voraussetzt oder für Jobs, bei
denen Jenkins als cron-Ersatz eingesetzt wird.
</p>
<p>
Wenn Sie einen angepassten Arbeitsbereich verwenden und diese Option aktivieren, werden alle Ihre
Builds gleichzeitig im selben Arbeitsbereich ausgeführt. Ohne weitere Vorkehrungen von Ihrer Seite
werden Ihre Builds dann voraussichtlich miteinander kollidieren. Ist die Option deaktiviert, benutzt Jenkins
für Builds jeweils einen eigenen, isolierten Arbeitsbereich - sogar wenn sie auf demselben Knoten ausgeführt werden.
<p>
Wenn Sie einen angepassten Arbeitsbereich verwenden und diese Option
aktivieren, werden alle Ihre Builds gleichzeitig im selben Arbeitsbereich
ausgeführt. Ohne weitere Vorkehrungen von Ihrer Seite werden Ihre Builds
dann voraussichtlich miteinander kollidieren. Ist die Option deaktiviert,
benutzt Jenkins für Builds jeweils einen eigenen, isolierten Arbeitsbereich
- sogar wenn sie auf demselben Knoten ausgeführt werden.
</p>
<p>
Falls Jenkins unterschiedliche Arbeitsbereiche einsetzt, hängt Jenkins "@<I>num</I>" an den
Verzeichnisnamen des Arbeitsbereiches, z.B. "@2". Der Separator "@" kann konfiguriert werden indem das System Property
"hudson.slaves.WorkspaceList" auf die gewünschte Separatorzeichenkette auf der Kommandozeile von Jenkins gesetzt wird.
Z.B. durch "-Dhudson.slaves.WorkspaceList=-" wird der Bindestrich als Separator verwendet.
<p>
Falls Jenkins unterschiedliche Arbeitsbereiche einsetzt, hängt Jenkins "@
<i>num</i>
" an den Verzeichnisnamen des Arbeitsbereiches, z.B. "@2". Der Separator "@"
kann konfiguriert werden indem das System Property
"hudson.slaves.WorkspaceList" auf die gewünschte Separatorzeichenkette auf
der Kommandozeile von Jenkins gesetzt wird. Z.B. durch
"-Dhudson.slaves.WorkspaceList=-" wird der Bindestrich als Separator
verwendet.
</p>
</div>

View File

@ -1,41 +1,77 @@
<div>
Lorsque cette option est coch&eacute;e, plusieurs constructions de ce projet peuvent
&ecirc;tre ex&eacute;cut&eacute;es en parall&egrave;le.
Lorsque cette option est coch&eacute;e, plusieurs constructions de ce projet
peuvent &ecirc;tre ex&eacute;cut&eacute;es en parall&egrave;le.
<p>
Par d&eacute;faut, une seule construction du projet est ex&eacute;cut&eacute;e &agrave; la fois &mdash; toutes
les autres demandes pour ex&eacute;cuter la construction de ce projet resteront dans la file d'attente
jusqu'&agrave; ce que la premi&egrave;re construction soit termin&eacute;e.<br>
Ce choix par d&eacute;faut est une pr&eacute;caution, car les projets exigent souvent un acc&egrave;s exclusif &agrave;
certaines ressources, telles qu'une base de donn&eacute;es ou un hardware sp&eacute;cifique.
Par d&eacute;faut, une seule construction du projet est
ex&eacute;cut&eacute;e &agrave; la fois &mdash; toutes les autres demandes
pour ex&eacute;cuter la construction de ce projet resteront dans la file
d'attente jusqu'&agrave; ce que la premi&egrave;re construction soit
termin&eacute;e.
<br />
Ce choix par d&eacute;faut est une pr&eacute;caution, car les projets
exigent souvent un acc&egrave;s exclusif &agrave; certaines ressources,
telles qu'une base de donn&eacute;es ou un hardware sp&eacute;cifique.
</p>
<p>
Si cette option est activ&eacute;e, et s'il y a suffisamment d'ex&eacute;cuteurs disponibles
sachant g&eacute;rer ce projet, alors les multiples constructions de ce projet tourneront
en parall&egrave;le. S'il n'y a pas assez d'ex&eacute;cuteurs disponibles &agrave; un moment donn&eacute;,
toute autre demande de construction sera maintenue dans la file d'attente de construction
comme normalement.
Si cette option est activ&eacute;e, et s'il y a suffisamment
d'ex&eacute;cuteurs disponibles sachant g&eacute;rer ce projet, alors les
multiples constructions de ce projet tourneront en parall&egrave;le. S'il
n'y a pas assez d'ex&eacute;cuteurs disponibles &agrave; un moment
donn&eacute;, toute autre demande de construction sera maintenue dans la
file d'attente de construction comme normalement.
</p>
<p>
Activer les constructions simultan&eacute;es est utile pour les projets qui ex&eacute;cutent de longs tests
car elle permet &agrave; chaque construction de contenir un plus petit nombre de modifications, tandis que
le temps d'ex&eacute;cution total diminue car les constructions suivantes n'ont pas besoin d'attendre
que les tests pr&eacute;c&eacute;dents soient termin&eacute;s.<br>
Cette fonctionnalit&eacute; est &eacute;galement utile pour les projets param&eacute;tr&eacute;s,
dont les diff&eacute;rentes constructions &mdash; en fonction des param&egrave;tres utilis&eacute;s &mdash;
peuvent &ecirc;tre totalement ind&eacute;pendantes les unes des autres.
Activer les constructions simultan&eacute;es est utile pour les projets qui
ex&eacute;cutent de longs tests car elle permet &agrave; chaque construction
de contenir un plus petit nombre de modifications, tandis que le temps
d'ex&eacute;cution total diminue car les constructions suivantes n'ont pas
besoin d'attendre que les tests pr&eacute;c&eacute;dents soient
termin&eacute;s.
<br />
Cette fonctionnalit&eacute; est &eacute;galement utile pour les projets
param&eacute;tr&eacute;s, dont les diff&eacute;rentes constructions &mdash;
en fonction des param&egrave;tres utilis&eacute;s &mdash; peuvent &ecirc;tre
totalement ind&eacute;pendantes les unes des autres.
</p>
<p>
Chaque construction ex&eacute;cut&eacute;e en parall&egrave;le se produit dans son propre espace de travail,
isol&eacute; des autres constructions.
Par d&eacute;faut, Jenkins ajoute "<code>@&lt;num&gt;</code>" au nom du r&eacute;pertoire de l'espace
de travail, par exemple "<code>@2</code>".<br>
Le s&eacute;parateur "<code>@</code>" est modifiable en renseignant la valeur de la propri&eacute;t&eacute; syst&egrave;me Java
<code>hudson.slaves.WorkspaceList</code> au d&eacute;marrage de jenkins.
Par exemple, "<code>hudson.slaves.WorkspaceList=-</code>" modifierait
le s&eacute;parateur &agrave; un trait d'union.<br>
Pour plus d'informations sur le param&eacute;trage des propri&eacute;t&eacute;s syst&egrave;me, voir la <a
href="https://www.jenkins.io/redirect/setting-system-properties"
rel="noopener noreferrer" target="_blank">page du wiki</a>.
Chaque construction ex&eacute;cut&eacute;e en parall&egrave;le se produit
dans son propre espace de travail, isol&eacute; des autres constructions.
Par d&eacute;faut, Jenkins ajoute "
<code>@&lt;num&gt;</code>
" au nom du r&eacute;pertoire de l'espace de travail, par exemple "
<code>@2</code>
".
<br />
Le s&eacute;parateur "
<code>@</code>
" est modifiable en renseignant la valeur de la propri&eacute;t&eacute;
syst&egrave;me Java
<code>hudson.slaves.WorkspaceList</code>
au d&eacute;marrage de jenkins. Par exemple, "
<code>hudson.slaves.WorkspaceList=-</code>
" modifierait le s&eacute;parateur &agrave; un trait d'union.
<br />
Pour plus d'informations sur le param&eacute;trage des
propri&eacute;t&eacute;s syst&egrave;me, voir la
<a
href="https://www.jenkins.io/redirect/setting-system-properties"
rel="noopener noreferrer"
target="_blank"
>
page du wiki
</a>
.
</p>
<p>
En revanche, si vous activez l'option <i>Utiliser un espace de travail personnalis&eacute;</i>, toutes les constructions
seront ex&eacute;cut&eacute;es dans le m&ecirc;me espace de travail. La prudence est donc de mise, car plusieurs
constructions peuvent finir par modifier le m&ecirc;me r&eacute;pertoire en m&ecirc;me temps.
En revanche, si vous activez l'option
<i>Utiliser un espace de travail personnalis&eacute;</i>
, toutes les constructions seront ex&eacute;cut&eacute;es dans le m&ecirc;me
espace de travail. La prudence est donc de mise, car plusieurs constructions
peuvent finir par modifier le m&ecirc;me r&eacute;pertoire en m&ecirc;me
temps.
</p>
</div>

View File

@ -1,47 +1,73 @@
<div>
Quando quest'opzione è selezionata è possibile eseguire compilazioni
multiple di questo progetto in parallelo.
Quando quest'opzione è selezionata è possibile eseguire compilazioni multiple
di questo progetto in parallelo.
<p>
Per impostazione predefinita viene eseguita solo una singola compilazione di
un progetto per volta &mdash; qualunque altra richiesta di avvio della
compilazione di tale progetto rimarrà in coda finché la prima compilazione
non sarà stata completata.<br>
Questa è un'impostazione predefinita sicura, in quanto i progetti spesso
possono chiedere accesso esclusivo a determinate risorse, come un database
o una periferica hardware.
Per impostazione predefinita viene eseguita solo una singola compilazione di
un progetto per volta &mdash; qualunque altra richiesta di avvio della
compilazione di tale progetto rimarrà in coda finché la prima compilazione
non sarà stata completata.
<br />
Questa è un'impostazione predefinita sicura, in quanto i progetti spesso
possono chiedere accesso esclusivo a determinate risorse, come un database o
una periferica hardware.
</p>
<p>
Con quest'opzione abilitata, tuttavia, se sono disponibili abbastanza
esecutori compilazione in grado di gestire questo progetto, allora verranno
eseguite più compilazioni di questo progetto in parallelo. Se in un dato
momento non è disponibile un numero sufficiente di esecutori, tutte le
ulteriori richieste di compilazione verranno mantenute nella coda di
compilazione come al solito.
Con quest'opzione abilitata, tuttavia, se sono disponibili abbastanza
esecutori compilazione in grado di gestire questo progetto, allora verranno
eseguite più compilazioni di questo progetto in parallelo. Se in un dato
momento non è disponibile un numero sufficiente di esecutori, tutte le
ulteriori richieste di compilazione verranno mantenute nella coda di
compilazione come al solito.
</p>
<p>
Abilitare le compilazioni concorrenti è utile per i progetti che eseguono
suite di test lunghe, in quanto consente a ogni compilazione di contenere
un numero minore di modifiche, riducendo al contempo il tempo totale di
esecuzione in quanto le compilazioni seguenti non avranno la necessità di
attendere che le precedenti esecuzioni dei test giungano a termine.<br>
Questa funzionalità è utile anche per i progetti parametrizzati, le cui
esecuzioni di compilazione individuali &mdash; a seconda dei parametri
utilizzati &mdash; possono essere completamente indipendenti l'una
dall'altra.
Abilitare le compilazioni concorrenti è utile per i progetti che eseguono
suite di test lunghe, in quanto consente a ogni compilazione di contenere un
numero minore di modifiche, riducendo al contempo il tempo totale di
esecuzione in quanto le compilazioni seguenti non avranno la necessità di
attendere che le precedenti esecuzioni dei test giungano a termine.
<br />
Questa funzionalità è utile anche per i progetti parametrizzati, le cui
esecuzioni di compilazione individuali &mdash; a seconda dei parametri
utilizzati &mdash; possono essere completamente indipendenti l'una
dall'altra.
</p>
<p>
Ogni compilazione eseguita concorrentemente viene eseguita nel proprio
spazio di lavoro, isolata da tutte le altre compilazioni. Per impostazione
predefinita, Jenkins aggiunge "<code>@&lt;numero&gt;</code>" alla fine del nome
della directory dello spazio di lavoro, ad es. "<code>@2</code>".<br>
Il separatore "<code>@</code>" può essere modificato impostando la proprietà di
sistema Java <code>hudson.slaves.WorkspaceList</code> all'avvio di Jenkins. Ad
esempio, "<code>hudson.slaves.WorkspaceList=-</code>" modificherebbe il
separatore in un trattino.<br>
Per ulteriori informazioni sull'impostazione delle proprietà di sistema, si
veda la <a href="https://www.jenkins.io/redirect/setting-system-properties"
rel="noopener noreferrer" target="_blank">pagina wiki</a>.
Ogni compilazione eseguita concorrentemente viene eseguita nel proprio
spazio di lavoro, isolata da tutte le altre compilazioni. Per impostazione
predefinita, Jenkins aggiunge "
<code>@&lt;numero&gt;</code>
" alla fine del nome della directory dello spazio di lavoro, ad es. "
<code>@2</code>
".
<br />
Il separatore "
<code>@</code>
" può essere modificato impostando la proprietà di sistema Java
<code>hudson.slaves.WorkspaceList</code>
all'avvio di Jenkins. Ad esempio, "
<code>hudson.slaves.WorkspaceList=-</code>
" modificherebbe il separatore in un trattino.
<br />
Per ulteriori informazioni sull'impostazione delle proprietà di sistema, si
veda la
<a
href="https://www.jenkins.io/redirect/setting-system-properties"
rel="noopener noreferrer"
target="_blank"
>
pagina wiki
</a>
.
</p>
<p>
Ciò nonostante, se si abilita l'opzione <i>Utilizza spazio di lavoro
personalizzato</i>, tutte le compilazioni saranno eseguite nello stesso
spazio di lavoro. Pertanto è richiesta attenzione in quanto più compilazioni
potrebbero modificare la stessa directory nello stesso momento.
Ciò nonostante, se si abilita l'opzione
<i>Utilizza spazio di lavoro personalizzato</i>
, tutte le compilazioni saranno eseguite nello stesso spazio di lavoro.
Pertanto è richiesta attenzione in quanto più compilazioni potrebbero
modificare la stessa directory nello stesso momento.
</p>
</div>

View File

@ -1,14 +1,16 @@
<div>
このオプションをチェックすると、複数のビルドを同時にスケジュールし実行します(十分なエグゼキューターとビルドの要求がある場合)。
各ビルドの変更は少ないにもかかわらずビルドやテストに時間がかかる場合に有効で、ビルドの要求が先行するビルドの完了を待つ時間をより短くすることで、
全体のターンアラウンドタイムを減らします。
個々のエグゼキューターが互いに独立しているパラメータ化されたビルドでも有効です。
このオプションをチェックすると、複数のビルドを同時にスケジュールし実行します(十分なエグゼキューターとビルドの要求がある場合)。
各ビルドの変更は少ないにもかかわらずビルドやテストに時間がかかる場合に有効で、ビルドの要求が先行するビルドの完了を待つ時間をより短くすることで、
全体のターンアラウンドタイムを減らします。
個々のエグゼキューターが互いに独立しているパラメータ化されたビルドでも有効です。
<p>
<p>
上記以外のジョブで、複数ビルドを同時に実行すると問題が生じるかもしれません。例えば、データベースのようにある特定のリソースを占有するものや、
Jenkinsをクーロンの代わりに使う場合などは考えられます。
</p>
<p>
<p>
カスタムワークスペースを使用しているとすべてのビルドは同じワークスペースを使用するので、注意しないとビルドが衝突します。
同一ードでビルドを実行するときには、Jenkinsは異なるワークスペースを使用して各ビルドが独立したものになるようにします。
</p>
</div>

View File

@ -1,20 +1,29 @@
<div>
啟用這項功能後Jenkins 可以同時安排執行多個建置 (假設執行程式的數量跟要建置的作業都夠多)。
這個功能很適合每次建置及測試都要很久的作業,就算只有小小的變更,都不用等前一次做完就能開始,
可以減少等候及執行的時間。
在參數化建置中也非常有用,因為每個建置都是互相獨立的。
啟用這項功能後Jenkins 可以同時安排執行多個建置
(假設執行程式的數量跟要建置的作業都夠多)。
這個功能很適合每次建置及測試都要很久的作業,就算只有小小的變更,都不用等前一次做完就能開始,
可以減少等候及執行的時間。
在參數化建置中也非常有用,因為每個建置都是互相獨立的。
<p>
用在其他作業上,可能會有些狀況。
這類作業包括會獨佔資料庫等資源,或是把 Jenkins 當做 cron 替代方案的作業。
<p>
用在其他作業上,可能會有些狀況。 這類作業包括會獨佔資料庫等資源,或是把
Jenkins 當做 cron 替代方案的作業。
</p>
<p>
<p>
如果您同時使用自訂工作區,所有的建置作業都會在同一個工作區中執行,除非您自己做一些特別處理,
不然建置間可能會有衝突。
在沒有自訂工作區的情況下就算在某個節點中同時建置Jenkins 也會使用不同的工作區避免衝突。
在沒有自訂工作區的情況下就算在某個節點中同時建置Jenkins
也會使用不同的工作區避免衝突。
</p>
<p>
當 Jenkins 建立各別獨立的工作區時,會將 "@<i>編號</i>" 加到工作區目錄名稱後面,例如 "@2"。
可以在 Jenkins 指令列中指定 <code>hudson.slaves.WorkspaceList</code> 系統屬性設定分隔符號
(預設是 "@")。例如 <code>"-Dhudson.slaves.WorkspaceList=-"</code> 就是指定以破折號當成分隔符號。
<p>
當 Jenkins 建立各別獨立的工作區時,會將 "@
<i>編號</i>
" 加到工作區目錄名稱後面,例如 "@2"。 可以在 Jenkins 指令列中指定
<code>hudson.slaves.WorkspaceList</code>
系統屬性設定分隔符號 (預設是 "@")。例如
<code>"-Dhudson.slaves.WorkspaceList=-"</code>
就是指定以破折號當成分隔符號。
</p>
</div>

View File

@ -1,28 +1,50 @@
<div>
Defines a logical expression which determines which agents may execute builds
of this project. This expression, when tested against the name and labels of
each available agent, will be either <i>true</i> or <i>false</i>. If the
expression evaluates to <i>true</i>, then that agent will be allowed to
execute builds of this project.
of this project. This expression, when tested against the name and labels of
each available agent, will be either
<i>true</i>
or
<i>false</i>
. If the expression evaluates to
<i>true</i>
, then that agent will be allowed to execute builds of this project.
<p>
If this project should always be built on a specific agent, or on the built-in
node, then you can just enter the agent's name, or <code>built-in</code>,
respectively.
If this project should always be built on a specific agent, or on the
built-in node, then you can just enter the agent's name, or
<code>built-in</code>
, respectively.
</p>
<p>
However, you should generally avoid using the <i>Name</i> of an agent here,
preferring to target the <i>Labels</i> of an agent. As documented on the
configuration page for each agent, and the <i>Configure System</i> page for
the master, labels can be used to represent which operating system the agent
is running on, its CPU architecture, or any number of other characteristics.
<br>
Using labels removes the need to re-configure the label expression entered
here each time that you add, remove, or rename agents.
However, you should generally avoid using the
<i>Name</i>
of an agent here, preferring to target the
<i>Labels</i>
of an agent. As documented on the configuration page for each agent, and the
<i>Configure System</i>
page for the master, labels can be used to represent which operating system
the agent is running on, its CPU architecture, or any number of other
characteristics.
<br />
Using labels removes the need to re-configure the label expression entered
here each time that you add, remove, or rename agents.
</p>
<p>
A label expression can be as simple as entering a single <b>label</b> or
<b>agent name</b>, for example <code>android-builder</code>, or
<code>linux-machine-42</code>.<br>
You can also make use of various <i>operators</i> to create more complex
expressions.
A label expression can be as simple as entering a single
<b>label</b>
or
<b>agent name</b>
, for example
<code>android-builder</code>
, or
<code>linux-machine-42</code>
.
<br />
You can also make use of various
<i>operators</i>
to create more complex expressions.
</p>
<h3>Supported operators</h3>
The following operators are supported, in descending order of precedence:
@ -34,52 +56,86 @@
<dt><code>!expression</code></dt>
<dd>
NOT — negation; the result of <code>expression</code> must <b>not</b> be true
NOT — negation; the result of
<code>expression</code>
must
<b>not</b>
be true
</dd>
<dt><code>a &amp;&amp; b</code></dt>
<dd>
AND — <b>both</b> of the expressions <code>a</code> and <code>b</code> must be
true
AND —
<b>both</b>
of the expressions
<code>a</code>
and
<code>b</code>
must be true
</dd>
<dt><code>a || b</code></dt>
<dd>
OR — <b>either</b> of the expressions <code>a</code> or <code>b</code> may be
true
OR —
<b>either</b>
of the expressions
<code>a</code>
or
<code>b</code>
may be true
</dd>
<dt><code>a -> b</code></dt>
<dd>
"implies" operator — equivalent to <code>!a || b</code>.<br>
For example, <code>windows -> x64</code> could be thought of as "if a Windows
agent is used, then that agent <i>must</i> be 64-bit", while still
allowing this project to be executed on any agents that <i>do not</i> have
the <code>windows</code> label, regardless of whether they have also have an
<code>x64</code> label
"implies" operator — equivalent to
<code>!a || b</code>
.
<br />
For example,
<code>windows -> x64</code>
could be thought of as "if a Windows agent is used, then that agent
<i>must</i>
be 64-bit", while still allowing this project to be executed on any agents
that
<i>do not</i>
have the
<code>windows</code>
label, regardless of whether they have also have an
<code>x64</code>
label
</dd>
<dt><code>a &lt;-> b</code></dt>
<dd>
"if and only if" operator — equivalent to <code>a &amp;&amp; b ||
!a &amp;&amp; !b</code><br>
For example, <code>windows &lt;-> dc2</code> could be thought of as "if a
Windows agent is used, then that agent <i>must</i> be in datacenter 2, but
if a non-Windows agent is used, then it <i>must not</i> be in datacenter
2"
"if and only if" operator — equivalent to
<code>a &amp;&amp; b || !a &amp;&amp; !b</code>
<br />
For example,
<code>windows &lt;-> dc2</code>
could be thought of as "if a Windows agent is used, then that agent
<i>must</i>
be in datacenter 2, but if a non-Windows agent is used, then it
<i>must not</i>
be in datacenter 2"
</dd>
</dl>
<h3>Notes</h3>
<ul>
<li>
All operators are left-associative, i.e. <code>a -> b -> c</code> is
equivalent to <code>(a -> b) -> c</code>.
All operators are left-associative, i.e.
<code>a -> b -> c</code>
is equivalent to
<code>(a -> b) -> c</code>
.
</li>
<li>
Labels or agent names can be surrounded with quotation marks if they
contain characters that would conflict with the operator syntax.<br>
For example, <code>"osx (10.11)" || "Windows Server"</code>.
contain characters that would conflict with the operator syntax.
<br />
For example,
<code>"osx (10.11)" || "Windows Server"</code>
.
</li>
<li>
Expressions can be written without whitespace, but including it is
@ -91,38 +147,46 @@
not supported.
</li>
<li>
An empty expression will always evaluate to <i>true</i>, matching all
agents.
An empty expression will always evaluate to
<i>true</i>
, matching all agents.
</li>
</ul>
<h3>Examples</h3>
<dl>
<dt><code>built-in</code></dt>
<dd>Builds of this project may be executed only on the built-in node<dd>
<dd>Builds of this project may be executed only on the built-in node</dd>
<dd></dd>
<dt><code>linux-machine-42</code></dt>
<dd>
Builds of this project may be executed only on the agent with the name
<code>linux-machine-42</code> (or on any machine that happens to have a label
called <code>linux-machine-42</code>)
<code>linux-machine-42</code>
(or on any machine that happens to have a label called
<code>linux-machine-42</code>
)
</dd>
<dt><code>windows &amp;&amp; jdk9</code></dt>
<dd>
Builds of this project may be executed only on any Windows agent that has
version 9 of the Java Development Kit installed (assuming that agents
with JDK 9 installed have been given a <code>jdk9</code> label)
version 9 of the Java Development Kit installed (assuming that agents with
JDK 9 installed have been given a
<code>jdk9</code>
label)
</dd>
<dt><code>postgres &amp;&amp; !vm &amp;&amp; (linux || freebsd)</code></dt>
<dd>
Builds of this project may be executed only any on Linux or FreeBSD agent,
so long as they are <i>not</i> a virtual machine, and they have PostgreSQL
installed (assuming that each agent has the appropriate labels — in
particular, each agent running in a virtual machine must have the
<code>vm</code> label in order for this example to work as expected)
so long as they are
<i>not</i>
a virtual machine, and they have PostgreSQL installed (assuming that each
agent has the appropriate labels — in particular, each agent running in a
virtual machine must have the
<code>vm</code>
label in order for this example to work as expected)
</dd>
</dl>
</div>

View File

@ -1,84 +1,140 @@
<div>
Логически израз, който определя кои агенти могат да изграждат този проект.
Изразът ще се изчисли с всеки етикет и име на всеки наличен агент и резултатът
ще е или <i>истина</i>, или <i>лъжа</i>. Само когато изразът се изчисли като
<i>истина</i>, агентът ще може да изгражда този проект.
ще е или
<i>истина</i>
, или
<i>лъжа</i>
. Само когато изразът се изчисли като
<i>истина</i>
, агентът ще може да изгражда този проект.
<p>
Ако проектът трябва задължително да се изгражда на определен подчинен компютър
или на основния, въведете съответно името на компютъра или
<code>built-in</code>.
Ако проектът трябва задължително да се изгражда на определен подчинен
компютър или на основния, въведете съответно името на компютъра или
<code>built-in</code>
.
</p>
<p>
Като цяло трябва да избягвате употребата на <i>името</i> на подчинения
компютър като вместо това използвате <i>етикетите</i> на компютрите. Както е
документирано на страницата за настройки на всеки агент и страницата за
<i>Системни настройки</i> на основния компютър, етикетите могат да се
използват за определяне на кои операционни системи върви Jenkins, каква е
архитектурата на процесора както и на всякакви други характеристики.
<br>
Като използвате етикети елиминирате нуждата да преправяте етикетните изрази
всеки път като добавяте, махате или преименувате машини.
Като цяло трябва да избягвате употребата на
<i>името</i>
на подчинения компютър като вместо това използвате
<i>етикетите</i>
на компютрите. Както е документирано на страницата за настройки на всеки
агент и страницата за
<i>Системни настройки</i>
на основния компютър, етикетите могат да се използват за определяне на кои
операционни системи върви Jenkins, каква е архитектурата на процесора както
и на всякакви други характеристики.
<br />
Като използвате етикети елиминирате нуждата да преправяте етикетните изрази
всеки път като добавяте, махате или преименувате машини.
</p>
<p>
Етикетният израз може да е съвсем прост, напр. единичен <b>етикет</b> или
<b>име на машина</b> като <code>android-builder</code> или
<code>linux-machine-42</code>.<br>
Може да ползвате и някои<i>оператори</i>, за да създавате по-сложни изрази.
Етикетният израз може да е съвсем прост, напр. единичен
<b>етикет</b>
или
<b>име на машина</b>
като
<code>android-builder</code>
или
<code>linux-machine-42</code>
.
<br />
Може да ползвате и някои
<i>оператори</i>
, за да създавате по-сложни изрази.
</p>
<h3>Поддържани оператори</h3>
Поддържат се следните оператори в намаляващ приоритет:
<dl>
<dt><code>(израз)</code></dt>
<dd>
скоби — за изрично указване на приоритета на операция
</dd>
<dd>скоби — за изрично указване на приоритета на операция</dd>
<dt><code>!израз</code></dt>
<dd>
НЕ — отрицание, стойността на <code>израза</code> трябва да <b>не</b> е
истина.
НЕ — отрицание, стойността на
<code>израза</code>
трябва да
<b>не</b>
е истина.
</dd>
<dt><code>a &amp;&amp; b</code></dt>
<dd>
И — <b>и двата</b> израза <code>a</code> и <code>b</code> трябва да са
истина.
И —
<b>и двата</b>
израза
<code>a</code>
и
<code>b</code>
трябва да са истина.
</dd>
<dt><code>a || b</code></dt>
<dd>
ИЛИ — <b>някой от</b> изразите <code>a</code> или <code>b</code> трябва да е
истина.
ИЛИ —
<b>някой от</b>
изразите
<code>a</code>
или
<code>b</code>
трябва да е истина.
</dd>
<dt><code>a -> b</code></dt>
<dd>
ИМПЛИКАЦИЯ — АКО - ТО, същото като <code>!a || b</code>.<br>
Напр. <code>windows -> x64</code> означава: „ако се ползва компютър под
Windows, той <i>трябва</i> да е 64-битов“, което също позволява проектът
да бъде изграждан на машини <i>без</i> етикета <code>windows</code>, без
значение дали имат или не етикета<code>x64</code>.
ИМПЛИКАЦИЯ — АКО - ТО, същото като
<code>!a || b</code>
.
<br />
Напр.
<code>windows -> x64</code>
означава: „ако се ползва компютър под Windows, той
<i>трябва</i>
да е 64-битов“, което също позволява проектът да бъде изграждан на машини
<i>без</i>
етикета
<code>windows</code>
, без значение дали имат или не етикета
<code>x64</code>
.
</dd>
<dt><code>a &lt;-> b</code></dt>
<dd>
ЕКВИВАЛЕНТНОСТ — АКО И САМО АКО, същото като <code>a &amp;&amp; b ||
!a &amp;&amp; !b</code><br>
Напр. <code>windows &lt;-> dc2</code> означава: „ако се ползва компютър под
Windows, той <i>трябва</i> да е в центъра за данни №2, ако обаче се
ползва компютър, който не е под Windows, той <i>не трябва</i> да е в
центъра за данни №2“.
ЕКВИВАЛЕНТНОСТ — АКО И САМО АКО, същото като
<code>a &amp;&amp; b || !a &amp;&amp; !b</code>
<br />
Напр.
<code>windows &lt;-> dc2</code>
означава: „ако се ползва компютър под Windows, той
<i>трябва</i>
да е в центъра за данни №2, ако обаче се ползва компютър, който не е под
Windows, той
<i>не трябва</i>
да е в центъра за данни №2“.
</dd>
</dl>
<h3>Бележки</h3>
<ul>
<li>
Асоциативността на всички оператори е лява, т. е. <code>a -> b -> c</code>
означава: <code>(a -> b) -> c</code>.
Асоциативността на всички оператори е лява, т. е.
<code>a -> b -> c</code>
означава:
<code>(a -> b) -> c</code>
.
</li>
<li>
Етикетите или имената на компютрите може да са заградени в кавички, ако
съдържат знаци, които противоречат на синтаксиса на операторите.<br>
Напр. <code>"osx (10.11)" || "Windows Server"</code>.
съдържат знаци, които противоречат на синтаксиса на операторите.
<br />
Напр.
<code>"osx (10.11)" || "Windows Server"</code>
.
</li>
<li>
Не е задължително да слагате интервали в изразите, но е добре да го
@ -90,39 +146,50 @@
изрази не се поддържа.
</li>
<li>
Празен израз се изчислява като <i>истина</i> и напасва всички машини.
Празен израз се изчислява като
<i>истина</i>
и напасва всички машини.
</li>
</ul>
<h3>Примери</h3>
<dl>
<dt><code>built-in</code></dt>
<dd>Изгражданията на този проект може да са само на основния компютър на
Jenkins.
<dd>
Изгражданията на този проект може да са само на основния компютър на
Jenkins.
</dd>
<dd></dd>
<dt><code>linux-machine-42</code></dt>
<dd>
Проектът може да бъде изграден само на агент с име
<code>linux-machine-42</code> (или на всяка машина, която има етикет на име
<code>linux-machine-42</code>).
<code>linux-machine-42</code>
(или на всяка машина, която има етикет на име
<code>linux-machine-42</code>
).
</dd>
<dt><code>windows &amp;&amp; jdk9</code></dt>
<dd>
Изгражданията може да се извършат на всеки подчинен компютър, който е с
Windows и има версия 9 на комплекта за разработчици на Java (като
приемаме, че всеки компютър с инсталиран JDK 9 има етикета <code>jdk9</code>).
приемаме, че всеки компютър с инсталиран JDK 9 има етикета
<code>jdk9</code>
).
</dd>
<dt><code>postgres &amp;&amp; !vm &amp;&amp; (linux || freebsd)</code></dt>
<dd>
Изгражданията на този проект може да са на всеки агент под Linux или
FreeBSD, стига да <i>не</i> са във виртуална машина, и да е инсталирана
базата PostgreSQL (като приемаме, че на всяка машина са поставени
съответните етикети, напр. всяка виртуална машина е с етикет <code>vm</code>,
иначе примерът няма да сработи).
FreeBSD, стига да
<i>не</i>
са във виртуална машина, и да е инсталирана базата PostgreSQL (като
приемаме, че на всяка машина са поставени съответните етикети, напр. всяка
виртуална машина е с етикет
<code>vm</code>
, иначе примерът няма да сработи).
</dd>
</dl>
</div>

View File

@ -1,77 +1,128 @@
<div>
Definisce un'espressione logica che determina quali agenti possano eseguire
le compilazioni di questo progetto. Quest'espression, se testata con il
nome e le etichette di ogni agente disponibile, sarà valutata come
<i>true</i> o <i>false</i>. Se l'espressione viene valutata come <i>true</i>,
allora a tale agente sarà consentito eseguire le compilazioni di questo
Definisce un'espressione logica che determina quali agenti possano eseguire le
compilazioni di questo progetto. Quest'espression, se testata con il nome e le
etichette di ogni agente disponibile, sarà valutata come
<i>true</i>
o
<i>false</i>
. Se l'espressione viene valutata come
<i>true</i>
, allora a tale agente sarà consentito eseguire le compilazioni di questo
progetto.
<p>
Se questo progetto dovrebbe essere sempre compilato su un agente specifico,
o sul nodo master Jenkins, allora si dovrebbe immettere semplicemente,
rispettivamente, il nome dell'agente o <code>master</code>.
Se questo progetto dovrebbe essere sempre compilato su un agente specifico,
o sul nodo master Jenkins, allora si dovrebbe immettere semplicemente,
rispettivamente, il nome dell'agente o
<code>master</code>
.
</p>
<p>
Ciò nonostante, si dovrebbe generalmente evitare di usare il <i>nome</i> di
un agente in questo campo, preferendo le <i>etichette</i> di un agente.
Come documentato sulla pagina di configurazione di ogni agente e sulla
pagina <i>Configura sistema</i> del nodo master, è possibile utilizzare
etichette per rappresentare il sistema operativo su cui è in esecuzione
l'agente, la sua architettura CPU o un qualunque numero di altre
caratteristiche.
<br>
L'utilizzo delle etichette fa venir meno la necessità di riconfigurare
l'espressione etichetta immessa in questo campo ogni volta che si aggiungono,
rimuovono o ridenominano agenti.
Ciò nonostante, si dovrebbe generalmente evitare di usare il
<i>nome</i>
di un agente in questo campo, preferendo le
<i>etichette</i>
di un agente. Come documentato sulla pagina di configurazione di ogni agente
e sulla pagina
<i>Configura sistema</i>
del nodo master, è possibile utilizzare etichette per rappresentare il
sistema operativo su cui è in esecuzione l'agente, la sua architettura CPU o
un qualunque numero di altre caratteristiche.
<br />
L'utilizzo delle etichette fa venir meno la necessità di riconfigurare
l'espressione etichetta immessa in questo campo ogni volta che si
aggiungono, rimuovono o ridenominano agenti.
</p>
<p>
Un'espressione etichetta può essere semplicemente una singola
<b>etichetta</b> o <b>nome agente</b>, ad esempio
<code>android-builder</code> o <code>linux-machine-42</code>.<br>
È possibile inoltre utilizzare svariati <i>operatori</i> per creare
espressioni più complesse.
Un'espressione etichetta può essere semplicemente una singola
<b>etichetta</b>
o
<b>nome agente</b>
, ad esempio
<code>android-builder</code>
o
<code>linux-machine-42</code>
.
<br />
È possibile inoltre utilizzare svariati
<i>operatori</i>
per creare espressioni più complesse.
</p>
<h3>Operatori supportati</h3>
Sono supportati i seguenti operatori in ordine di precedenza decrescente:
<dl>
<dt><code>(espressione)</code></dt>
<dd>
parentesi — utilizzate per definire esplicitamente l'associatività
di un'espressione
parentesi — utilizzate per definire esplicitamente l'associatività di
un'espressione
</dd>
<dt><code>!espressione</code></dt>
<dd>
NOT — negazione; il risultato di <code>espressione</code> <b>non</b>
NOT — negazione; il risultato di
<code>espressione</code>
<b>non</b>
dev'essere vero
</dd>
<dt><code>a &amp;&amp; b</code></dt>
<dd>
AND — <b>entrambe</b> le espressioni <code>a</code> e <code>b</code> devono
essere vere
AND —
<b>entrambe</b>
le espressioni
<code>a</code>
e
<code>b</code>
devono essere vere
</dd>
<dt><code>a || b</code></dt>
<dd>
OR — <b>una</b> delle espressioni <code>a</code> o <code>b</code> può essere vera
OR —
<b>una</b>
delle espressioni
<code>a</code>
o
<code>b</code>
può essere vera
</dd>
<dt><code>a -> b</code></dt>
<dd>
operatore "implica" — equivalente ad <code>!a || b</code>.<br>
Ad esempio, <code>windows -> x64</code> può essere interpretato come "se
viene utilizzato un agente Windows, allora tale agente <i>deve</i>
operatore "implica" — equivalente ad
<code>!a || b</code>
.
<br />
Ad esempio,
<code>windows -> x64</code>
può essere interpretato come "se viene utilizzato un agente Windows,
allora tale agente
<i>deve</i>
essere a 64 bit", consentendo comunque l'esecuzione su qualunque agente
che <i>non</i> abbia l'etichetta <code>windows</code>, a prescindere dal
fatto che abbia l'etichetta <code>x64</code>
che
<i>non</i>
abbia l'etichetta
<code>windows</code>
, a prescindere dal fatto che abbia l'etichetta
<code>x64</code>
</dd>
<dt><code>a &lt;-> b</code></dt>
<dd>
operatore "se e solo se" — equivalente a <code>a &amp;&amp; b ||
!a &amp;&amp; !b</code><br>
Ad esempio, <code>windows &lt;-> dc2</code> può essere interpretato come
"se viene utilizzato un agente Windows, allora tale agente <i>deve</i>
operatore "se e solo se" — equivalente a
<code>a &amp;&amp; b || !a &amp;&amp; !b</code>
<br />
Ad esempio,
<code>windows &lt;-> dc2</code>
può essere interpretato come "se viene utilizzato un agente Windows,
allora tale agente
<i>deve</i>
essere nel datacenter 2, ma se viene utilizzato un agente non Windows,
allora <i>non deve</i> essere nel datacenter 2"
allora
<i>non deve</i>
essere nel datacenter 2"
</dd>
</dl>
@ -79,26 +130,33 @@
<ul>
<li>
Tutti gli operatori sono associativi a sinistra, ossia
<code>a -> b -> c</code> è equivalente ad <code>(a -> b) -> c</code>.
<code>a -> b -> c</code>
è equivalente ad
<code>(a -> b) -> c</code>
.
</li>
<li>
Le etichette o i nomi degli agenti possono essere racchiusi da
virgolette doppie se contengono caratteri che andrebbero in conflitto con
la sintassi degli operatori.<br>
Ad esempio, <code>"osx (10.11)" || "Windows Server"</code>.
Le etichette o i nomi degli agenti possono essere racchiusi da virgolette
doppie se contengono caratteri che andrebbero in conflitto con la sintassi
degli operatori.
<br />
Ad esempio,
<code>"osx (10.11)" || "Windows Server"</code>
.
</li>
<li>
Le espressioni possono essere scritte senza spazi bianchi, ma includerli
è raccomandato per questioni di leggibilità; Jenkins ignorerà gli spazi
Le espressioni possono essere scritte senza spazi bianchi, ma includerli è
raccomandato per questioni di leggibilità; Jenkins ignorerà gli spazi
bianchi durante la valutazione delle espressioni.
</li>
<li>
La ricerca di corrispondenze fra etichette o nomi agenti con
espressioni con caratteri jolly o espressioni regolari non è supportata.
La ricerca di corrispondenze fra etichette o nomi agenti con espressioni
con caratteri jolly o espressioni regolari non è supportata.
</li>
<li>
Un'espressione vuota verrà sempre valutata come <i>true</i> e
corrisponderà a tutti gli agenti.
Un'espressione vuota verrà sempre valutata come
<i>true</i>
e corrisponderà a tutti gli agenti.
</li>
</ul>
@ -106,34 +164,40 @@
<dl>
<dt><code>built-in</code></dt>
<dd>
Le compilazioni di questo progetto possono eseguite solo sul nodo
master di Jenkins
Le compilazioni di questo progetto possono eseguite solo sul nodo master
di Jenkins
</dd>
<dt><code>linux-machine-42</code></dt>
<dd>
Le compilazioni di questo progetto possono essere eseguite solo
sull'agente denominato <code>linux-machine-42</code> (o su qualunque sistema
che abbia un'etichetta denominata <code>linux-machine-42</code>)
sull'agente denominato
<code>linux-machine-42</code>
(o su qualunque sistema che abbia un'etichetta denominata
<code>linux-machine-42</code>
)
</dd>
<dt><code>windows &amp;&amp; jdk9</code></dt>
<dd>
Le compilazioni di questo progetto possono essere eseguite solo su un
qualunque agente Windows che abbia installata la versione 9 del Java
Development Kit (assumendo che agli agenti su cui sia installato JDK 9
sia stata assegnata l'etichetta <code>jdk9</code>)
Development Kit (assumendo che agli agenti su cui sia installato JDK 9 sia
stata assegnata l'etichetta
<code>jdk9</code>
)
</dd>
<dt><code>postgres &amp;&amp; !vm &amp;&amp; (linux || freebsd)</code></dt>
<dd>
Le compilazioni di questo progetto possono essere eseguite solo su
qualunque agente Linux o FreeBSD fintantoché <i>non</i> siano una
macchina virtuale e abbiano PostgreSQL installato (assumendo che ogni
agente abbia le etichette appropriate — in particolare, ogni agente in
esecuzione in una macchina virtuale deve avere l'etichetta <code>vm</code>
qualunque agente Linux o FreeBSD fintantoché
<i>non</i>
siano una macchina virtuale e abbiano PostgreSQL installato (assumendo che
ogni agente abbia le etichette appropriate — in particolare, ogni agente
in esecuzione in una macchina virtuale deve avere l'etichetta
<code>vm</code>
affinché quest'esempio funzioni come atteso)
</dd>
</dl>
</div>

View File

@ -1,3 +1 @@
<div>
Specifies the default value of the field.
</div>
<div>Specifies the default value of the field.</div>

View File

@ -1,3 +1 @@
<div>
Указва стандартната стойност на полето.
</div>
<div>Указва стандартната стойност на полето.</div>

View File

@ -1,3 +1 @@
<div>
Gibt den Vorgabewert für dieses Feld an.
</div>
<div>Gibt den Vorgabewert für dieses Feld an.</div>

View File

@ -1,3 +1 @@
<div>
Spécifie la valeur par défaut de ce champ.
</div>
<div>Spécifie la valeur par défaut de ce champ.</div>

View File

@ -1,3 +1 @@
<div>
Specifica il valore predefinito del campo.
</div>
<div>Specifica il valore predefinito del campo.</div>

View File

@ -1,3 +1 @@
<div>
この項目のデフォルト値を設定します。
</div>
<div>この項目のデフォルト値を設定します。</div>

View File

@ -1,3 +1 @@
<div>
Задает значение поля по умолчанию.
</div>
<div>Задает значение поля по умолчанию.</div>

View File

@ -1,3 +1 @@
<div>
指定欄位的預設值。
</div>
<div>指定欄位的預設值。</div>

View File

@ -1,124 +1,126 @@
/* global Timeline */
var targetDiv = document.querySelector('#build-timeline-div');
var tz = targetDiv.getAttribute('data-hour-local-timezone');
var targetDiv = document.querySelector("#build-timeline-div");
var tz = targetDiv.getAttribute("data-hour-local-timezone");
var tl = null;
var interval = 24 * 60 * 60 * 1000;
function getData(eventSource1, current, min, max) {
if (current < min) {
return;
}
if (!eventSource1.loaded[current]) {
eventSource1.loaded[current] = true;
new Ajax.Request("timeline/data/", {
method: "POST",
parameters: { min: current * interval, max: (current + 1) * interval },
onSuccess: function (t) {
if (t.status != 0) {
try {
eventSource1.loadJSON(JSON.parse(t.responseText), '.');
getData(eventSource1, current - 1, min, max);
} catch (e) {
alert(e);
}
}
}
});
}
if (current < min) {
return;
}
if (!eventSource1.loaded[current]) {
eventSource1.loaded[current] = true;
new Ajax.Request("timeline/data/", {
method: "POST",
parameters: { min: current * interval, max: (current + 1) * interval },
onSuccess: function (t) {
if (t.status != 0) {
try {
eventSource1.loadJSON(JSON.parse(t.responseText), ".");
getData(eventSource1, current - 1, min, max);
} catch (e) {
alert(e);
}
}
},
});
}
}
function doLoad() {
var tl_el = document.getElementById("tl");
var eventSource1 = new Timeline.DefaultEventSource();
eventSource1.loaded = {};
eventSource1.ensureVisible = function (band) {
// make sure all data are loaded for the portion visible in the band
// $('status').innerHTML = "min="+band.getMinDate()+" max="+band.getMaxDate();
var min = Math.floor(band.getMinVisibleDate().getTime() / interval);
var max = Math.ceil(band.getMaxVisibleDate().getTime() / interval);
getData(eventSource1, max, min, max);
};
var tl_el = document.getElementById("tl");
var eventSource1 = new Timeline.DefaultEventSource();
eventSource1.loaded = {};
eventSource1.ensureVisible = function (band) {
// make sure all data are loaded for the portion visible in the band
// $('status').innerHTML = "min="+band.getMinDate()+" max="+band.getMaxDate();
var min = Math.floor(band.getMinVisibleDate().getTime() / interval);
var max = Math.ceil(band.getMaxVisibleDate().getTime() / interval);
getData(eventSource1, max, min, max);
};
var theme1 = Timeline.ClassicTheme.create();
//theme1.autoWidth = true; // Set the Timeline's "width" automatically.
// Set autoWidth on the Timeline's first band's theme,
// will affect all bands.
var theme1 = Timeline.ClassicTheme.create();
//theme1.autoWidth = true; // Set the Timeline's "width" automatically.
// Set autoWidth on the Timeline's first band's theme,
// will affect all bands.
var bandInfos = [
// the bar that shows outline
Timeline.createBandInfo({
width: "20%",
intervalUnit: Timeline.DateTime.DAY,
intervalPixels: 200,
eventSource: eventSource1,
timeZone: tz,
theme: theme1,
layout: "overview", // original, overview, detailed
}),
// the main area
Timeline.createBandInfo({
width: "80%",
eventSource: eventSource1,
timeZone: tz,
theme: theme1,
intervalUnit: Timeline.DateTime.HOUR,
intervalPixels: 200,
}),
];
bandInfos[0].highlight = true;
bandInfos[0].syncWith = 1;
var bandInfos = [
// the bar that shows outline
Timeline.createBandInfo({
width: "20%",
intervalUnit: Timeline.DateTime.DAY,
intervalPixels: 200,
eventSource: eventSource1,
timeZone: tz,
theme: theme1,
layout: 'overview' // original, overview, detailed
}),
// the main area
Timeline.createBandInfo({
width: "80%",
eventSource: eventSource1,
timeZone: tz,
theme: theme1,
intervalUnit: Timeline.DateTime.HOUR,
intervalPixels: 200
})
];
bandInfos[0].highlight = true;
bandInfos[0].syncWith = 1;
// create the Timeline
tl = Timeline.create(tl_el, bandInfos, Timeline.HORIZONTAL);
// create the Timeline
tl = Timeline.create(tl_el, bandInfos, Timeline.HORIZONTAL);
tl.getBand(0).addOnScrollListener(function (band) {
eventSource1.ensureVisible(band);
});
tl.getBand(0).addOnScrollListener(function (band) {
eventSource1.ensureVisible(band);
});
tl.layout(); // display the Timeline
tl.layout(); // display the Timeline
// if resized, redo layout
var resizeTimerID = null;
function doResize() {
if (resizeTimerID == null) {
resizeTimerID = window.setTimeout(function () {
resizeTimerID = null;
tl.layout();
}, 500);
}
}
if (window.addEventListener) {
window.addEventListener("resize", doResize, false);
} else if (window.attachEvent) {
window.attachEvent("onresize", doResize);
} else if (window.onResize) {
window.onresize = doResize;
// if resized, redo layout
var resizeTimerID = null;
function doResize() {
if (resizeTimerID == null) {
resizeTimerID = window.setTimeout(function () {
resizeTimerID = null;
tl.layout();
}, 500);
}
}
if (window.addEventListener) {
window.addEventListener("resize", doResize, false);
} else if (window.attachEvent) {
window.attachEvent("onresize", doResize);
} else if (window.onResize) {
window.onresize = doResize;
}
}
if (window.addEventListener) {
window.addEventListener("load", doLoad, false);
window.addEventListener("load", doLoad, false);
} else if (window.attachEvent) {
window.attachEvent("onload", doLoad);
window.attachEvent("onload", doLoad);
} else if (window.onLoad) {
window.onload = doLoad;
window.onload = doLoad;
}
//add resize handle
(function () {
var resize = new YAHOO.util.Resize('resizeContainer', {
handles: 'b',
minHeight: 300 // this should be the same as the height of the container div,
// to fix an issue when it's resized to be smaller than the original height
});
//update timeline after resizing
resize.on('endResize', function () {
tl.layout();
}, null, true);
var resize = new YAHOO.util.Resize("resizeContainer", {
handles: "b",
minHeight: 300, // this should be the same as the height of the container div,
// to fix an issue when it's resized to be smaller than the original height
});
//update timeline after resizing
resize.on(
"endResize",
function () {
tl.layout();
},
null,
true
);
})();

View File

@ -1,3 +1,3 @@
img.build-time-graph {
float: right;
float: right;
}

View File

@ -1,94 +1,124 @@
/**
* Public method to be called by progressiveRendering's callback
*/
window.buildTimeTrend_displayBuilds = function(data) {
var p = document.getElementById('trend');
var isDistributedBuildsEnabled = 'true' === p.getAttribute("data-is-distributed-build-enabled");
var rootURL = document.head.getAttribute('data-rooturl');
window.buildTimeTrend_displayBuilds = function (data) {
var p = document.getElementById("trend");
var isDistributedBuildsEnabled =
"true" === p.getAttribute("data-is-distributed-build-enabled");
var rootURL = document.head.getAttribute("data-rooturl");
for (var x = 0; data.length > x; x++) {
var e = data[x];
var tr = new Element('tr');
tr.insert(new Element('td', {data: e.iconColorOrdinal}).
insert(new Element('a', {class: 'build-status-link', href: e.number + '/console'}).
insert(generateSVGIcon(e.iconName))));
tr.insert(new Element('td', {data: e.number}).
insert(new Element('a', {href: e.number + '/', 'class': 'model-link inside'}).
update(e.displayName.escapeHTML())));
tr.insert(new Element('td', {data: e.duration}).
update(e.durationString.escapeHTML()));
if (isDistributedBuildsEnabled) {
var buildInfo = null;
var buildInfoStr = (e.builtOnStr || '').escapeHTML();
if(e.builtOn) {
buildInfo = new Element('a', {href: rootURL + '/computer/' + e.builtOn, 'class': 'model-link inside'}).update(buildInfoStr);
} else {
buildInfo = buildInfoStr;
}
tr.insert(new Element('td').update(buildInfo));
}
p.insert(tr);
Behaviour.applySubtree(tr);
}
ts_refresh(p);
}
for (var x = 0; data.length > x; x++) {
var e = data[x];
var tr = new Element("tr");
tr.insert(
new Element("td", { data: e.iconColorOrdinal }).insert(
new Element("a", {
class: "build-status-link",
href: e.number + "/console",
}).insert(generateSVGIcon(e.iconName))
)
);
tr.insert(
new Element("td", { data: e.number }).insert(
new Element("a", {
href: e.number + "/",
class: "model-link inside",
}).update(e.displayName.escapeHTML())
)
);
tr.insert(
new Element("td", { data: e.duration }).update(
e.durationString.escapeHTML()
)
);
if (isDistributedBuildsEnabled) {
var buildInfo = null;
var buildInfoStr = (e.builtOnStr || "").escapeHTML();
if (e.builtOn) {
buildInfo = new Element("a", {
href: rootURL + "/computer/" + e.builtOn,
class: "model-link inside",
}).update(buildInfoStr);
} else {
buildInfo = buildInfoStr;
}
tr.insert(new Element("td").update(buildInfo));
}
p.insert(tr);
Behaviour.applySubtree(tr);
}
ts_refresh(p);
};
/**
* Generate SVG Icon
*/
function generateSVGIcon(iconName, iconSizeClass) {
const imagesURL = document.head.getAttribute("data-imagesurl");
const imagesURL = document.head.getAttribute('data-imagesurl');
const isInProgress = iconName.endsWith("anime");
let buildStatus = "never-built";
switch (iconName) {
case "red":
case "red-anime":
buildStatus = "last-failed";
break;
case "yellow":
case "yellow-anime":
buildStatus = "last-unstable";
break;
case "blue":
case "blue-anime":
buildStatus = "last-successful";
break;
case "grey":
case "grey-anime":
case "disabled":
case "disabled-anime":
buildStatus = "last-disabled";
break;
case "aborted":
case "aborted-anime":
buildStatus = "last-aborted";
break;
case "nobuilt":
case "nobuilt-anime":
buildStatus = "never-built";
break;
}
const isInProgress = iconName.endsWith("anime");
let buildStatus = 'never-built';
switch (iconName) {
case 'red':
case 'red-anime':
buildStatus = 'last-failed';
break;
case 'yellow':
case 'yellow-anime':
buildStatus = 'last-unstable';
break;
case 'blue':
case 'blue-anime':
buildStatus = 'last-successful';
break;
case 'grey':
case 'grey-anime':
case 'disabled':
case 'disabled-anime':
buildStatus = 'last-disabled';
break;
case 'aborted':
case 'aborted-anime':
buildStatus = 'last-aborted';
break;
case 'nobuilt':
case 'nobuilt-anime':
buildStatus = 'never-built';
break
}
const svg1 = document.createElementNS("http://www.w3.org/2000/svg", "svg");
svg1.setAttribute("class", "svg-icon");
svg1.setAttribute("viewBox", "0 0 24 24");
const use1 = document.createElementNS("http://www.w3.org/2000/svg", "use");
use1.setAttribute(
"href",
imagesURL +
"/build-status/build-status-sprite.svg#build-status-" +
(isInProgress ? "in-progress" : "static")
);
svg1.appendChild(use1);
const svg1 = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
svg1.setAttribute('class', 'svg-icon');
svg1.setAttribute('viewBox', "0 0 24 24");
const use1 = document.createElementNS('http://www.w3.org/2000/svg', 'use');
use1.setAttribute('href', imagesURL + '/build-status/build-status-sprite.svg#build-status-' + (isInProgress ? 'in-progress' : 'static'))
svg1.appendChild(use1);
const svg2 = document.createElementNS("http://www.w3.org/2000/svg", "svg");
svg2.setAttribute(
"class",
"svg-icon icon-" + iconName + " " + (iconSizeClass || "icon-sm")
);
svg2.setAttribute("viewBox", "0 0 24 24");
const use2 = document.createElementNS("http://www.w3.org/2000/svg", "use");
use2.setAttribute(
"href",
imagesURL + "/build-status/build-status-sprite.svg#" + buildStatus
);
svg2.appendChild(use2);
const svg2 = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
svg2.setAttribute('class', 'svg-icon icon-' + iconName + ' ' + (iconSizeClass || 'icon-sm'));
svg2.setAttribute('viewBox', "0 0 24 24");
const use2 = document.createElementNS('http://www.w3.org/2000/svg', 'use');
use2.setAttribute('href', imagesURL + '/build-status/build-status-sprite.svg#' + buildStatus)
svg2.appendChild(use2);
const span = new Element("span", {
class: "build-status-icon__wrapper icon-" + iconName,
})
.insert(
new Element("span", { class: "build-status-icon__outer" }).insert(svg1)
)
.insert(svg2);
const span = new Element('span', {class: 'build-status-icon__wrapper icon-' + iconName}).
insert(new Element('span', {class: 'build-status-icon__outer'}).
insert(svg1)).
insert(svg2);
return span;
return span;
}

View File

@ -1,8 +1,8 @@
Behaviour.specify("#recurse", 'ListView', 0, function (e) {
var nestedElements = $$('SPAN.nested')
e.onclick = function () {
nestedElements.each(function (el) {
e.checked ? el.show() : el.hide();
});
}
Behaviour.specify("#recurse", "ListView", 0, function (e) {
var nestedElements = $$("SPAN.nested");
e.onclick = function () {
nestedElements.each(function (el) {
e.checked ? el.show() : el.hide();
});
};
});

View File

@ -21,31 +21,39 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
(function(){
document.addEventListener("DOMContentLoaded", function() {
const graphLocation = document.querySelector('.js-load-graph');
if (graphLocation) {
const type = graphLocation.getAttribute("data-graph-type");
const parentSelector = graphLocation.getAttribute("data-graph-parent-selector");
const baseUrl = graphLocation.getAttribute("data-graph-base-url");
const graphAlt = graphLocation.getAttribute("data-graph-alt");
const parent = document.querySelector(parentSelector);
if (parent) {
const availableWidth = parent.offsetWidth;
const padding = 30;
// for some browsers, the perfect width is not enough
const quirkyBrowserAdjustment = 15;
const graphWidth = availableWidth - padding - quirkyBrowserAdjustment;
(function () {
document.addEventListener("DOMContentLoaded", function () {
const graphLocation = document.querySelector(".js-load-graph");
if (graphLocation) {
const type = graphLocation.getAttribute("data-graph-type");
const parentSelector = graphLocation.getAttribute(
"data-graph-parent-selector"
);
const baseUrl = graphLocation.getAttribute("data-graph-base-url");
const graphAlt = graphLocation.getAttribute("data-graph-alt");
// type in {sec10, min, hour}
const graphUrl = baseUrl + "/graph?type=" + type + "&width=" + graphWidth + "&height=500";
const graphImgTag = document.createElement("img");
graphImgTag.src = graphUrl;
graphImgTag.srcset = graphUrl + "&scale=2 2x";
graphImgTag.alt = graphAlt;
graphLocation.appendChild(graphImgTag);
}
}
});
const parent = document.querySelector(parentSelector);
if (parent) {
const availableWidth = parent.offsetWidth;
const padding = 30;
// for some browsers, the perfect width is not enough
const quirkyBrowserAdjustment = 15;
const graphWidth = availableWidth - padding - quirkyBrowserAdjustment;
// type in {sec10, min, hour}
const graphUrl =
baseUrl +
"/graph?type=" +
type +
"&width=" +
graphWidth +
"&height=500";
const graphImgTag = document.createElement("img");
graphImgTag.src = graphUrl;
graphImgTag.srcset = graphUrl + "&scale=2 2x";
graphImgTag.alt = graphAlt;
graphLocation.appendChild(graphImgTag);
}
}
});
})();

View File

@ -1,36 +1,67 @@
<div>
Parameters allow you to prompt users for one or more inputs that will be
passed into a build. For example, you might have a project that runs tests on
demand by allowing users to upload a zip file with binaries to be tested.
This could be done by adding a <i>File Parameter</i> here.
<br>
passed into a build. For example, you might have a project that runs tests on
demand by allowing users to upload a zip file with binaries to be tested. This
could be done by adding a
<i>File Parameter</i>
here.
<br />
Or you might have a project that releases some software, and you want users to
enter release notes that will be uploaded along with the software. This could
be done by adding a <i>Multi-line String Parameter</i> here.
be done by adding a
<i>Multi-line String Parameter</i>
here.
<p>
Each parameter has a <i>Name</i> and some sort of <i>Value</i>, depending on
the parameter type. These name-value pairs will be exported as environment
variables when the build starts, allowing subsequent parts of the build
configuration (such as build steps) to access those values, e.g. by using the
<code>${PARAMETER_NAME}</code> syntax (or <code>%PARAMETER_NAME%</code> on Windows).
<br>
This also implies that each parameter defined here should have a unique
<i>Name</i>.
Each parameter has a
<i>Name</i>
and some sort of
<i>Value</i>
, depending on the parameter type. These name-value pairs will be exported
as environment variables when the build starts, allowing subsequent parts of
the build configuration (such as build steps) to access those values, e.g.
by using the
<code>${PARAMETER_NAME}</code>
syntax (or
<code>%PARAMETER_NAME%</code>
on Windows).
<br />
This also implies that each parameter defined here should have a unique
<i>Name</i>
.
</p>
<p>
When a project is parameterized, the usual <i>Build Now</i> link will be
replaced with a <i>Build with Parameters</i> link, where users will be
prompted to specify values for each of the defined parameters. If they choose
not to enter anything, the build will start with the default value for each
parameter.
When a project is parameterized, the usual
<i>Build Now</i>
link will be replaced with a
<i>Build with Parameters</i>
link, where users will be prompted to specify values for each of the defined
parameters. If they choose not to enter anything, the build will start with
the default value for each parameter.
</p>
<p>
If a build is started automatically, for example if started by an SCM trigger,
the default values for each parameter will be used.
If a build is started automatically, for example if started by an SCM
trigger, the default values for each parameter will be used.
</p>
<p>
When a parameterized build is in the queue, attempting to start another build
of the same project will only succeed if the parameter values are different,
or if the <i>Execute concurrent builds if necessary</i> option is enabled.
When a parameterized build is in the queue, attempting to start another
build of the same project will only succeed if the parameter values are
different, or if the
<i>Execute concurrent builds if necessary</i>
option is enabled.
</p>
<p>
See the <a href="https://www.jenkins.io/redirect/parameterized-builds"
rel="noopener noreferrer" target="_blank">Parameterized Builds documentation</a> for more information about
this feature.
See the
<a
href="https://www.jenkins.io/redirect/parameterized-builds"
rel="noopener noreferrer"
target="_blank"
>
Parameterized Builds documentation
</a>
for more information about this feature.
</p>
</div>

View File

@ -1,36 +1,67 @@
<div>
Параметрите позволяват на потребителите да въведат данни, които да се
използват по време на изграждането. Например, проект за тестове за
производителност при заявка, който позволява на потребителите да
качват изпълними файлове, които да се тестват. Това може да се случи
с добавянето на <i>Параметър: файл</i>.
<br>
Друга възможност е проект, който изготвя крайния вариант на програма
и искате да позволите на потребителите до прикачат към нея бележки по
версията. Може да постигнете това като добавите <i>Параметър: многоредов
низ</i>.
използват по време на изграждането. Например, проект за тестове за
производителност при заявка, който позволява на потребителите да качват
изпълними файлове, които да се тестват. Това може да се случи с добавянето на
<i>Параметър: файл</i>
.
<br />
Друга възможност е проект, който изготвя крайния вариант на програма и искате
да позволите на потребителите до прикачат към нея бележки по версията. Може да
постигнете това като добавите
<i>Параметър: многоредов низ</i>
.
<p>
Всеки параметър има <i>име</i> и <i>стойност</i>, която зависи от вида на
параметъра. Тези двойки име-стойност се изнасят като променливи на средата
при стартиране на изграждането, което позволява на последващите стъпки от
него да достъпват стойностите чрез синтаксиса <code>${ИМЕ_НААРАМЕТЪР}</code>
(под Windows e <code>МЕ_НААРАМЕТЪР%</code>).
<br>
Това е и причината <i>името</i> на всеки параметър да е уникално.
Всеки параметър има
<i>име</i>
и
<i>стойност</i>
, която зависи от вида на параметъра. Тези двойки име-стойност се изнасят
като променливи на средата при стартиране на изграждането, което позволява
на последващите стъпки от него да достъпват стойностите чрез синтаксиса
<code>${ИМЕ_НААРАМЕТЪР}</code>
(под Windows e
<code>МЕ_НААРАМЕТЪР%</code>
).
<br />
Това е и причината
<i>името</i>
на всеки параметър да е уникално.
</p>
<p>
При параметризирането на проект, стандартната връзка <i>Изграждане</i>
се замества с връзка <i>Изграждане с параметри</i>. Чрез нея потребителите
могат да указват стойности за всеки от дефинираните параметри. Ако не въведат
нищо, се използва отделна стандартна стойност за всеки от параметрите.
При параметризирането на проект, стандартната връзка
<i>Изграждане</i>
се замества с връзка
<i>Изграждане с параметри</i>
. Чрез нея потребителите могат да указват стойности за всеки от дефинираните
параметри. Ако не въведат нищо, се използва отделна стандартна стойност за
всеки от параметрите.
</p>
<p>
Ако изграждането е стартирано автоматично, например от промяна в системата за
контрол на версиите, за всеки от параметрите ще се ползва стандартната му
стойност.
Ако изграждането е стартирано автоматично, например от промяна в системата
за контрол на версиите, за всеки от параметрите ще се ползва стандартната му
стойност.
</p>
<p>
Когато има поне едно параметризирано изграждане в опашката, опит за стартирането
на друго ще е успешно, ако поне един от параметрите е различен, освен ако не е
зададена опцията <i>Едновременно изграждане при необходимост</i>.
Когато има поне едно параметризирано изграждане в опашката, опит за
стартирането на друго ще е успешно, ако поне един от параметрите е различен,
освен ако не е зададена опцията
<i>Едновременно изграждане при необходимост</i>
.
</p>
<p>
За повече информация вижте <a href="https://www.jenkins.io/redirect/parameterized-builds"
rel="noopener noreferrer" target="_blank">страницата за параметризираните изграждания</a> в уикито.
За повече информация вижте
<a
href="https://www.jenkins.io/redirect/parameterized-builds"
rel="noopener noreferrer"
target="_blank"
>
страницата за параметризираните изграждания
</a>
в уикито.
</p>
</div>

View File

@ -1,15 +1,22 @@
<div>
Wenn Sie Jenkins einsetzen, um bestimmte Abläufe zu automatisieren, kann es
praktisch sein, einen Build zu "parametrisieren": Dies bedeutet, dass der Build
zu Beginn vom Benutzer Eingaben verlangt, die dem Buildprozess dann zur Verfügung stehen.
So könnten Sie beispielsweise einen Test-Job anlegen, bei dem Ihre Benutzer eine ZIP-Datei
der Software hochladen können, die getestet werden soll.
Wenn Sie Jenkins einsetzen, um bestimmte Abläufe zu automatisieren, kann es
praktisch sein, einen Build zu "parametrisieren": Dies bedeutet, dass der
Build zu Beginn vom Benutzer Eingaben verlangt, die dem Buildprozess dann zur
Verfügung stehen. So könnten Sie beispielsweise einen Test-Job anlegen, bei
dem Ihre Benutzer eine ZIP-Datei der Software hochladen können, die getestet
werden soll.
<p>
Dieser Abschnitt legt fest, welche Parameter Ihr Build verlangt. Parameter werden
nach Namen unterschieden. Sie können daher auch mehrere Parameter verwenden, solange
diese unterschiedliche Namen tragen.
<p>
Auf der <a href="https://www.jenkins.io/redirect/parameterized-builds">Jenkins website</a>
<p>
Dieser Abschnitt legt fest, welche Parameter Ihr Build verlangt. Parameter
werden nach Namen unterschieden. Sie können daher auch mehrere Parameter
verwenden, solange diese unterschiedliche Namen tragen.
</p>
<p>
Auf der
<a href="https://www.jenkins.io/redirect/parameterized-builds">
Jenkins website
</a>
finden Sie weitere Informationen über parametrisierte Builds.
</p>
</div>

View File

@ -1,14 +1,20 @@
<div>
Il est parfois pratique de rendre paramétrables certaines automatisations, en demandant des informations
à l'utilisateur.
Par exemple, vous pourriez proposer un job de test à la demande, où l'utilisateur peut soumettre un
fichier zip des binaires à tester.
Il est parfois pratique de rendre paramétrables certaines automatisations, en
demandant des informations à l'utilisateur. Par exemple, vous pourriez
proposer un job de test à la demande, où l'utilisateur peut soumettre un
fichier zip des binaires à tester.
<p>
Cette section configure les paramètres que prend votre build. Les paramètres sont identifiés par leur
nom. Vous pouvez donc avoir de multiples paramètres, s'ils ont bien des noms distincts.
<p>
Cette section configure les paramètres que prend votre build. Les paramètres
sont identifiés par leur nom. Vous pouvez donc avoir de multiples
paramètres, s'ils ont bien des noms distincts.
</p>
<p>
Consultez <a href="https://www.jenkins.io/redirect/parameterized-builds">cette page</a>
<p>
Consultez
<a href="https://www.jenkins.io/redirect/parameterized-builds">
cette page
</a>
pour plus de discussions autour de cette fonctionnalité.
</p>
</div>

View File

@ -3,40 +3,68 @@
forniti a una compilazione. Ad esempio, si potrebbe avere un progetto che
esegue test su richiesta consentendo agli utenti di caricare un file ZIP
contenente i binari da testare. Si potrebbe ottenere tale risultato
aggiungendo qui un <i>Parametro file</i>.
<br>
aggiungendo qui un
<i>Parametro file</i>
.
<br />
Oppure si potrebbe avere un progetto che rilascia del software e si desidera
che gli utenti immettano delle note di rilascio che saranno caricate insieme
al software. Si potrebbe ottenere tale risultato aggiungendo qui un
<i>Parametro stringa multiriga</i>.
<i>Parametro stringa multiriga</i>
.
<p>
Ogni parametro ha un <i>Nome</i> e qualche tipo di <i>Valore</i> che
dipende dal tipo del parametro. Queste coppie nome-valore saranno esportate
come variabili d'ambiente all'avvio della compilazione, consentendo ai
passaggi successivi della configurazione della compilazione (come le
istruzioni di compilazione) di accedere a tali valori, ad esempio utilizzando
la sintassi <code>${NOME_PARAMETRO}</code> (o <code>%NOME_PARAMETRO%</code> su
Windows).
<br>
Ciò implica anche che ogni parametro definito qui debba avere un
<i>Nome</i> univoco.
Ogni parametro ha un
<i>Nome</i>
e qualche tipo di
<i>Valore</i>
che dipende dal tipo del parametro. Queste coppie nome-valore saranno
esportate come variabili d'ambiente all'avvio della compilazione,
consentendo ai passaggi successivi della configurazione della compilazione
(come le istruzioni di compilazione) di accedere a tali valori, ad esempio
utilizzando la sintassi
<code>${NOME_PARAMETRO}</code>
(o
<code>%NOME_PARAMETRO%</code>
su Windows).
<br />
Ciò implica anche che ogni parametro definito qui debba avere un
<i>Nome</i>
univoco.
</p>
<p>
Quando un progetto è parametrizzato, il collegamento <i>Compila ora</i>
usuale sarà sostituito da un collegamento <i>Compila con parametri</i> dove
agli utenti verrà chiesto di specificare i valori per ognuno dei parametri
definiti. Se questi scelgono di non immettere nulla, la compilazione verrà
avviata con il valore predefinito per ogni parametro.
Quando un progetto è parametrizzato, il collegamento
<i>Compila ora</i>
usuale sarà sostituito da un collegamento
<i>Compila con parametri</i>
dove agli utenti verrà chiesto di specificare i valori per ognuno dei
parametri definiti. Se questi scelgono di non immettere nulla, la
compilazione verrà avviata con il valore predefinito per ogni parametro.
</p>
<p>
Se una compilazione è avviata automaticamente, ad esempio se è avviata da
un trigger del sistema di gestione del codice sorgente, saranno utilizzati i
valori predefiniti per ogni parametro.
Se una compilazione è avviata automaticamente, ad esempio se è avviata da un
trigger del sistema di gestione del codice sorgente, saranno utilizzati i
valori predefiniti per ogni parametro.
</p>
<p>
Quando una compilazione parametrizzata è in coda, i tentativi di avvio di
un'altra compilazione dello stesso progetto avranno successo solo se i valori
dei parametri sono diversi, o se l'opzione <i>Esegui compilazioni concorrenti
se necessario</i> è abilitata.
Quando una compilazione parametrizzata è in coda, i tentativi di avvio di
un'altra compilazione dello stesso progetto avranno successo solo se i
valori dei parametri sono diversi, o se l'opzione
<i>Esegui compilazioni concorrenti se necessario</i>
è abilitata.
</p>
<p>
Si veda la <a href="https://www.jenkins.io/redirect/parameterized-builds"
rel="noopener noreferrer" target="_blank">documentazione sulle compilazioni parametrizzate</a> per
ulteriori informazioni su questa funzionalità.
Si veda la
<a
href="https://www.jenkins.io/redirect/parameterized-builds"
rel="noopener noreferrer"
target="_blank"
>
documentazione sulle compilazioni parametrizzate
</a>
per ulteriori informazioni su questa funzionalità.
</p>
</div>

View File

@ -1,11 +1,18 @@
<div>
Jenkinsを様々な自動化に使用していると、ビルドの"パラメータ化" - ビルドプロセスで使用する値をユーザーが入力する -
が便利なこともあります。例えば、ユーザーがテスト対象のバイナリー形式のZIPファイルを登録する、
といったテストジョブを設定することもあるでしょう。
Jenkinsを様々な自動化に使用していると、ビルドの"パラメータ化" -
ビルドプロセスで使用する値をユーザーが入力する -
が便利なこともあります。例えば、ユーザーがテスト対象のバイナリー形式のZIPファイルを登録する、
といったテストジョブを設定することもあるでしょう。
<p>
<p>
ここでは、ビルドが必要とするパラメータを設定します。パラメータは名前で識別するので、異なる名前を使用すれば複数のパラメータを使用できます。
</p>
<p>
この機能の詳細については、<a href="https://www.jenkins.io/redirect/parameterized-builds">Wikiの項目</a>を参照してください。
<p>
この機能の詳細については、
<a href="https://www.jenkins.io/redirect/parameterized-builds">
Wikiの項目
</a>
を参照してください。
</p>
</div>

View File

@ -1,14 +1,21 @@
<div>
When you are using Jenkins for various automations, it's sometimes convenient
to be able to "parameterize" a build, by requiring a set of user inputs to
be made available to the build process. For example, you might be setting up
an on-demand test job, where the user can submit a zip file of the binaries to be tested.
When you are using Jenkins for various automations, it's sometimes convenient
to be able to "parameterize" a build, by requiring a set of user inputs to be
made available to the build process. For example, you might be setting up an
on-demand test job, where the user can submit a zip file of the binaries to be
tested.
<p>
This section configures what parameters your build takes. Parameters are distinguished
by their names, and so you can have multiple parameters provided that they have different names.
<p>
This section configures what parameters your build takes. Parameters are
distinguished by their names, and so you can have multiple parameters
provided that they have different names.
</p>
<p>
See <a href="https://www.jenkins.io/redirect/parameterized-builds">the Jenkins site</a>
<p>
See
<a href="https://www.jenkins.io/redirect/parameterized-builds">
the Jenkins site
</a>
for more discussions about this feature.
</p>
</div>

View File

@ -1,12 +1,18 @@
<div>
當您用 Jenkins 自動化各種流程時,如果能將建置「自動化」會方便許多,要求使用者輸入參數,並帶到建置過程裡。
例如,您可以設一個依需求測試的作業,要使用者將待測試的檔案壓縮起來上傳。
當您用 Jenkins
自動化各種流程時,如果能將建置「自動化」會方便許多,要求使用者輸入參數,並帶到建置過程裡。
例如,您可以設一個依需求測試的作業,要使用者將待測試的檔案壓縮起來上傳。
<p>
<p>
這一區可以讓您設定建置時要帶的參數。
參數之間是以名稱來區隔,所以如果您要用到多個參數,請指定不同的名稱。
</p>
<p>
請參考<a href="https://www.jenkins.io/redirect/parameterized-builds">這篇 Wiki
條目</a>有關本功能的更多討論。
<p>
請參考
<a href="https://www.jenkins.io/redirect/parameterized-builds">
這篇 Wiki 條目
</a>
有關本功能的更多討論。
</p>
</div>

View File

@ -1,5 +1,6 @@
<div>
Pass a password to your build.
The password entered here is made available to the build in plain text as an environment variable like a string parameter would be.
The value will be stored encrypted on the Jenkins controller, similar to passwords in Jenkins configuration.
</div>
Pass a password to your build. The password entered here is made available to
the build in plain text as an environment variable like a string parameter
would be. The value will be stored encrypted on the Jenkins controller,
similar to passwords in Jenkins configuration.
</div>

View File

@ -1,7 +1,7 @@
<div>
Fornire una password per la compilazione.
La password immessa qui sarà resa disponibile per la compilazione come
variabile d'ambiente in chiaro, come accadrebbe per un parametro stringa.
Il valore sarà salvato in forma crittografata sul master Jenkins,
analogamente alle password nella configurazione di Jenkins.
Fornire una password per la compilazione. La password immessa qui sarà resa
disponibile per la compilazione come variabile d'ambiente in chiaro, come
accadrebbe per un parametro stringa. Il valore sarà salvato in forma
crittografata sul master Jenkins, analogamente alle password nella
configurazione di Jenkins.
</div>

View File

@ -1,34 +1,49 @@
<div>
<p>
An agent needs to have a directory dedicated to Jenkins. Specify
the path to this directory on the agent. It is best to use
an absolute path, such as <code>/var/jenkins</code> or <code>c:\jenkins</code>.
This should be a path local to the agent machine. There is no need for
this path to be visible from the controller.
An agent needs to have a directory dedicated to Jenkins. Specify the path to
this directory on the agent. It is best to use an absolute path, such as
<code>/var/jenkins</code>
or
<code>c:\jenkins</code>
. This should be a path local to the agent machine. There is no need for
this path to be visible from the controller.
</p>
<p>
Agents do not maintain important data; all job configurations, build logs and
artifacts are stored on the controller, so it would be possible to use a temporary
directory as the agent root directory.
<br>
However, by giving an agent a directory that is not deleted after a machine
reboot, for example, the agent can cache data such as tool installations, or
build workspaces. This prevents unnecessary downloading of tools, or checking
out source code again when builds start to run on this agent again after a
reboot.
Agents do not maintain important data; all job configurations, build logs
and artifacts are stored on the controller, so it would be possible to use a
temporary directory as the agent root directory.
<br />
However, by giving an agent a directory that is not deleted after a machine
reboot, for example, the agent can cache data such as tool installations, or
build workspaces. This prevents unnecessary downloading of tools, or
checking out source code again when builds start to run on this agent again
after a reboot.
</p>
<p>
If you use a relative path, such as <code>./jenkins-agent</code>, the path will be
relative to the working directory provided by the <i>Launch method</i>.
If you use a relative path, such as
<code>./jenkins-agent</code>
, the path will be relative to the working directory provided by the
<i>Launch method</i>
.
</p>
<ul>
<li>For launchers where Jenkins controls starting the agent process, such
as SSH, the current working directory will typically be consistent,
e.g. the user's home directory.</li>
<li>For launchers where Jenkins has no control over starting the agent process,
such as inbound agents launched from the command line,
the current working directory may change between
launches of the agent and use of a relative path may prove problematic.
<br>
The principal issue encountered when using relative paths with inbound launchers
is the proliferation of stale workspaces and tool installation
on the agent machine. This can cause disk space issues.</li>
<li>
For launchers where Jenkins controls starting the agent process, such as
SSH, the current working directory will typically be consistent, e.g. the
user's home directory.
</li>
<li>
For launchers where Jenkins has no control over starting the agent
process, such as inbound agents launched from the command line, the
current working directory may change between launches of the agent and use
of a relative path may prove problematic.
<br />
The principal issue encountered when using relative paths with inbound
launchers is the proliferation of stale workspaces and tool installation
on the agent machine. This can cause disk space issues.
</li>
</ul>
</div>

View File

@ -1,34 +1,50 @@
<div>
<p>
Компютърът за изграждания трябва да има директория, която да се ползва
само от Jenkins. Укажете пътя до директорията. Най-добре ползвайте
абсолютен път като <code>/var/jenkins</code> или <code>c:\jenkins</code>.
Това е локален път — както се вижда на машината за изграждания. Няма
нужда пътят да се вижда от командната машина.
Компютърът за изграждания трябва да има директория, която да се ползва само
от Jenkins. Укажете пътя до директорията. Най-добре ползвайте абсолютен път
като
<code>/var/jenkins</code>
или
<code>c:\jenkins</code>
. Това е локален път — както се вижда на машината за изграждания. Няма нужда
пътят да се вижда от командната машина.
</p>
<p>
Изграждащите машини не съдържат важни данни — всички настройки по задачите,
журналите от изгражданията както и артефактите се държат на компания компютър,
затова е напълно допустимо да се ползва временна директория като основна на
подчинените машини.
<br>
Има полза директорията да не е временна, защото след рестартиране на машината
тя остава и може да държи кеширани инсталациите на инструменти, или местата
за изграждания. Това минимизира повтарящите се изтегляния на инструменти
или ресурси от системите за контрол на версии при стартирането на ново
изграждане след рестартиране.
Изграждащите машини не съдържат важни данни — всички настройки по задачите,
журналите от изгражданията както и артефактите се държат на компания
компютър, затова е напълно допустимо да се ползва временна директория като
основна на подчинените машини.
<br />
Има полза директорията да не е временна, защото след рестартиране на
машината тя остава и може да държи кеширани инсталациите на инструменти, или
местата за изграждания. Това минимизира повтарящите се изтегляния на
инструменти или ресурси от системите за контрол на версии при стартирането
на ново изграждане след рестартиране.
</p>
<p>
Ако използвате относителен път като <code>./jenkins-agent</code>, пътят се определя
спрямо работната директория указана в <i>Начина за стартиране</i>.
Ако използвате относителен път като
<code>./jenkins-agent</code>
, пътят се определя спрямо работната директория указана в
<i>Начина за стартиране</i>
.
</p>
<ul>
<li>При стартиранията, при които Jenkins управлява пускането на агента,
като например SSH, текущата директория най-често е една и съща, примерно
домашната директория на потребителя.</li>
<li>При стартиранията, при които Jenkins не ги управлява, като JNLP през
командния ред или връзка за уеб браузъра, текущата директория може да се
променя при всяко стартиране. В този случай ползването на относителен път
може да доведе до проблеми.
<br>
Най-често това са остарели работни места, инсталации на инструменти, което
води до свършване на свободното дисково пространство.</li>
<li>
При стартиранията, при които Jenkins управлява пускането на агента, като
например SSH, текущата директория най-често е една и съща, примерно
домашната директория на потребителя.
</li>
<li>
При стартиранията, при които Jenkins не ги управлява, като JNLP през
командния ред или връзка за уеб браузъра, текущата директория може да се
променя при всяко стартиране. В този случай ползването на относителен път
може да доведе до проблеми.
<br />
Най-често това са остарели работни места, инсталации на инструменти, което
води до свършване на свободното дисково пространство.
</li>
</ul>
</div>

View File

@ -1,16 +1,17 @@
<div>
<p>
Un agent a besoin d'un répertoire dédié à Jenkins. Spécifiez ici le
chemin absolu (local à l'agent) vers le répertoire de travail sur l'agent, par exemple
'/var/jenkins' ou 'c:\jenkins'. Le chemin doit être local à la machine
agent. En règle générale, il n'est pas nécessaire que ce chemin soit
visible depuis le contrôleur.
Un agent a besoin d'un répertoire dédié à Jenkins. Spécifiez ici le chemin
absolu (local à l'agent) vers le répertoire de travail sur l'agent, par
exemple '/var/jenkins' ou 'c:\jenkins'. Le chemin doit être local à la
machine agent. En règle générale, il n'est pas nécessaire que ce chemin soit
visible depuis le contrôleur.
</p>
<p>
Les agents ne conservent pas de données importantes (autres que les
répertoires de travail des derniers builds des projets); vous pouvez donc
positionner le répertoire du travail de l'agent dans un répertoire
temporaire.
Le seul défaut de ce choix est que vous perdrez le dernier workspace à
jour si la machine agent est éteinte.
Les agents ne conservent pas de données importantes (autres que les
répertoires de travail des derniers builds des projets); vous pouvez donc
positionner le répertoire du travail de l'agent dans un répertoire
temporaire. Le seul défaut de ce choix est que vous perdrez le dernier
workspace à jour si la machine agent est éteinte.
</p>
</div>

View File

@ -1,39 +1,54 @@
<div>
<p>
Un agente deve avere una directory dedicata a Jenkins. Specificare il
percorso a questa directory sull'agente. È meglio utilizzare un percorso
assoluto, come <code>/var/jenkins</code> o <code>c:\jenkins</code>.
Questo percorso deve essere locale al computer agente. Non è necessario
che questo percorso sia visibile dal master.
Un agente deve avere una directory dedicata a Jenkins. Specificare il
percorso a questa directory sull'agente. È meglio utilizzare un percorso
assoluto, come
<code>/var/jenkins</code>
o
<code>c:\jenkins</code>
. Questo percorso deve essere locale al computer agente. Non è necessario
che questo percorso sia visibile dal master.
</p>
<p>
Gli agenti non mantengono dati importanti; tutte le configurazioni dei
processi, i log delle compilazioni e gli artefatti sono salvati sul master,
per cui sarebbe possibile utilizzare una directory temporanea come directory
radice dell'agente.
<br>
Tuttavia, fornendo a un agente una directory che non viene eliminata al
riavvio del computer, ad esempio, l'agente può eseguire il caching di dati
come installazioni di strumenti o spazi di lavoro delle compilazioni. Ciò
impedisce il download non necessario di strumenti o evita la necessità di
eseguire nuovamente il checkout del codice sorgente quando delle compilazioni
riprendono ad essere eseguite dopo un riavvio.
Gli agenti non mantengono dati importanti; tutte le configurazioni dei
processi, i log delle compilazioni e gli artefatti sono salvati sul master,
per cui sarebbe possibile utilizzare una directory temporanea come directory
radice dell'agente.
<br />
Tuttavia, fornendo a un agente una directory che non viene eliminata al
riavvio del computer, ad esempio, l'agente può eseguire il caching di dati
come installazioni di strumenti o spazi di lavoro delle compilazioni. Ciò
impedisce il download non necessario di strumenti o evita la necessità di
eseguire nuovamente il checkout del codice sorgente quando delle
compilazioni riprendono ad essere eseguite dopo un riavvio.
</p>
<p>
Se si utilizza un percorso relativo, come <code>./jenkins-agent</code>, il
percorso sarà relativo alla directory di lavoro fornita dal <i>Metodo di
avvio</i>.
Se si utilizza un percorso relativo, come
<code>./jenkins-agent</code>
, il percorso sarà relativo alla directory di lavoro fornita dal
<i>Metodo di avvio</i>
.
</p>
<ul>
<li>Per le utilità di avvio per cui Jenkins controlla l'avvio del processo
agente, come SSH, tipicamente la directory di lavoro corrente sarà
consistente, ad es. la directory home dell'utente.</li>
<li>Per le utilità di avvio per cui Jenkins non ha controllo sull'avvio del
processo agente, come agenti che comunicano in ingresso avviati dalla riga
di comando, la directory di lavoro corrente potrebbe variare da un avvio
all'altro dell'agente e l'utilizzo di un percorso relativo potrebbe
rivelarsi problematico.
<br>
Il problema principale riscontrato con l'utilizzo dei percorsi relativi con
gli agenti che comunicano in ingresso è la proliferazione di spazi di lavoro
e di installazioni di strumenti non aggiornati sul computer dell'agente.
Ciò può causare problemi di spazio disponibile su disco.</li>
<li>
Per le utilità di avvio per cui Jenkins controlla l'avvio del processo
agente, come SSH, tipicamente la directory di lavoro corrente sarà
consistente, ad es. la directory home dell'utente.
</li>
<li>
Per le utilità di avvio per cui Jenkins non ha controllo sull'avvio del
processo agente, come agenti che comunicano in ingresso avviati dalla riga
di comando, la directory di lavoro corrente potrebbe variare da un avvio
all'altro dell'agente e l'utilizzo di un percorso relativo potrebbe
rivelarsi problematico.
<br />
Il problema principale riscontrato con l'utilizzo dei percorsi relativi
con gli agenti che comunicano in ingresso è la proliferazione di spazi di
lavoro e di installazioni di strumenti non aggiornati sul computer
dell'agente. Ciò può causare problemi di spazio disponibile su disco.
</li>
</ul>
</div>

View File

@ -1,11 +1,13 @@
<div>
<p>
エージェントにはJenkins用のディレクトリが必要です。
'/var/jenkins'や'c:\jenkins'のような、エージェントのワークディレクトリの絶対パスを指定します。
このパスは、エージェントでのローカルなパスです。マスターから見える必要はありません。
エージェントにはJenkins用のディレクトリが必要です。
'/var/jenkins'や'c:\jenkins'のような、エージェントのワークディレクトリの絶対パスを指定します。
このパスは、エージェントでのローカルなパスです。マスターから見える必要はありません。
</p>
<p>
エージェントは重要なデータ(直前にビルドしたプロジェクトのワークスペースを除いて)を保持しないので、
エージェントのワークスペースをテンポラリディレクトリに設定できます。
唯一の弱点は、エージェントが落ちると最新のワークスペースを失うことです。
エージェントは重要なデータ(直前にビルドしたプロジェクトのワークスペースを除いて)を保持しないので、
エージェントのワークスペースをテンポラリディレクトリに設定できます。
唯一の弱点は、エージェントが落ちると最新のワークスペースを失うことです。
</p>
</div>

View File

@ -1,14 +1,14 @@
<div>
<!-- OUTDATED -->
<!-- OUTDATED -->
<p>
Подчиненный узел должен иметь директорию выделенную для Jenkins.
Укажите полный путь к этой директории, например
'/export/home/jenkins'.
Подчиненный узел должен иметь директорию выделенную для Jenkins. Укажите
полный путь к этой директории, например '/export/home/jenkins'.
</p>
<p>
Подчиненные узлы не содержат важных данный (чего-то кроме директорий
сборки последних собранных проектов), так что вы можете назначить
в качестве такой директории любую временную. Единственное негативное
последствие - вы можете потерять последнюю версию сборочной директории,
если узел выключится.
Подчиненные узлы не содержат важных данный (чего-то кроме директорий сборки
последних собранных проектов), так что вы можете назначить в качестве такой
директории любую временную. Единственное негативное последствие - вы можете
потерять последнюю версию сборочной директории, если узел выключится.
</p>
</div>

View File

@ -1,3 +1 @@
<div>
Strip whitespace from the beginning and end of the string.
</div>
<div>Strip whitespace from the beginning and end of the string.</div>

View File

@ -1,3 +1 @@
<div>
Elimina gli spazi bianchi all'inizio e alla fine della stringa.
</div>
<div>Elimina gli spazi bianchi all'inizio e alla fine della stringa.</div>

View File

@ -1,3 +1,3 @@
<div>
Specify user defined time zone for displaying time rather than system default.
Specify user defined time zone for displaying time rather than system default.
</div>

View File

@ -1,3 +1,3 @@
<div>
システムデフォルトの代わりに、ユーザーが指定したタイムゾーンで時刻を表示します。
システムデフォルトの代わりに、ユーザーが指定したタイムゾーンで時刻を表示します。
</div>

Some files were not shown because too many files have changed in this diff Show More