mirror of https://github.com/jenkinsci/jenkins.git
Fix all lint errors
This commit is contained in:
parent
f033a611ff
commit
e3fdfa527e
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -10,5 +10,5 @@ template: |
|
|||
See https://www.jenkins.io/changelog/ for the official changelogs._
|
||||
|
||||
$CHANGES
|
||||
|
||||
|
||||
All contributors: $CONTRIBUTORS
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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/
|
||||
|
|
|
|||
|
|
@ -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)>)
|
||||
|
|
|
|||
11
README.md
11
README.md
|
|
@ -12,8 +12,8 @@
|
|||
[](https://hub.docker.com/r/jenkins/jenkins/)
|
||||
[](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:
|
||||
[](https://www.jenkins.io/changelog)
|
||||
[](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)**.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
-->
|
||||
-->
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
})
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -1,14 +1,24 @@
|
|||
<div>
|
||||
Se seu servidor Jenkins estiver atrás de um firewall e não tem acesso direto a internet,
|
||||
e se a JVM do seu servidor nã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ão de internet, você pode especificar o nome do servidor de proxy HTTP neste campos para permitir ao Jenkins
|
||||
instalar plugins para você. Note que o Jenkins usa HTTPS para se comunicar com o centro de atualização para baixar os plugins.
|
||||
Se seu servidor Jenkins estiver atrás de um firewall e não tem
|
||||
acesso direto a internet, e se a JVM do seu servidor nã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ão de internet, você pode especificar o nome
|
||||
do servidor de proxy HTTP neste campos para permitir ao Jenkins instalar
|
||||
plugins para você. Note que o Jenkins usa HTTPS para se comunicar com o
|
||||
centro de atualização para baixar os plugins.
|
||||
|
||||
<p>
|
||||
Deixar este campo vazio
|
||||
faz com que o Jenkins tente conectar à internet diretamente.
|
||||
Deixar este campo vazio faz com que o Jenkins tente conectar à internet
|
||||
diretamente.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Se você não está certo sobre o valor, cheque a configuração de proxy de seu browser.
|
||||
Se você não está certo sobre o valor, cheque a
|
||||
configuração de proxy de seu browser.
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
<div>
|
||||
Шаблони за имената на сървърите, към които да се свързва директно, а не през сървъра-посредник.
|
||||
По един шаблон на ред. „*“ напасва всички имена (напр. „*.cloudbees.com“ или „w*.jenkins.io“)
|
||||
Шаблони за имената на сървърите, към които да се свързва директно, а не през
|
||||
сървъра-посредник. По един шаблон на ред. „*“ напасва всички имена (напр.
|
||||
„*.cloudbees.com“ или „w*.jenkins.io“)
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<div>
|
||||
プロキシーを使用しないホスト名のパターンを1行に1つずつ設定します。
|
||||
ホスト名には"*"(ワイルドカード)を、"*.jenkins.io"や"www*.jenkins-ci.org"のように使用することができます。
|
||||
</div>
|
||||
プロキシーを使用しないホスト名のパターンを1行に1つずつ設定します。
|
||||
ホスト名には"*"(ワイルドカード)を、"*.jenkins.io"や"www*.jenkins-ci.org"のように使用することができます。
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<div>
|
||||
指定不要透過代理伺服器連線的主機名稱樣式,一行一個。
|
||||
可以使用 "*" 代表任何字串 (例如 "*.jenkins.io" 或是 "www*.jenkins-ci.org")。
|
||||
</div>
|
||||
指定不要透過代理伺服器連線的主機名稱樣式,一行一個。 可以使用 "*" 代表任何字串
|
||||
(例如 "*.jenkins.io" 或是 "www*.jenkins-ci.org")。
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -1,3 +1 @@
|
|||
<div>
|
||||
Това поле определя порта за сървъра-посредник по HTTP.
|
||||
</div>
|
||||
<div>Това поле определя порта за сървъра-посредник по HTTP.</div>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
<div>
|
||||
Ce champ est le numéro de port du proxy HTTP, utilisé avec le nom du serveur.
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
<div>
|
||||
この項目にはプロキシーのポート番号を指定すると、"HTTP proxy server"とあわせて機能します。
|
||||
</div>
|
||||
この項目にはプロキシーのポート番号を指定すると、"HTTP proxy
|
||||
server"とあわせて機能します。
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
<div>
|
||||
Bu alan, HTTP proxy portunu tanımlamak için, proxy sunucusu alanı ile ortaklaşa çalışır.
|
||||
</div>
|
||||
Bu alan, HTTP proxy portunu tanımlamak için, proxy sunucusu
|
||||
alanı ile ortaklaşa çalışır.
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,3 +1 @@
|
|||
<div>
|
||||
指定 HTTP 代理伺服器連接埠,要跟「伺服器」欄位一起使用。
|
||||
</div>
|
||||
<div>指定 HTTP 代理伺服器連接埠,要跟「伺服器」欄位一起使用。</div>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
});
|
||||
}
|
||||
);
|
||||
})();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
.reverse-proxy__hidden {
|
||||
display: none;
|
||||
.reverse-proxy__hidden {
|
||||
display: none;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
})();
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
<div>
|
||||
Ако е зададено, незадължителното показвано име се използва за проекта в
|
||||
интерфейса на Jenkins. Понеже се ползва чисто визуално, няма изискване за
|
||||
уникалност на това име на проект.<br />
|
||||
Ако не е зададено показвано име, интерфейсът на Jenkins показва обичайното
|
||||
име на проект.
|
||||
</div>
|
||||
Ако е зададено, незадължителното показвано име се използва за проекта в
|
||||
интерфейса на Jenkins. Понеже се ползва чисто визуално, няма изискване за
|
||||
уникалност на това име на проект.
|
||||
<br />
|
||||
Ако не е зададено показвано име, интерфейсът на Jenkins показва обичайното име
|
||||
на проект.
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<div>
|
||||
Jenkinsの画面に表示用のプロジェクト名を表示します。表示のためだけのものですので、他のプロジェクトと重複しても問題ありません。
|
||||
<br />
|
||||
表示用プロジェクト名を設定しない場合、Jenkinsの画面にはプロジェクト名を表示します。
|
||||
</div>
|
||||
Jenkinsの画面に表示用のプロジェクト名を表示します。表示のためだけのものですので、他のプロジェクトと重複しても問題ありません。
|
||||
<br />
|
||||
表示用プロジェクト名を設定しない場合、Jenkinsの画面にはプロジェクト名を表示します。
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<div>
|
||||
設定後,Jenkins 網頁就會用這個名稱來顯示。因為只是單純顯示用,所以不同專案的顯示名稱可以相同。
|
||||
<br />
|
||||
如果沒有設定,Jenkins 網頁上預設會用專案的名稱。
|
||||
</div>
|
||||
設定後,Jenkins
|
||||
網頁就會用這個名稱來顯示。因為只是單純顯示用,所以不同專案的顯示名稱可以相同。
|
||||
<br />
|
||||
如果沒有設定,Jenkins 網頁上預設會用專案的名稱。
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -2,14 +2,21 @@
|
|||
Стандартно, всеки наличен и настроен да приема нови изграждания агент може да
|
||||
изгради проекта.
|
||||
<p>
|
||||
Ако изберете тази опция може да осигурите изграждането на проекта да се
|
||||
извършва от определена група от компютри (в частност — само един компютър).
|
||||
Ако изберете тази опция може да осигурите изграждането на проекта да се
|
||||
извършва от определена група от компютри (в частност — само един компютър).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Например, ако проектът трябва да се изгражда само на определени
|
||||
операционни системи или на компютри, на които са инсталирани специфични
|
||||
инструменти, можете да укажете на проекта да се изгражда само на машини,
|
||||
коитоy отговарят на интересуващите ви критерии.
|
||||
Например, ако проектът трябва да се изгражда само на определени операционни
|
||||
системи или на компютри, на които са инсталирани специфични инструменти,
|
||||
можете да укажете на проекта да се изгражда само на машини, коитоy отговарят
|
||||
на интересуващите ви критерии.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Помощният текст за полето <i>Израз с етикети</i>, което се показва, когато
|
||||
сте избрали тази опция, съдържа повече информация, как се указват критерии.
|
||||
Помощният текст за полето
|
||||
<i>Израз с етикети</i>
|
||||
, което се показва, когато сте избрали тази опция, съдържа повече
|
||||
информация, как се указват критерии.
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -1,16 +1,19 @@
|
|||
<div>
|
||||
特定のエージェント(もしくはマスタ)でしか、ビルドできないプロジェクトがあります。
|
||||
そのような場合にこのオプションを設定すると、
|
||||
そのプロジェクトをある特定のコンピューターでのみビルドするようにできます。
|
||||
|
||||
<p>
|
||||
そのプロジェクトをビルドできるコンピューターのグループがあるなら、プロジェクトを結びつけるノードとしてラベルを設定することができます。
|
||||
そうすることで、Jenkinsはそのラベルを持ついずれかのコンピューター上でビルドを実行します。
|
||||
そのプロジェクトをある特定のコンピューターでのみビルドするようにできます。
|
||||
<p>
|
||||
|
||||
そのプロジェクトをビルドできるコンピューターのグループがあるなら、プロジェクトを結びつけるノードとしてラベルを設定することができます。
|
||||
そうすることで、Jenkinsはそのラベルを持ついずれかのコンピューター上でビルドを実行します。
|
||||
</p>
|
||||
|
||||
<p>
|
||||
そうでなければ、利用可能なノードでビルドをスケジューリングできるように、チェックをはずしてください。
|
||||
所要時間が短くなります。
|
||||
そうでなければ、利用可能なノードでビルドをスケジューリングできるように、チェックをはずしてください。
|
||||
所要時間が短くなります。
|
||||
</p>
|
||||
|
||||
<p>
|
||||
このオプションは、あるプロジェクトを特定のノードでビルドできるか確認したい場合にも便利です。
|
||||
このオプションは、あるプロジェクトを特定のノードでビルドできるか確認したい場合にも便利です。
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,12 +1,11 @@
|
|||
<div>
|
||||
Иногда проект может быть собран только на конкретном узле (или мастере).
|
||||
Если это так, эта опция указывает Jenkins всегда выполнять сборку только на указанном узле
|
||||
или узлах.
|
||||
|
||||
Иначе, снимите флажок и Jenkins будет выполнять сборки на свободных узлах, что
|
||||
снизит временные затраты на сборку.
|
||||
Иногда проект может быть собран только на конкретном узле (или мастере). Если
|
||||
это так, эта опция указывает Jenkins всегда выполнять сборку только на
|
||||
указанном узле или узлах. Иначе, снимите флажок и Jenkins будет выполнять
|
||||
сборки на свободных узлах, что снизит временные затраты на сборку.
|
||||
|
||||
<p>
|
||||
Эта опция также полезна если вы желаете удостовериться в том, что проект
|
||||
может собираться на каком-то конкретном узле.
|
||||
</div>
|
||||
Эта опция также полезна если вы желаете удостовериться в том, что проект
|
||||
может собираться на каком-то конкретном узле.
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -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 — 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 —
|
||||
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 — depending on the parameters used — 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 — depending on the parameters used — 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>@<num></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>@<num></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>
|
||||
|
|
|
|||
|
|
@ -1,43 +1,68 @@
|
|||
|
||||
<div>
|
||||
Когато тази опция е избрана, паралелно може да се изпълняват множество
|
||||
изграждания на този проект.
|
||||
<p>
|
||||
Стандартно, в един момент се изпълнява максимум едно изграждане на отделен
|
||||
проект — последващите заявки за изграждането на проекта се поставят в опашка
|
||||
да изчакат завършването на текущото изграждане, преди да се продължи със
|
||||
следващото.<br>
|
||||
Това е по-безопасният вариант, защото често проектите изискват достъпът до
|
||||
определени ресурси да е поединично — например база от данни или някакво
|
||||
хардуерно устройство.
|
||||
Стандартно, в един момент се изпълнява максимум едно изграждане на отделен
|
||||
проект — последващите заявки за изграждането на проекта се поставят в опашка
|
||||
да изчакат завършването на текущото изграждане, преди да се продължи със
|
||||
следващото.
|
||||
<br />
|
||||
Това е по-безопасният вариант, защото често проектите изискват достъпът до
|
||||
определени ресурси да е поединично — например база от данни или някакво
|
||||
хардуерно устройство.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Ако изберете тази опция и в даден момент има достатъчно изграждащи машини, то
|
||||
паралелно ще могат да се изпълняват множество изграждания на проекта. Ако в
|
||||
определен момент няма достатъчно свободни машини, то заявките за изграждане ще
|
||||
изчакват в опашка както обикновено.
|
||||
Ако изберете тази опция и в даден момент има достатъчно изграждащи машини,
|
||||
то паралелно ще могат да се изпълняват множество изграждания на проекта. Ако
|
||||
в определен момент няма достатъчно свободни машини, то заявките за
|
||||
изграждане ще изчакват в опашка както обикновено.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Включването на паралелните изграждане е полезно при проекти с дълги тестове,
|
||||
защото това позволява отделното изграждане да съдържа сравнително малък на
|
||||
брой промени, без това да увеличава прекомерно много времето за работа, защото
|
||||
всяко ново изграждане няма нужда да изчаква завършването на всички предишни
|
||||
изграждания.<br>
|
||||
Тази възможност е полезна и за параметризираните проекти, чиито изграждания
|
||||
може да са напълно независими едно от друго — при определени стойности на
|
||||
параметрите.
|
||||
Включването на паралелните изграждане е полезно при проекти с дълги тестове,
|
||||
защото това позволява отделното изграждане да съдържа сравнително малък на
|
||||
брой промени, без това да увеличава прекомерно много времето за работа,
|
||||
защото всяко ново изграждане няма нужда да изчаква завършването на всички
|
||||
предишни изграждания.
|
||||
<br />
|
||||
Тази възможност е полезна и за параметризираните проекти, чиито изграждания
|
||||
може да са напълно независими едно от друго — при определени стойности на
|
||||
параметрите.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Всяко паралелно изпълнявано изграждане се извършва в отделно от всички други
|
||||
работни пространства. Стандартно добавя „<code>@<номер></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>@<номер></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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,77 @@
|
|||
|
||||
<div>
|
||||
Lorsque cette option est cochée, plusieurs constructions de ce projet peuvent
|
||||
être exécutées en parallèle.
|
||||
Lorsque cette option est cochée, plusieurs constructions de ce projet
|
||||
peuvent être exécutées en parallèle.
|
||||
<p>
|
||||
Par défaut, une seule construction du projet est exécutée à la fois — toutes
|
||||
les autres demandes pour exécuter la construction de ce projet resteront dans la file d'attente
|
||||
jusqu'à ce que la première construction soit terminée.<br>
|
||||
Ce choix par défaut est une précaution, car les projets exigent souvent un accès exclusif à
|
||||
certaines ressources, telles qu'une base de données ou un hardware spécifique.
|
||||
Par défaut, une seule construction du projet est
|
||||
exécutée à la fois — toutes les autres demandes
|
||||
pour exécuter la construction de ce projet resteront dans la file
|
||||
d'attente jusqu'à ce que la première construction soit
|
||||
terminée.
|
||||
<br />
|
||||
Ce choix par défaut est une précaution, car les projets
|
||||
exigent souvent un accès exclusif à certaines ressources,
|
||||
telles qu'une base de données ou un hardware spécifique.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Si cette option est activée, et s'il y a suffisamment d'exécuteurs disponibles
|
||||
sachant gérer ce projet, alors les multiples constructions de ce projet tourneront
|
||||
en parallèle. S'il n'y a pas assez d'exécuteurs disponibles à un moment donné,
|
||||
toute autre demande de construction sera maintenue dans la file d'attente de construction
|
||||
comme normalement.
|
||||
Si cette option est activée, et s'il y a suffisamment
|
||||
d'exécuteurs disponibles sachant gérer ce projet, alors les
|
||||
multiples constructions de ce projet tourneront en parallèle. S'il
|
||||
n'y a pas assez d'exécuteurs disponibles à un moment
|
||||
donné, toute autre demande de construction sera maintenue dans la
|
||||
file d'attente de construction comme normalement.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Activer les constructions simultanées est utile pour les projets qui exécutent de longs tests
|
||||
car elle permet à chaque construction de contenir un plus petit nombre de modifications, tandis que
|
||||
le temps d'exécution total diminue car les constructions suivantes n'ont pas besoin d'attendre
|
||||
que les tests précédents soient terminés.<br>
|
||||
Cette fonctionnalité est également utile pour les projets paramétrés,
|
||||
dont les différentes constructions — en fonction des paramètres utilisés —
|
||||
peuvent être totalement indépendantes les unes des autres.
|
||||
Activer les constructions simultanées est utile pour les projets qui
|
||||
exécutent de longs tests car elle permet à chaque construction
|
||||
de contenir un plus petit nombre de modifications, tandis que le temps
|
||||
d'exécution total diminue car les constructions suivantes n'ont pas
|
||||
besoin d'attendre que les tests précédents soient
|
||||
terminés.
|
||||
<br />
|
||||
Cette fonctionnalité est également utile pour les projets
|
||||
paramétrés, dont les différentes constructions —
|
||||
en fonction des paramètres utilisés — peuvent être
|
||||
totalement indépendantes les unes des autres.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Chaque construction exécutée en parallèle se produit dans son propre espace de travail,
|
||||
isolé des autres constructions.
|
||||
Par défaut, Jenkins ajoute "<code>@<num></code>" au nom du répertoire de l'espace
|
||||
de travail, par exemple "<code>@2</code>".<br>
|
||||
Le séparateur "<code>@</code>" est modifiable en renseignant la valeur de la propriété système Java
|
||||
<code>hudson.slaves.WorkspaceList</code> au démarrage de jenkins.
|
||||
Par exemple, "<code>hudson.slaves.WorkspaceList=-</code>" modifierait
|
||||
le séparateur à un trait d'union.<br>
|
||||
Pour plus d'informations sur le paramétrage des propriétés systè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écutée en parallèle se produit
|
||||
dans son propre espace de travail, isolé des autres constructions.
|
||||
Par défaut, Jenkins ajoute "
|
||||
<code>@<num></code>
|
||||
" au nom du répertoire de l'espace de travail, par exemple "
|
||||
<code>@2</code>
|
||||
".
|
||||
<br />
|
||||
Le séparateur "
|
||||
<code>@</code>
|
||||
" est modifiable en renseignant la valeur de la propriété
|
||||
système Java
|
||||
<code>hudson.slaves.WorkspaceList</code>
|
||||
au démarrage de jenkins. Par exemple, "
|
||||
<code>hudson.slaves.WorkspaceList=-</code>
|
||||
" modifierait le séparateur à un trait d'union.
|
||||
<br />
|
||||
Pour plus d'informations sur le paramétrage des
|
||||
propriétés systè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é</i>, toutes les constructions
|
||||
seront exécutées dans le même espace de travail. La prudence est donc de mise, car plusieurs
|
||||
constructions peuvent finir par modifier le même répertoire en même temps.
|
||||
En revanche, si vous activez l'option
|
||||
<i>Utiliser un espace de travail personnalisé</i>
|
||||
, toutes les constructions seront exécutées dans le même
|
||||
espace de travail. La prudence est donc de mise, car plusieurs constructions
|
||||
peuvent finir par modifier le même répertoire en même
|
||||
temps.
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -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 — 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 — 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 — a seconda dei parametri
|
||||
utilizzati — 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 — a seconda dei parametri
|
||||
utilizzati — 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>@<numero></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>@<numero></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>
|
||||
|
|
|
|||
|
|
@ -1,14 +1,16 @@
|
|||
<div>
|
||||
このオプションをチェックすると、複数のビルドを同時にスケジュールし実行します(十分なエグゼキューターとビルドの要求がある場合)。
|
||||
各ビルドの変更は少ないにもかかわらずビルドやテストに時間がかかる場合に有効で、ビルドの要求が先行するビルドの完了を待つ時間をより短くすることで、
|
||||
全体のターンアラウンドタイムを減らします。
|
||||
個々のエグゼキューターが互いに独立しているパラメータ化されたビルドでも有効です。
|
||||
このオプションをチェックすると、複数のビルドを同時にスケジュールし実行します(十分なエグゼキューターとビルドの要求がある場合)。
|
||||
各ビルドの変更は少ないにもかかわらずビルドやテストに時間がかかる場合に有効で、ビルドの要求が先行するビルドの完了を待つ時間をより短くすることで、
|
||||
全体のターンアラウンドタイムを減らします。
|
||||
個々のエグゼキューターが互いに独立しているパラメータ化されたビルドでも有効です。
|
||||
|
||||
<p>
|
||||
<p>
|
||||
上記以外のジョブで、複数ビルドを同時に実行すると問題が生じるかもしれません。例えば、データベースのようにある特定のリソースを占有するものや、
|
||||
Jenkinsをクーロンの代わりに使う場合などは考えられます。
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<p>
|
||||
カスタムワークスペースを使用しているとすべてのビルドは同じワークスペースを使用するので、注意しないとビルドが衝突します。
|
||||
同一ノードでビルドを実行するときには、Jenkinsは異なるワークスペースを使用して各ビルドが独立したものになるようにします。
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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 && 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 <-> b</code></dt>
|
||||
<dd>
|
||||
"if and only if" operator — equivalent to <code>a && b ||
|
||||
!a && !b</code><br>
|
||||
For example, <code>windows <-> 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 && b || !a && !b</code>
|
||||
<br />
|
||||
For example,
|
||||
<code>windows <-> 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 && 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 && !vm && (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>
|
||||
|
|
|
|||
|
|
@ -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 && 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 <-> b</code></dt>
|
||||
<dd>
|
||||
ЕКВИВАЛЕНТНОСТ — АКО И САМО АКО, същото като <code>a && b ||
|
||||
!a && !b</code><br>
|
||||
Напр. <code>windows <-> dc2</code> означава: „ако се ползва компютър под
|
||||
Windows, той <i>трябва</i> да е в центъра за данни № 2, ако обаче се
|
||||
ползва компютър, който не е под Windows, той <i>не трябва</i> да е в
|
||||
центъра за данни № 2“.
|
||||
ЕКВИВАЛЕНТНОСТ — АКО И САМО АКО, същото като
|
||||
<code>a && b || !a && !b</code>
|
||||
<br />
|
||||
Напр.
|
||||
<code>windows <-> 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 && jdk9</code></dt>
|
||||
<dd>
|
||||
Изгражданията може да се извършат на всеки подчинен компютър, който е с
|
||||
Windows и има версия 9 на комплекта за разработчици на Java (като
|
||||
приемаме, че всеки компютър с инсталиран JDK 9 има етикета <code>jdk9</code>).
|
||||
приемаме, че всеки компютър с инсталиран JDK 9 има етикета
|
||||
<code>jdk9</code>
|
||||
).
|
||||
</dd>
|
||||
|
||||
<dt><code>postgres && !vm && (linux || freebsd)</code></dt>
|
||||
<dd>
|
||||
Изгражданията на този проект може да са на всеки агент под Linux или
|
||||
FreeBSD, стига да <i>не</i> са във виртуална машина, и да е инсталирана
|
||||
базата PostgreSQL (като приемаме, че на всяка машина са поставени
|
||||
съответните етикети, напр. всяка виртуална машина е с етикет <code>vm</code>,
|
||||
иначе примерът няма да сработи).
|
||||
FreeBSD, стига да
|
||||
<i>не</i>
|
||||
са във виртуална машина, и да е инсталирана базата PostgreSQL (като
|
||||
приемаме, че на всяка машина са поставени съответните етикети, напр. всяка
|
||||
виртуална машина е с етикет
|
||||
<code>vm</code>
|
||||
, иначе примерът няма да сработи).
|
||||
</dd>
|
||||
|
||||
</dl>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -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 && 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 <-> b</code></dt>
|
||||
<dd>
|
||||
operatore "se e solo se" — equivalente a <code>a && b ||
|
||||
!a && !b</code><br>
|
||||
Ad esempio, <code>windows <-> 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 && b || !a && !b</code>
|
||||
<br />
|
||||
Ad esempio,
|
||||
<code>windows <-> 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 && 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 && !vm && (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>
|
||||
|
|
|
|||
|
|
@ -1,3 +1 @@
|
|||
<div>
|
||||
Specifies the default value of the field.
|
||||
</div>
|
||||
<div>Specifies the default value of the field.</div>
|
||||
|
|
|
|||
|
|
@ -1,3 +1 @@
|
|||
<div>
|
||||
Указва стандартната стойност на полето.
|
||||
</div>
|
||||
<div>Указва стандартната стойност на полето.</div>
|
||||
|
|
|
|||
|
|
@ -1,3 +1 @@
|
|||
<div>
|
||||
Gibt den Vorgabewert für dieses Feld an.
|
||||
</div>
|
||||
<div>Gibt den Vorgabewert für dieses Feld an.</div>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -1,3 +1 @@
|
|||
<div>
|
||||
Specifica il valore predefinito del campo.
|
||||
</div>
|
||||
<div>Specifica il valore predefinito del campo.</div>
|
||||
|
|
|
|||
|
|
@ -1,3 +1 @@
|
|||
<div>
|
||||
この項目のデフォルト値を設定します。
|
||||
</div>
|
||||
<div>この項目のデフォルト値を設定します。</div>
|
||||
|
|
|
|||
|
|
@ -1,3 +1 @@
|
|||
<div>
|
||||
Задает значение поля по умолчанию.
|
||||
</div>
|
||||
<div>Задает значение поля по умолчанию.</div>
|
||||
|
|
|
|||
|
|
@ -1,3 +1 @@
|
|||
<div>
|
||||
指定欄位的預設值。
|
||||
</div>
|
||||
<div>指定欄位的預設值。</div>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
);
|
||||
})();
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
img.build-time-graph {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
});
|
||||
};
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
})();
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
<div>
|
||||
<p>
|
||||
エージェントにはJenkins用のディレクトリが必要です。
|
||||
'/var/jenkins'や'c:\jenkins'のような、エージェントのワークディレクトリの絶対パスを指定します。
|
||||
このパスは、エージェントでのローカルなパスです。マスターから見える必要はありません。
|
||||
エージェントにはJenkins用のディレクトリが必要です。
|
||||
'/var/jenkins'や'c:\jenkins'のような、エージェントのワークディレクトリの絶対パスを指定します。
|
||||
このパスは、エージェントでのローカルなパスです。マスターから見える必要はありません。
|
||||
</p>
|
||||
|
||||
<p>
|
||||
エージェントは重要なデータ(直前にビルドしたプロジェクトのワークスペースを除いて)を保持しないので、
|
||||
エージェントのワークスペースをテンポラリディレクトリに設定できます。
|
||||
唯一の弱点は、エージェントが落ちると最新のワークスペースを失うことです。
|
||||
エージェントは重要なデータ(直前にビルドしたプロジェクトのワークスペースを除いて)を保持しないので、
|
||||
エージェントのワークスペースをテンポラリディレクトリに設定できます。
|
||||
唯一の弱点は、エージェントが落ちると最新のワークスペースを失うことです。
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
<div>
|
||||
<!-- OUTDATED -->
|
||||
<!-- OUTDATED -->
|
||||
<p>
|
||||
Подчиненный узел должен иметь директорию выделенную для Jenkins.
|
||||
Укажите полный путь к этой директории, например
|
||||
'/export/home/jenkins'.
|
||||
Подчиненный узел должен иметь директорию выделенную для Jenkins. Укажите
|
||||
полный путь к этой директории, например '/export/home/jenkins'.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Подчиненные узлы не содержат важных данный (чего-то кроме директорий
|
||||
сборки последних собранных проектов), так что вы можете назначить
|
||||
в качестве такой директории любую временную. Единственное негативное
|
||||
последствие - вы можете потерять последнюю версию сборочной директории,
|
||||
если узел выключится.
|
||||
Подчиненные узлы не содержат важных данный (чего-то кроме директорий сборки
|
||||
последних собранных проектов), так что вы можете назначить в качестве такой
|
||||
директории любую временную. Единственное негативное последствие - вы можете
|
||||
потерять последнюю версию сборочной директории, если узел выключится.
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
<div>
|
||||
システムデフォルトの代わりに、ユーザーが指定したタイムゾーンで時刻を表示します。
|
||||
システムデフォルトの代わりに、ユーザーが指定したタイムゾーンで時刻を表示します。
|
||||
</div>
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue