Jenkins奇技淫巧 — 問題篇

\color{blue}{Jenkins系列文章還在更新和完善中,有什么疑問歡迎留言}

\color{blue}{目錄}

Jenkins奇技淫巧 — 安裝篇(mac)
Jenkins奇技淫巧 — 配置篇
Jenkins奇技淫巧 — 安全篇
Jenkins奇技淫巧 — 發(fā)送郵件篇
Jenkins奇技淫巧 — 全局變量篇
Jenkins奇技淫巧 — 新建任務(wù)篇
Jenkins奇技淫巧 — 插件篇
Jenkins奇技淫巧 — 問題篇
Jenkins奇技淫巧 — 命令篇
Jenkins奇技淫巧 — 環(huán)境配置篇(Android自動(dòng)化構(gòu)建)
Jenkins奇技淫巧 — 參數(shù)化構(gòu)建篇(Android自動(dòng)化構(gòu)建)
Jenkins奇技淫巧 — 第一次實(shí)戰(zhàn)篇(Android自動(dòng)化構(gòu)建)
Jenkins奇技淫巧 — Python打包篇(Android自動(dòng)化構(gòu)建)

Jenkins奇技淫巧 — Python發(fā)送郵件和上傳蒲公英(Android自動(dòng)化構(gòu)建)

Jenkins奇技淫巧 — 樂固,多渠道打包篇(Android自動(dòng)化構(gòu)建)
Jenkins奇技淫巧 — 節(jié)點(diǎn)管理篇
Jenkins奇技淫巧 — 優(yōu)秀文章篇


mac由于用戶權(quán)限導(dǎo)致的構(gòu)建失敗問題

  • 找不到SDK路徑

    1. 檢查Jenkins工作空間,自己clone下來的Android工程是否存在"local.properties"文件,因?yàn)檫@里面有sdk,ndk的配置路徑。同時(shí)保證這里面的路徑在你的電腦能找到。

    2. 如果存在"local.properties"文件,但是需要在構(gòu)建過程改變"local.properties"文件里所指的路徑,那該怎么辦?請(qǐng)查看Jenkins奇技淫巧 — 插件篇(Text File Operations)

    3. 如果上面都設(shè)置好了,發(fā)現(xiàn)還是有問題,這時(shí)候有可能就是mac多用戶引起的。

      • 為什么會(huì)存在多個(gè)用戶,明明我電腦只有一個(gè)用戶
        在 MacOS 上使用dmg安裝包安裝完 Jenkins 之后,發(fā)了 Jenkins 自動(dòng)在系統(tǒng)里新建了一個(gè)名為jenkins的用戶。默認(rèn)的,Jenkins 程序里的自動(dòng)化構(gòu)建操作都是以這個(gè)用戶身份來進(jìn)行的,所以有時(shí)會(huì)出現(xiàn)一些權(quán)限問題。

      • 原因
        由于你之前sdk安裝在平時(shí)登陸的用戶上,而Jenkins自動(dòng)化構(gòu)建又是使用的jenkins用戶,所以就算你自定的sdk路徑正確,但是jenkins用戶是訪問不到其它用戶的目錄和配置的。

      • 怎么辦
        解決方法就是修改 Jenkins 配置文件,把 Jenkins 運(yùn)行的默認(rèn)賬戶改成平時(shí)用的賬戶。

        1. 命令修改

          停止Jenkins
          sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
          
          修改Group和User
          <用戶名>填寫你的MacOS用戶名,不知道的可以在命令行使用whoami查看,不需要尖括號(hào)
          sudo vim +1 +/daemon +’s/daemon/staff/’ +/daemon +’s/daemon/<用戶名> +wq org.jenkins-ci.plist
          可能相應(yīng)文件夾的權(quán)限
          sudo chown -R <用戶名>:staff /Users/Shared/Jenkins/
          sudo chown -R <用戶名>:staff /var/log/jenkins/
          啟動(dòng)Jenkins
          sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
          

          如修改后不起作用,請(qǐng)用第二種方式,查看配置文件是否修改成功。

        2. 修改配置文件

           1. 停止jenkins
              sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
            2. 修改配置文件
              sudo vim /Library/LaunchDaemons/org.jenkins-ci.plist
                  <dict>
                      <key>GroupName</key>
                      <string>daemon</string> 修改成自己登陸的用戶名
                      <key>KeepAlive</key>
          
                      <key>UserName</key>
                      <string>pengdaosong</string>修改成自己登陸的用戶名
                      <key>SessionCreate</key>
                  </dict>
          
            3. 給予權(quán)限
                sudo chown -R pengdaosong:wheel /Users/Shared/Jenkins/
                sudo chown -R pengdaosong:wheel /var/log/jenkins/
            4. 啟動(dòng)jenkins
                sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
          
    • 其它問題排除方法
      如果上面問題解決后,發(fā)現(xiàn)還是不能成功,從控制臺(tái)日志中又不能獲得到可用的信息,這時(shí)候,我們可以檢查一下自己的工程是否達(dá)到了可構(gòu)建的狀態(tài)。比如拿Android工程來說,我們完全可以在工作空間的工程目錄下,通過命令行執(zhí)行g(shù)radlew assembleDebug命令來檢查是否可以成功構(gòu)建,如果這里都不行,那么多半是工程本身的問題。
      1. 命令行執(zhí)行g(shù)radlew assembleDebug報(bào)錯(cuò)。在上面的問題沒有解決之前,這個(gè)目錄是Jenkins用戶擁有的,所以自己電腦登陸的用戶是沒有權(quán)限限制的,所以可以用sudo來執(zhí)行。

mac電腦重啟后,Jenkins無法訪問,提示連接被拒絕

在“mac由于用戶權(quán)限導(dǎo)致的構(gòu)建失敗問題”問題解決后,重啟Jenkins服務(wù),發(fā)現(xiàn)不能訪問的情況,請(qǐng)先停止服務(wù),修改下面文件的權(quán)限,當(dāng)然你可以先看看這些文件是否可以被訪問,如果可以,者不是這些文件訪問權(quán)限導(dǎo)致的問題。

修改文件權(quán)限

sudo chown -R userName /Users/Shared/Jenkins
sudo chown -R userName /var/log/jenkins

重啟Jenkins服務(wù)。

日志過大,設(shè)置日志級(jí)別,重啟Jenkins后,日志級(jí)別還原

首先感謝評(píng)論區(qū)提出的問題,由于我沒有遇到這個(gè)問題,所以沒有太注意日志級(jí)別的設(shè)置。經(jīng)過自己嘗試后發(fā)現(xiàn),當(dāng)設(shè)置日志級(jí)別后,如果重啟jenkins服務(wù),之前設(shè)置的日志級(jí)別會(huì)背還原。經(jīng)過查看相關(guān)資料和結(jié)合自己的推想,很可能日志級(jí)別的設(shè)置并沒有永久被保存。那么怎么辦呢,那就在每次啟動(dòng)的時(shí)候自動(dòng)設(shè)置日志級(jí)別。

  • 沒有設(shè)置前


    日志級(jí)別1.png
  • unbtun系統(tǒng)
    1. cd到/var/lib/jenkins目錄(mac的路徑在/Users/Shared/Jenkins/home下,但是mac我沒有測(cè)試,因?yàn)槲襪ac的Jenkins啟動(dòng)不起來了)
    2. 新建 init.groovy文件,文件內(nèi)容如下,可以根據(jù)自己需求更改,也可以進(jìn)行 其它設(shè)置。
    import java.util.logging.Level
    import java.util.logging.Logger
    
    Logger.getLogger("").setLevel(Level.SEVERE)
    Logger.getLogger("org.apache.sshd").setLevel(Level.SEVERE)
    Logger.getLogger("winstone").setLevel(Level.SEVERE)
    
    日志級(jí)別可以在Android工程搜索Level類,可以看到具體的解釋。
    1. 重啟Jenkins(我是停止后重啟)
    2. 效果:
      日志級(jí)別設(shè)置2.png

      參考:https://qamag.net/stop-that-huge-jenkins-log/
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容