提交 8457b50d 编写于 作者: D Daniel Beck

Merge https://github.com/jenkinsci/jenkins into dot-name-check

......@@ -55,9 +55,24 @@ Upcoming changes</a>
<!-- Record your changes in the trunk here. -->
<div id="trunk" style="display:none"><!--=TRUNK-BEGIN=-->
<ul class=image>
<li class='major bug'>
Regression in Windows slaves since 1.547.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-21373">issue 21373</a>)
<li class=bug>
Using <code>java -jar jenkins-core.jar folder/external-monitor-job cmd …</code> did not work.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-21525">issue 21525</a>)
<li class=bug>
Jenkins crash on startup after upgrade from 1.546 to 1.548.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-21474">issue 21474</a>)
<li class=bug>
f:combobox is narrow.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-21612">issue 21612</a>)
<li class=bug>
Fixed missing help items on "Configure Global Security" page
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-19832">issue 19832</a>)
<li class=rfe>
Plugins implementing "AsyncPeriodicWork" can overwrite default logging level
(<a href="https://github.com/jenkinsci/jenkins/pull/1115">pull request #1115</a>)
</ul>
</div><!--=TRUNK-END=-->
......@@ -113,6 +128,8 @@ Upcoming changes</a>
</ul>
<h3><a name=v1.547>What's new in 1.547</a> (2014/01/12)</h3>
<ul class=image>
<li class=rfe>
Split Windows slave functionality into its own plugin.
<li class="major bug">
NPE since 1.545 when using aggregated test result publisher without specifying downstream jobs explicitly.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-18410">issue 18410</a>)
......
......@@ -45,6 +45,7 @@ import java.util.jar.Manifest;
import java.util.logging.Logger;
import static java.util.logging.Level.WARNING;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.LogFactory;
import org.kohsuke.stapler.HttpResponse;
import org.kohsuke.stapler.HttpResponses;
......@@ -213,7 +214,7 @@ public class PluginWrapper implements Comparable<PluginWrapper>, ModelObject {
}
public String getDisplayName() {
return getLongName();
return StringUtils.removeStart(getLongName(), "Jenkins ");
}
public Api getApi() {
......
......@@ -54,6 +54,7 @@ public abstract class AbstractCIBase extends Node implements ItemGroup<TopLevelI
* If you are calling this on Hudson something is wrong.
*
* @deprecated
* Maybe you were trying to call {@link #getDisplayName()}.
*/
@Deprecated @Override
public String getNodeName() {
......@@ -63,6 +64,7 @@ public abstract class AbstractCIBase extends Node implements ItemGroup<TopLevelI
/**
* @deprecated
* Why are you calling a method that always returns ""?
* You probably want o call {@link Jenkins#getRootUrl()}
*/
public String getUrl() {
return "";
......
......@@ -401,7 +401,7 @@ public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends A
* If this project is configured to be always built on this node,
* return that {@link Node}. Otherwise null.
*/
public Label getAssignedLabel() {
public @CheckForNull Label getAssignedLabel() {
if(canRoam)
return null;
......
......@@ -38,12 +38,12 @@ public abstract class AsyncPeriodicWork extends PeriodicWork {
public final void doRun() {
try {
if(thread!=null && thread.isAlive()) {
logger.log(Level.INFO, name+" thread is still running. Execution aborted.");
logger.log(this.getNormalLoggingLevel(), name+" thread is still running. Execution aborted.");
return;
}
thread = new Thread(new Runnable() {
public void run() {
logger.log(Level.INFO, "Started "+name);
logger.log(getNormalLoggingLevel(), "Started "+name);
long startTime = System.currentTimeMillis();
StreamTaskListener l = createListener();
......@@ -59,13 +59,13 @@ public abstract class AsyncPeriodicWork extends PeriodicWork {
l.closeQuietly();
}
logger.log(Level.INFO, "Finished "+name+". "+
logger.log(getNormalLoggingLevel(), "Finished "+name+". "+
(System.currentTimeMillis()-startTime)+" ms");
}
},name+" thread");
thread.start();
} catch (Throwable t) {
logger.log(Level.SEVERE, name+" thread failed with error", t);
logger.log(this.getErrorLoggingLevel(), name+" thread failed with error", t);
}
}
......@@ -83,7 +83,31 @@ public abstract class AsyncPeriodicWork extends PeriodicWork {
protected File getLogFile() {
return new File(Jenkins.getInstance().getRootDir(),name+".log");
}
/**
* Returns the logging level at which normal messages are displayed.
*
* @return
* The logging level as @Level.
*
* @since 1.551
*/
protected Level getNormalLoggingLevel() {
return Level.INFO;
}
/**
* Returns the logging level at which error messages are displayed.
*
* @return
* The logging level as @Level.
*
* @since 1.551
*/
protected Level getErrorLoggingLevel() {
return Level.SEVERE;
}
/**
* Executes the task.
*
......
文件模式从 100755 更改为 100644
......@@ -2107,6 +2107,9 @@ public abstract class Run <JobT extends Job<JobT,RunT>,RunT extends Run<JobT,Run
return;
}
RunT nb = getNextBuild();
try{
delete();
}
......@@ -2116,8 +2119,8 @@ public abstract class Run <JobT extends Job<JobT,RunT>,RunT extends Run<JobT,Run
req.setAttribute("stackTraces", writer);
req.getView(this, "delete-retry.jelly").forward(req, rsp);
return;
}
rsp.sendRedirect2(req.getContextPath()+'/' + getParent().getUrl());
}
rsp.sendRedirect2(req.getContextPath()+'/' + (nb!=null ? nb.getUrl() : getParent().getUrl()));
}
public void setDescription(String description) throws IOException {
......
......@@ -40,6 +40,7 @@ import jenkins.model.Jenkins;
import jenkins.util.JSONSignatureValidator;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.HttpResponse;
import org.kohsuke.stapler.StaplerRequest;
......@@ -637,8 +638,12 @@ public class UpdateSite {
}
public String getDisplayName() {
if(title!=null) return title;
return name;
String displayName;
if(title!=null)
displayName = title;
else
displayName = name;
return StringUtils.removeStart(displayName, "Jenkins ");
}
/**
......
......@@ -448,7 +448,7 @@ public abstract class View extends AbstractModelObject implements AccessControll
if (labels.contains(null) && node.getMode() == Mode.NORMAL) return true;
for (Label l : labels)
if (l.contains(node))
if (l != null && l.contains(node))
return true;
return false;
}
......
......@@ -92,7 +92,8 @@ public abstract class CauseOfBlockage {
}
public String getShortDescription() {
return Messages.Queue_NodeOffline(node.getDisplayName());
String name = (node.toComputer() != null) ? node.toComputer().getDisplayName() : node.getDisplayName();
return Messages.Queue_NodeOffline(name);
}
@Override
......@@ -128,7 +129,8 @@ public abstract class CauseOfBlockage {
}
public String getShortDescription() {
return Messages.Queue_WaitingForNextAvailableExecutorOn(node.getNodeName());
String name = (node.toComputer() != null) ? node.toComputer().getDisplayName() : node.getDisplayName();
return Messages.Queue_WaitingForNextAvailableExecutorOn(name);
}
@Override
......
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
......@@ -30,6 +30,7 @@ import hudson.Functions;
import hudson.markup.MarkupFormatter;
import hudson.model.Descriptor;
import hudson.model.Descriptor.FormException;
import hudson.model.Describable;
import hudson.model.ManagementLink;
import hudson.util.FormApply;
......@@ -55,7 +56,7 @@ import org.kohsuke.stapler.StaplerResponse;
* @author Kohsuke Kawaguchi
*/
@Extension(ordinal = Integer.MAX_VALUE - 210)
public class GlobalSecurityConfiguration extends ManagementLink {
public class GlobalSecurityConfiguration extends ManagementLink implements Describable<GlobalSecurityConfiguration> {
private static final Logger LOGGER = Logger.getLogger(GlobalSecurityConfiguration.class.getName());
......@@ -126,7 +127,7 @@ public class GlobalSecurityConfiguration extends ManagementLink {
@Override
public String getDisplayName() {
return Messages.GlobalSecurityConfiguration_DisplayName();
return getDescriptor().getDisplayName();
}
@Override
......@@ -154,4 +155,22 @@ public class GlobalSecurityConfiguration extends ManagementLink {
return input instanceof GlobalConfigurationCategory.Security;
}
};
/**
* @return
* @see hudson.model.Describable#getDescriptor()
*/
@SuppressWarnings("unchecked")
@Override
public Descriptor<GlobalSecurityConfiguration> getDescriptor() {
return Jenkins.getInstance().getDescriptorOrDie(getClass());
}
@Extension
public static final class DescriptorImpl extends Descriptor<GlobalSecurityConfiguration> {
@Override
public String getDisplayName() {
return Messages.GlobalSecurityConfiguration_DisplayName();
}
}
}
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
......@@ -63,7 +63,7 @@ THE SOFTWARE.
<td class="pane">
<div>
<a href="${p.url}">
${p.updateInfo.title?:p.longName}
${p.updateInfo.displayName?:p.displayName}
</a>
</div>
<div class="excerpt">
......
......@@ -21,7 +21,7 @@
# THE SOFTWARE.
Check\ to\ install\ the\ plugin=Cocher pour installer le plugin
Click\ this\ heading\ to\ sort\ by\ category=Cliquez sur l''''en-t\u00EAte pour classer par cat\u00E9gorie
Click\ this\ heading\ to\ sort\ by\ category=Cliquez sur l''en-t\u00EAte pour classer par cat\u00E9gorie
Download\ now\ and\ install\ after\ restart=T\u00E9l\u00E9charger maintenant et installer apr\u00E8s red\u00E9marrage
Filter=Filtre
Inactive=Inactif
......
......@@ -22,4 +22,4 @@
Dismiss=Annuler
More\ Info=Plus d\u2019informations
blurb=La configuration de votre proxy inverse n''''est pas bonne
blurb=La configuration de votre proxy inverse n''est pas bonne
......@@ -23,7 +23,7 @@
Error\:\ no\ workspace=Erreur: pas de workspace
A\ project\ won't\ have\ any\ workspace\ until\ at\ least\ one\ build\ is\ performed.=Un projet n'a pas de workspace avant un premier build.
There's\ no\ workspace\ for\ this\ project.\ Possible\ reasons\ are\:=Il n'y a pas de workspace existant pour ce projet. Les raisons possibles sont:
The\ project\ was\ renamed\ recently\ and\ no\ build\ was\ done\ under\ the\ new\ name.=Le projet a \u00E9t\u00E9 renomm\u00E9 r\u00E9cemment et aucun build n''''a \u00E9t\u00E9 fait avec ce nouveau nom.
The\ project\ was\ renamed\ recently\ and\ no\ build\ was\ done\ under\ the\ new\ name.=Le projet a \u00E9t\u00E9 renomm\u00E9 r\u00E9cemment et aucun build n''a \u00E9t\u00E9 fait avec ce nouveau nom.
The\ slave\ this\ project\ has\ run\ on\ for\ the\ last\ time\ was\ removed.=La machine esclave sur laquelle ce projet a été lancé pour la dernière fois a été retirée.
li3=Le r\u00E9pertoire de travail ({0}) a \u00E9t\u00E9 d\u00E9plac\u00E9 hors de Jenkins.
text=Lancer un build afin de faire créer un workspace par Jenkins.
......@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
Error:\ Wipe\ Out\ Workspace\ blocked\ by\ SCM=Erreur : La suppression de l''''espace de travail a &eacute;t&eacute; bloqu&eacute;e par le SCM
The\ SCM\ for\ this\ project\ has\ blocked\ this\ attempt\ to\ wipe\ out\ the\ project''s\ workspace.=Le SCM de ce projet a bloqu&eacute; la tentative de suppression de l''''espace de travail de ce projet
Error:\ Wipe\ Out\ Workspace\ blocked\ by\ SCM=Erreur : La suppression de l''espace de travail a &eacute;t&eacute; bloqu&eacute;e par le SCM
The\ SCM\ for\ this\ project\ has\ blocked\ this\ attempt\ to\ wipe\ out\ the\ project''s\ workspace.=Le SCM de ce projet a bloqu&eacute; la tentative de suppression de l''espace de travail de ce projet
......@@ -89,7 +89,7 @@ THE SOFTWARE.
<j:if test="${it.node.assignedLabels.size() gt 1}">
<div>
${%Labels:}
<h2>${%Labels}</h2>
<j:forEach var="entry" items="${it.node.labelCloud}">
<!-- Skip the label for this node -->
<j:if test="${entry.item!=it.node.selfLabel}">
......
......@@ -22,5 +22,5 @@
Data\ obtained=Donn\u00E9es obtenues
Name=Nom
Refresh\ status=Actualiser l''''\u00E9tat
Refresh\ status=Actualiser l''\u00E9tat
Configure=Configurer
......@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
body=Ceci est la fonction principale de Jenkins qui sert \u00E0 builder (construire) votre projet. <br>Vous pouvez int\u00E9grer tous les outils de gestion de version avec tous les syst\u00E8mes de build. <br>Il est m\u00EAme possible d''''''''utiliser Jenkins pour tout autre chose qu''''''''un build logiciel.
body=Ceci est la fonction principale de Jenkins qui sert \u00E0 builder (construire) votre projet. <br>Vous pouvez int\u00E9grer tous les outils de gestion de version avec tous les syst\u00E8mes de build. <br>Il est m\u00EAme possible d''utiliser Jenkins pour tout autre chose qu''un build logiciel.
......@@ -308,8 +308,8 @@ ParametersDefinitionProperty.DisplayName=Parameters
StringParameterDefinition.DisplayName=String Parameter
TextParameterDefinition.DisplayName=Text Parameter
FileParameterDefinition.DisplayName=File Parameter
BooleanParameterDefinition.DisplayName=Boolean Value
ChoiceParameterDefinition.DisplayName=Choice
BooleanParameterDefinition.DisplayName=Boolean Parameter
ChoiceParameterDefinition.DisplayName=Choice Parameter
ChoiceParameterDefinition.MissingChoices=Requires Choices.
RunParameterDefinition.DisplayName=Run Parameter
PasswordParameterDefinition.DisplayName=Password Parameter
......
......@@ -159,13 +159,21 @@ UpdateCenter.Status.ConnectionFailed=\
Permalink.LastBuild=Dernier build
Permalink.LastStableBuild=Dernier build stable
Permalink.LastUnstableBuild=Dernier build instable
Permalink.LastUnsuccessfulBuild=Dernier build non r\u00e9ussi
Permalink.LastSuccessfulBuild=Dernier build avec succ\u00e8s
Permalink.LastFailedBuild=Dernier build en \u00e9chec
ParameterAction.DisplayName=Param\u00e8tres
ParametersDefinitionProperty.DisplayName=Param\u00e8tres
StringParameterDefinition.DisplayName=Param\u00e8tre String
TextParameterDefinition.DisplayName=Param\u00e8tre texte
FileParameterDefinition.DisplayName=Param\u00e8tre fichier
BooleanParameterDefinition.DisplayName=Param\u00e8tre bool\u00e9en
ChoiceParameterDefinition.DisplayName=Param\u00e8tre choix
ChoiceParameterDefinition.MissingChoices=Choix requis.
RunParameterDefinition.DisplayName=Param\u00e8tre d''ex\u00e9cution
PasswordParameterDefinition.DisplayName=Param\u00e8tre "Mot de passe"
Node.Mode.NORMAL=Utiliser cet esclave autant que possible
Node.Mode.EXCLUSIVE=R\u00e9server cette machine pour les jobs qui lui sont attach\u00e9s seulement
......
......@@ -44,7 +44,7 @@ BallColor.Failed=\u041f\u0440\u043e\u0432\u0430\u043b\u0438\u043b\u043e\u0441\u0
BallColor.InProgress=\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435
BallColor.Pending=\u041e\u0436\u0438\u0434\u0430\u0435\u0442
BallColor.Success=\u0423\u0441\u043f\u0435\u0448\u043d\u043e
BallColor.Unstable=\u041d\u0430\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e
BallColor.Unstable=\u041d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e
Computer.Caption=\u041f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u043d\u044b\u0439 \u0443\u0437\u0435\u043b {0}
......
......@@ -21,7 +21,7 @@
# THE SOFTWARE.
Filter\ build\ executors=Filtrer les lanceurs de constructions
Filter\ build\ queue=Filtrer la file d''''attente de constructions
Filter\ build\ queue=Filtrer la file d''attente de constructions
Name=Nom
Description=Description
OK=Ok
......@@ -21,5 +21,5 @@
# THE SOFTWARE.
Dismiss=Cacher
blurb=Jenkins a mis hors ligne des esclaves <a href="{0}/computer/">leur m\u00E9triques d''''\u00E9tat de sant\u00E9</a> \u00E9taient sous les exigences. Si vous ne voulez pas que Jenkins face cela, vous pouvez <a href="{0}/computer/configure">changer la configuration</a>.
blurb=Jenkins a mis hors ligne des esclaves <a href="{0}/computer/">leur m\u00E9triques d''\u00E9tat de sant\u00E9</a> \u00E9taient sous les exigences. Si vous ne voulez pas que Jenkins face cela, vous pouvez <a href="{0}/computer/configure">changer la configuration</a>.
......@@ -22,6 +22,7 @@ l.layout(norefresh:true, permission:app.ADMINISTER, title:my.displayName) {
div(class:"behavior-loading", _("LOADING"))
f.form(method:"post",name:"config",action:"configure") {
set("instance",my);
set("descriptor", my.descriptor);
f.optionalBlock( field:"useSecurity", title:_("Enable security"), checked:app.useSecurity) {
f.entry (title:_("TCP port for JNLP slave agents"), field:"slaveAgentPort") {
......
......@@ -21,5 +21,5 @@
# THE SOFTWARE.
Users=Utilisateurs
blurb=Ces utilisateurs peuvent se logguer sur Jenkins. C''''est le groupe contenant <a href="../people">cette liste</a>, qui contient \u00E9galement les utilisateurs cr\u00E9\u00E9s automatiquement qui ont simplement fait des commits sur certains projets et n''''ont pas d''''acc\u00E8s direct \u00E0 Jenkins.
blurb=Ces utilisateurs peuvent se logguer sur Jenkins. C''est le groupe contenant <a href="../people">cette liste</a>, qui contient \u00E9galement les utilisateurs cr\u00E9\u00E9s automatiquement qui ont simplement fait des commits sur certains projets et n''ont pas d''acc\u00E8s direct \u00E0 Jenkins.
Name=Nom
......@@ -28,7 +28,7 @@ THE SOFTWARE.
<j:when test="${app.slaveAgentPort==-1}">
<div class="error">
${%slaveAgentPort.disabled}
<l:isAdmin><a href="${rootURL}/configure">${%configure.link.text}</a>.</l:isAdmin>
<l:isAdmin><a href="${rootURL}/configureSecurity">${%configure.link.text}</a>.</l:isAdmin>
</div>
</j:when>
<j:when test="${it.offline and !it.temporarilyOffline}">
......
......@@ -21,4 +21,4 @@
# THE SOFTWARE.
slaveAgentPort.disabled=TCP port for JNLP slave agents is disabled.
configure.link.text=Go to system config screen and change it
configure.link.text=Go to security configuration screen and change it
......@@ -24,7 +24,6 @@ Connect\ slave\ to\ Jenkins\ one\ of\ these\ ways\:=Forbind Jenkins til slaver p
launch\ agent=start agent
Connected\ via\ JNLP\ agent.=Forbundet via JNLP agent.
Or\ if\ the\ slave\ is\ headless\:=Eller hvis slaven er hovedl\u00f8s:
configure.link.text=G\u00e5 til system config siden for at \u00e6ndre det
Run\ from\ slave\ command\ line\:=K\u00f8r fra slavens kommandolinje:
slaveAgentPort.disabled=TCP port for JNLP slave agent er sl\u00e5et fra.
Launch\ agent\ from\ browser\ on\ slave=Start agent fra browser p\u00e5 slaven
......@@ -21,7 +21,7 @@
# THE SOFTWARE.
slaveAgentPort.disabled=TCP-Port für JNLP-Slaves ist deaktiviert.
configure.link.text=Zu Systemkonfiguration wechseln und konfigurieren
configure.link.text=Zur globalen Sicherheitskonfiguration wechseln und ändern
Connect\ slave\ to\ Jenkins\ one\ of\ these\ ways\:=Der Slave kann eine Verbindung zum Jenkins-Master mit einer der folgenden Möglichkeiten aufbauen:
launch\ agent=Agent starten
Launch\ agent\ from\ browser\ on\ slave=Agent aus einem Webbrowser auf den Slave starten
......
......@@ -21,7 +21,6 @@
# THE SOFTWARE.
slaveAgentPort.disabled=El puerto TCP para los agentes esclavos via JNLP está deshabilitado.
configure.link.text=Utiliza la utilidad de configuración del sistema (system config) para cambiarlo.
launch\ agent=Lanzar agente
Or\ if\ the\ slave\ is\ headless\:=O si el esclavo no tiene pantalla
Run\ from\ slave\ command\ line\:=Ejecutar desde la línea de comandos del esclavo
......
......@@ -23,7 +23,6 @@
slaveAgentPort.disabled=Le port TCP pour l''esclave JNLP est d\u00E9sactiv\u00E9.
Launch\ agent\ from\ browser\ on\ slave=Lancer l''agent \u00E0 partir du navigateur sur l''esclave
Run\ from\ slave\ command\ line:=Ex\u00E9cuter l''esclave \u00E0 partir de l\u2019interpr\u00E8te de commandes
configure.link.text=Allez \u00E0 l''\u00E9cran de configuration du syst\u00E8me et changez-le
launch\ agent=lancer l''agent
Connect\ slave\ to\ Jenkins\ one\ of\ these\ ways:=Connecter l''esclave \u00E0 Jenkins avec l''une des mani\u00E8res suivantes:
Connected\ via\ JNLP\ agent.=Connect\u00E9 via l\u2019agent JNLP.
......@@ -21,7 +21,6 @@
# THE SOFTWARE.
slaveAgentPort.disabled=JNLP\u30B9\u30EC\u30FC\u30D6\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u7528\u306ETCP\u30DD\u30FC\u30C8\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002
configure.link.text=\u30B7\u30B9\u30C6\u30E0\u306E\u8A2D\u5B9A\u753B\u9762\u3067\u8A2D\u5B9A\u3092\u5909\u66F4\u3059\u308B\u3002
Connect\ slave\ to\ Jenkins\ one\ of\ these\ ways\:=\u6B21\u306E\u3044\u305A\u308C\u304B\u306E\u65B9\u6CD5\u3067\u30B9\u30EC\u30FC\u30D6\u3092Jenkins\u306B\u63A5\u7D9A\u3057\u307E\u3059\u3002
launch\ agent=\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306E\u8D77\u52D5
Launch\ agent\ from\ browser\ on\ slave=\u30B9\u30EC\u30FC\u30D6\u4E0A\u306E\u30D6\u30E9\u30A6\u30B6\u304B\u3089\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3092\u8D77\u52D5
......
......@@ -21,8 +21,6 @@
# THE SOFTWARE.
Or\ if\ the\ slave\ is\ headless\:=Ou, se o slave \u00e9 sem master
# Go to system config screen and change it
configure.link.text=V\u00e1 at\u00e9 a tela de configura\u00e7\u00e3o do sistema e providencie a mudan\u00e7a
Connect\ slave\ to\ Jenkins\ one\ of\ these\ ways\:=Conecta slave ao Jenkins por uma dessas maneiras:
Run\ from\ slave\ command\ line\:=Executar comando de linha pelo slave
launch\ agent=Lan\u00e7ar agente
......
......@@ -21,7 +21,6 @@
# THE SOFTWARE.
slaveAgentPort.disabled=JNLP Slave \u4ee3\u7406\u7a0b\u5f0f\u7684 TCP \u9023\u63a5\u57e0\u5df2\u95dc\u9589\u3002
configure.link.text=\u8acb\u5230\u7cfb\u7d71\u8a2d\u5b9a\u9801\u4fee\u6539
Connect\ slave\ to\ Jenkins\ one\ of\ these\ ways\:=\u53ef\u4ee5\u7528\u4e0b\u9762\u9019\u4e9b\u65b9\u6cd5\u5c07 Slave \u9023\u5230 Jenkins:
launch\ agent=\u555f\u52d5\u4ee3\u7406\u7a0b\u5f0f
Launch\ agent\ from\ browser\ on\ slave=\u5728 Slave \u7684\u700f\u89bd\u5668\u4e0a\u555f\u52d5\u4ee3\u7406\u7a0b\u5f0f
......
......@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
I\ agree\ to\ the\ Java\ SE\ Development\ Kit\ License\ Agreement=J''''approuve l''''accord de licence Java SE Development Kit
I\ agree\ to\ the\ Java\ SE\ Development\ Kit\ License\ Agreement=J''approuve l''accord de licence Java SE Development Kit
Version=Version
......@@ -20,7 +20,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
description=Nombre d''''installations {0} sur ce syst\u00E8me
description=Nombre d''installations {0} sur ce syst\u00E8me
label.add=Ajouter {0}
label.delete=Supprimer {0}
title=Installations {0}
......@@ -22,7 +22,7 @@
Current\ SCM\ Polling\ Activities=Activités en cours de scrutation de la gestion de version
clogged=bouché
No\ polling\ activity\ is\ in\ progress.=Pas d''''activit\u00E9 de scrutation en cours.
No\ polling\ activity\ is\ in\ progress.=Pas d''activit\u00E9 de scrutation en cours.
The\ following\ polling\ activities\ are\ currently\ in\ progress\:=Les activités de scrutation suivantes sont en cours:
Project=Projet
Running\ for=En cours depuis
......@@ -49,7 +49,7 @@ THE SOFTWARE.
${descriptor.calcFillSettings(field,attrs)} <!-- this figures out the 'fillUrl' and 'fillDependsOn' attribute -->
<m:input xmlns:m="jelly:hudson.util.jelly.MorphTagLibrary" ATTRIBUTES="${attrs}" EXCEPT="field items clazz"
autocomplete="off" class="combobox2 settings-input ${attrs.clazz}${attrs.checkUrl!=null ? ' validated' : ''}"
autocomplete="off" class="combobox2 setting-input ${attrs.clazz}${attrs.checkUrl!=null ? ' validated' : ''}"
name="${attrs.name ?: '_.'+attrs.field}"
value="${attrs.value ?: instance[attrs.field]}" />
<!-- TODO consider customizedFields -->
......
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
......@@ -23,6 +23,6 @@
Script\ Console=Console de script
Result=Résultat
Run=Exécuter
description=Vous pouvez saisir ici un <a href="http://groovy.codehaus.org/Home">script Groovy</a> quelconque pour l\u2019ex\u00E9cuter sur le serveur.<br>Utile pour diagnostiquer et r\u00E9soudre des probl\u00E8mes.<br>Utilisez la commande ''''''''println'''''''' pour voir la sortie (si vous utilisez <tt>System.out</tt>, cela ira vers la sortie standard du serveur, qui est plus complexe \u00E0 retrouver.) <br>Par exemple :
description=Vous pouvez saisir ici un <a href="http://groovy.codehaus.org/Home">script Groovy</a> quelconque pour l\u2019ex\u00E9cuter sur le serveur.<br>Utile pour diagnostiquer et r\u00E9soudre des probl\u00E8mes.<br>Utilisez la commande "println" pour voir la sortie (si vous utilisez <tt>System.out</tt>, cela ira vers la sortie standard du serveur, qui est plus complexe \u00E0 retrouver.) <br>Par exemple :
description2=Toutes les classes de tous les plugins sont visibles. <tt>jenkins.*</tt>, <tt>jenkins.model.*</tt>, <tt>hudson.*</tt>, et <tt>hudson.model.*</tt> sont pr\u00E9-import\u00E9es.
文件模式从 100755 更改为 100644
......@@ -215,6 +215,11 @@ THE SOFTWARE.
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>org.samba.jcifs</groupId>
<artifactId>jcifs</artifactId>
<version>1.3.17-kohsuke-1</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
......
......@@ -16,7 +16,7 @@ updateCenter.post(
"name": "tasks",
"requiredCore": "1.264",
"sha1": "wtzlciUKiMcg90H5CTYkGX6+r8Y=",
"title": "Hudson Task Scanner Plug-in",
"title": "Jenkins Task Scanner Plug-in",
"url": "tasks.jpi",
"version": "2.23"
},
......
文件模式从 100755 更改为 100644
......@@ -116,6 +116,9 @@ public class UpdateSiteTest {
assertEquals(new HashSet<String>(Arrays.asList("tasks", "dummy")), data.plugins.keySet());
assertEquals(new URL(url, "tasks.jpi").toString(), data.plugins.get("tasks").url);
assertEquals("http://nowhere.net/dummy.hpi", data.plugins.get("dummy").url);
UpdateSite.Plugin tasksPlugin = data.plugins.get("tasks");
assertEquals("Wrong name of plugin found", "Task Scanner Plug-in", tasksPlugin.getDisplayName());
}
@Test public void updateDirectlyWithJson() throws Exception {
......
......@@ -38,11 +38,13 @@ import hudson.matrix.AxisList;
import hudson.matrix.LabelAxis;
import hudson.matrix.MatrixProject;
import hudson.model.Queue.Task;
import hudson.model.Node.Mode;
import org.jvnet.hudson.test.Email;
import org.w3c.dom.Text;
import static hudson.model.Messages.Hudson_ViewName;
import hudson.slaves.DumbSlave;
import hudson.util.HudsonIsLoading;
import java.io.File;
import java.io.IOException;
......@@ -301,6 +303,27 @@ public class ViewTest {
assertContainsNodes(view3, slave0, slave1, slave2, slave3, slave4);
}
@Test
@Bug(21474)
public void testGetComputersNPE() throws Exception {
ListView view = listView("aView");
view.filterExecutors = true;
DumbSlave dedicatedSlave = j.createOnlineSlave();
dedicatedSlave.setMode(Mode.EXCLUSIVE);
view.add(j.createFreeStyleProject());
FreeStyleProject tiedJob = j.createFreeStyleProject();
tiedJob.setAssignedNode(dedicatedSlave);
view.add(tiedJob);
DumbSlave notIncludedSlave = j.createOnlineSlave();
notIncludedSlave.setMode(Mode.EXCLUSIVE);
assertContainsNodes(view, j.jenkins, dedicatedSlave);
assertNotContainsNodes(view, notIncludedSlave);
}
private void assertContainsNodes(View view, Node... slaves) {
for (Node slave: slaves) {
assertTrue(
......
......@@ -90,10 +90,26 @@ foreach (@files) {
## print statistics
my $tdone = $tkeys - $tmissing - $tunused - $tempty - $tsame - $tnojenkins;
my $pdone = 100;
my $pmissing = 0;
my $punused = 0;
my $pempty = 0;
my $psame = 0;
my $pnojenkins = 0;
if ($tkeys != 0) {
$pdone = $tdone/$tkeys*100;
$pmissing = $tmissing/$tkeys*100;
$punused = $tunused/$tkeys*100;
$pempty = $tempty/$tkeys*100;
$psame = $tsame/$tkeys*100;
$pnojenkins = $tnojenkins/$tkeys*100;
}
printf ("\nTOTAL: Files: %d Keys: %d Done: %d(%.2f\%)\n Missing: %d(%.2f\%) Orphan: %d(%.2f\%) Empty: %d(%.2f\%) Same: %d(%.2f\%) NoJenkins: %d(%.2f\%)\n\n",
$tfiles, $tkeys, $tdone,
$tdone/$tkeys*100, $tmissing, $tmissing/$tkeys*100, $tunused, $tunused/$tkeys*100,
$tempty, $tempty/$tkeys*100, $tsame, $tsame/$tkeys*100, $tnojenkins, $tnojenkins/$tkeys*100);
$tfiles, $tkeys, $tdone, $pdone,
$tmissing, $pmissing, $tunused, $punused,
$tempty, $pempty, $tsame, $psame, $tnojenkins, $pnojenkins);
## end
exit();
......@@ -190,7 +206,7 @@ sub processFile {
removeUnusedKeys($ofile, %keys) if ($remove && $unused ne "");
# convert the language file to ISO or ACII which are
# the charsets which Hudson supports right now
# the charsets which Jenkins supports right now
convert($ofile, $toiso, $toascii) if ( -f $ofile );
}
......@@ -258,7 +274,7 @@ sub loadPropertiesFile {
s/[\r\n]+//;
$ret{$key} .= " \n# $1" if ($cont && /\s*(.*)[\\\s]*$/);
if (/^([^#\s].*?[^\\])=(.*)[\s\\]*$/) {
($key, $val) = ($1, $2);
($key, $val) = (trim($1), trim($2));
$ret{$key}=$val;
}
$cont = (/\\\s*$/) ? 1 : 0;
......@@ -359,10 +375,19 @@ sub printLicense {
}
}
# trim function to remove whitespace from the start and end of the string
sub trim($)
{
my $string = shift;
$string =~ s/^\s+//;
$string =~ s/\s+$//;
return $string;
}
### Usage
sub usage {
print "
Translation Tool for Hudson
Translation Tool for Jenkins
Usage: $0 --lang=xx [options] [dir]
......
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册