小编sch*_*rer的帖子

在Jenkins控制台输出中回声

我正在按照指南如何使用Jenkins签署Android apk.我已经使用KSTOREPWD和KEYPWD参与了Jenkins的工作.Jenkins的作业配置(Build-> Execute shell)的一部分是获取这些参数并将它们存储为环境变量:

export KSTOREPWD=${KSTOREPWD}
export KEYPWD=${KEYPWD}
...
./gradlew assembleRelease
Run Code Online (Sandbox Code Playgroud)

问题是当构建结束时,任何人都可以访问构建"控制台输出"并查看输入的密码; 部分输出:

08:06:57 + export KSTOREPWD=secretStorePwd
08:06:57 + KSTOREPWD=secretStorePwd
08:06:57 + export KEYPWD=secretPwd
08:06:57 + KEYPWD=secretPwd
Run Code Online (Sandbox Code Playgroud)

所以我想在export命令输出之前抑制回声并在export命令后重新启用echo .

echo jenkins android-keystore android-gradle-plugin

54
推荐指数
2
解决办法
4万
查看次数

在Docker中查找数据卷

我正在尝试学习docker,我对数据量实际存在的位置感到困惑.

我正在使用Docker Desktop for Windows.(Windows 10)

在文档中,他们说在对象上运行docker inspect将为您提供源代码:https://docs.docker.com/engine/tutorials/dockervolumes/#locating-a-volume

$ docker inspect web

"Mounts": [
    {
        "Name": "fac362...80535",
        "Source": "/var/lib/docker/volumes/fac362...80535/_data",
        "Destination": "/webapp",
        "Driver": "local",
        "Mode": "",
        "RW": true,
        "Propagation": ""
    }
]
Run Code Online (Sandbox Code Playgroud)

但我没有看到这个,我得到以下内容:

$ docker inspect blog_postgres-data
[
    {
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/blog_postgres-data/_data",
        "Name": "blog_postgres-data",
        "Options": {},
        "Scope": "local"
    }
]
Run Code Online (Sandbox Code Playgroud)

谁能帮我?我只是想知道我的数据量实际存在于我的主机上的位置?如果是这样,我怎么能找到它的路径?

docker docker-for-windows docker-desktop

44
推荐指数
12
解决办法
3万
查看次数

Android:如何在特定区域设置中获取字符串而不更改当前区域设置

使用案例:记录显示给用户的错误消息.

但是,您不希望日志中的消息依赖于用户设备的区域设置.另一方面,您不希望仅为您的(技术)日志记录更改用户设备的区域设置.这可以实现吗?我在stackoverflow上找到了几个可能的解决方案:

但是,它们都会导致更改设备的区域设置(直到下一次配置更改).

无论如何,我目前的解决方法是这样的:

public String getStringInDefaultLocale(int resId) {
    Resources currentResources = getResources();
    AssetManager assets = currentResources.getAssets();
    DisplayMetrics metrics = currentResources.getDisplayMetrics();
    Configuration config = new Configuration(
            currentResources.getConfiguration());
    config.locale = DEFAULT_LOCALE;
    /*
     * Note: This (temporiarily) changes the devices locale! TODO find a
     * better way to get the string in the specific locale
     */
    Resources defaultLocaleResources = new Resources(assets, metrics,
            config);
    String string = defaultLocaleResources.getString(resId);
    // Restore device-specific locale
    new …
Run Code Online (Sandbox Code Playgroud)

android locale localization android-resources

34
推荐指数
2
解决办法
2万
查看次数

33
推荐指数
3
解决办法
2万
查看次数

在android中通过extras传递数据的命名约定

当传递诸如Intent.putExtra("myName",myName)之类的额外内容时,额外名称的约定是什么?

即:如果在两个活动之间传递数据,两者都会在id"myName"下放置/提取数据,但是我应该在任何地方硬编码"myName",还是将值保存在R.values.string中?

android android-intent

26
推荐指数
1
解决办法
7079
查看次数

从同一存储库加载Jenkins管道共享库

TL; DR有没有办法将代码导入Jenkinsfile 本地存储库(除了load步骤)?

为什么?

我已经体验到,对于复杂的构建而言,它Jenkinsfile变得笨重而且不易维护.
既然构建作业是代码,那么使用与其他代码相同的方法会很棒.也就是说,我想将它分成更小(更易于维护)的单元并对它们进行单元测试.

我尝试了什么

  • 共享库:允许将Jenkins管道逻辑划分为单独模块中的较小文件,甚至可以对其进行单元测试.
    但是,它们需要位于不同的存储库中(如果不在GitHub上)必须配置到Jenkins中.
  • load步骤:允许从存储库加载groovy 脚本.
    但是,文件必须是脚本而不是"完整"的groovy类,这使得很多文件或类很难相互依赖.例如继承是不可能的.
    此外,在Jenkins作业上进行重放时不会显示这些文件,这使得它们难以开发和调试.

我的问题

  • 有没有办法(或解决方法)在同一个存储库中创建共享库,Jenkinsfile并将此库导入Jenkinsfile
  • 或者还有其他方法我还没试过呢?

示例目录结构

与为共享库描述的目录结构类似,我希望在单个存储库中具有以下内容.

(root)
+- someModule
|   +- ...
+- jenkins           # Classes/Scripts used by Jenkins in a separate module
|   +- src                       # Groovy source files
|      +- org
|          +- foo
|              +- Bar.groovy     # for org.foo.Bar class
|   +- test …
Run Code Online (Sandbox Code Playgroud)

groovy shared-libraries jenkins jenkins-pipeline

25
推荐指数
4
解决办法
1万
查看次数

将tmux默认更改为zsh

当tmux打开时,我希望它默认使用zsh而不是bash.我怎么做到这一点?

zsh tmux

21
推荐指数
2
解决办法
2万
查看次数

为多个java项目设置sonar-runner

我正在尝试运行sonar-runner来一次分析多个Java项目.根据文档,只需sonar-project.properties为每个项目创建一个文件.但是我不清楚我在哪里放置这些sonar-project.properties文件.

我试图在$SONAR_RUNNER_HOME/conf文件夹中添加多个.properties文件,但是跑步者似乎没有拿起它们.它只能看到sonar-project.properties文件.

关于如何为多个项目运行声纳 - 跑步者的任何建议?

java sonarqube

15
推荐指数
2
解决办法
2万
查看次数

GZIPOutputStream:提高压缩级别

java.util.zip.GZIPOutputStream没有为其底层的压缩级别提供构造函数参数或setter Deflater.

有办法解决这个问题,如所描述这里,例如:

GZIPOutputStream gzip = new GZIPOutputStream(output) {
    {
        this.def.setLevel(Deflater.BEST_COMPRESSION);
    }
};
Run Code Online (Sandbox Code Playgroud)

我使用此GZIPped 10G文件,与使用预设相比,它的大小没有减少一位 DEFAULT_COMPRESSION.

这个问题答案是,在某些情况下,设置级别可能无法按计划运行.为了确保,我还尝试创建一个新的:Deflater

this.def = new Deflater(Deflater.BEST_COMPRESSION, true);
Run Code Online (Sandbox Code Playgroud)

但是文件大小不会减少......

他们没有提供访问Deflater级别的原因吗?

或者上面的代码示例有问题吗?

deflater级别是否有效?

编辑:感谢您的评论.

  1. 文件可以进一步压缩吗?

    它是一个UTF-8文本文件,使用默认压缩从10G压缩到10M.因此,在不知道压缩级别的细节的情况下,我估计它可以进一步压缩.

  2. DEFAULT_COMPRESSION和之间的时差BEST_COMPRESSION

    我没有时间创造真正可靠的数据.但是我执行了每个压缩级别大约五次的代码,两者大约需要相同的时间(2分钟+/- 5秒).

  3. 文件大小gzip -v9?gzip创建的文件比java创建的文件小15KB.因此,对于我的具体用例,不值得再深入研究这个主题.

但是,上述三个基本问题仍然存在.有没有人使用更高的压缩级别成功减少文件GZIPOutputStream

java compression deflate

14
推荐指数
2
解决办法
1万
查看次数

如何允许使用出口网络策略访问kubernetes api?

带有kubectl get pod命令的Init容器用于获取其他pod的就绪状态.

打开Egress NetworkPolicy后,init容器无法访问Kubernetes API : Unable to connect to the server: dial tcp 10.96.0.1:443: i/o timeout. CNI是Calico.

尝试了几个规则,但它们都没有工作(服务和主机主机IP,不同的CIDR掩码):

...
  egress:
  - to:
    - ipBlock:
        cidr: 10.96.0.1/32
    ports:
    - protocol: TCP
      port: 443
...
Run Code Online (Sandbox Code Playgroud)

或使用命名空间(默认和kube系统命名空间):

...
  egress:
  - to:
    - namespaceSelector:
        matchLabels:
          name: default
    ports:
    - protocol: TCP
      port: 443
...
Run Code Online (Sandbox Code Playgroud)

看起来ipBlock规则只是不起作用,命名空间规则不起作用,因为kubernetes api是非标准pod.

可以配置吗?Kubernetes是1.9.5,Calico是3.1.1.

kubernetes project-calico kubernetes-networkpolicy

12
推荐指数
1
解决办法
826
查看次数