<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Programmer:)</title>
    <link>https://ryeggg.tistory.com/</link>
    <description>슥슥 메모..슥슥..</description>
    <language>ko</language>
    <pubDate>Mon, 15 Jun 2026 21:45:38 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>ryeggg</managingEditor>
    <image>
      <title>Programmer:)</title>
      <url>https://tistory1.daumcdn.net/tistory/3201949/attach/fb45068eae6e4e50a6486c4ea4e87c2e</url>
      <link>https://ryeggg.tistory.com</link>
    </image>
    <item>
      <title>OSX .app 코드사이닝 젠킨스로 작업 전 터미널 테스트</title>
      <link>https://ryeggg.tistory.com/167</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;코드사이닝..공증...너무 헷갈료...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.app 코드사이닝 진행 순서&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;983&quot; data-origin-height=&quot;650&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n10wI/btsOe1cWYoY/lzMV3Y1u7GvoVKKuApvyX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n10wI/btsOe1cWYoY/lzMV3Y1u7GvoVKKuApvyX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n10wI/btsOe1cWYoY/lzMV3Y1u7GvoVKKuApvyX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn10wI%2FbtsOe1cWYoY%2FlzMV3Y1u7GvoVKKuApvyX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;686&quot; height=&quot;454&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;983&quot; data-origin-height=&quot;650&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;xcode에 해당 개발자 계정 로그인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[Manage Certificates...] -&amp;gt; [Developer ID Application] 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Developer ID Application : .app을 코드사이닝 하기 위해 필요한 서명, 공증 전 필수 서명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Developer ID Installer : .pkg 인스톨러 공증 전 필수 서명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널 코드사이닝 명령어&lt;/p&gt;
&lt;pre id=&quot;code_1748413335006&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;codesign --deep --force --sign &quot;[Developer ID Application: Your Name (TEAMID)]&quot; /경로/앱이름.app&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;184&quot; data-start=&quot;135&quot;&gt;--deep : 앱 내에 포함된 모든 프레임워크, 라이브러리 등도 재귀적으로 서명&lt;/li&gt;
&lt;li data-end=&quot;213&quot; data-start=&quot;185&quot;&gt;--force : 기존 서명을 강제로 덮어씀&lt;/li&gt;
&lt;li data-end=&quot;236&quot; data-start=&quot;214&quot;&gt;--verify : 서명 후 검증&lt;/li&gt;
&lt;li data-end=&quot;258&quot; data-start=&quot;237&quot;&gt;--verbose : 상세 출력&lt;/li&gt;
&lt;li data-end=&quot;342&quot; data-start=&quot;259&quot;&gt;-s &quot;식별자&quot; : 서명에 사용할 인증서 이름 (예: &quot;Developer ID Application: Your Name (TEAMID)&quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드사이닝 확인 방법&lt;/p&gt;
&lt;pre id=&quot;code_1748413460533&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;codesign --verify --deep --verbose=2 /경로/YourApp.app&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DEV/Jenkins</category>
      <author>ryeggg</author>
      <guid isPermaLink="true">https://ryeggg.tistory.com/167</guid>
      <comments>https://ryeggg.tistory.com/167#entry167comment</comments>
      <pubDate>Wed, 28 May 2025 15:43:00 +0900</pubDate>
    </item>
    <item>
      <title>[C#] 8.0 switch표현식</title>
      <link>https://ryeggg.tistory.com/166</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;if문을 3개이상 쓴다면 switch문이 가독성 및 성능이 더 좋다는걸 인지하며 사용중이지만&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;작성하며 참 귀찮다고 생각하던 참이였다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;switch 표현식은 참 아름답구나!&lt;/p&gt;
&lt;pre id=&quot;code_1740645629617&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bool updown
updown = mode switch
                    {
                        State.A =&amp;gt; !A_updown,
                        State.B =&amp;gt; !B_updown,
                        _ =&amp;gt; !C_updown
                    };&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;C#8.0 , .NET Core 3.0 이상 또는 .NET 5 이상에서 지원&lt;/b&gt;&lt;/p&gt;</description>
      <category>공부(개발)/c#</category>
      <author>ryeggg</author>
      <guid isPermaLink="true">https://ryeggg.tistory.com/166</guid>
      <comments>https://ryeggg.tistory.com/166#entry166comment</comments>
      <pubDate>Thu, 27 Feb 2025 17:43:22 +0900</pubDate>
    </item>
    <item>
      <title>[Unity] BuildSetting &amp;gt; Architecture &amp;gt; Apple silicon</title>
      <link>https://ryeggg.tistory.com/165</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;젠킨스로 빌드파이프라인 만들어서 패치중 MacOS빌드시 apple silicon + intel 지원기능을 추가해야했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무리 api문서를 찾아도 나오지 않더니...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1721960795127&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;EditorUserBuildSettings.SetPlatformSettings(&quot;Standalone&quot;, &quot;OSXUniversal&quot;, &quot;Architecture&quot;, &quot;x64ARM64&quot;);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정말 꽁꽁 숨겨놓앗구나...ㅎ.ㅎ...&lt;/p&gt;</description>
      <category>DEV/Unity</category>
      <author>ryeggg</author>
      <guid isPermaLink="true">https://ryeggg.tistory.com/165</guid>
      <comments>https://ryeggg.tistory.com/165#entry165comment</comments>
      <pubDate>Fri, 26 Jul 2024 11:26:51 +0900</pubDate>
    </item>
    <item>
      <title>[Jenkins] 공유 라이브러리 심화</title>
      <link>https://ryeggg.tistory.com/164</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1721108881921&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Jenkins] 공유 라이브러리&quot; data-og-description=&quot;파이프라인 간소화를 위해 조사하던 중 공유라이브러리 라는게 눈에 띄었다.작업진행하면서 기록남기는 중이라 삽질내용이 들어갈 수 있는 점 주의하자.&amp;nbsp;step1. 일단 깃에 저장소를 하나 판다.&quot; data-og-host=&quot;ryeggg.tistory.com&quot; data-og-source-url=&quot;https://ryeggg.tistory.com/162&quot; data-og-url=&quot;https://ryeggg.tistory.com/162&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/kpTdO/hyWzAjHevK/kEdJhMZfy0fNbAYjuytKtK/img.png?width=551&amp;amp;height=296&amp;amp;face=0_0_551_296,https://scrap.kakaocdn.net/dn/R8e7M/hyWzETZE2B/dIew0Wqkv6t5KZnRMGP5V1/img.png?width=551&amp;amp;height=296&amp;amp;face=0_0_551_296,https://scrap.kakaocdn.net/dn/cZrFZf/hyWCOtQtUM/Dgvv5urkU4H2SUk4DeZY6k/img.jpg?width=1013&amp;amp;height=1266&amp;amp;face=431_627_559_767&quot;&gt;&lt;a href=&quot;https://ryeggg.tistory.com/162&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ryeggg.tistory.com/162&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/kpTdO/hyWzAjHevK/kEdJhMZfy0fNbAYjuytKtK/img.png?width=551&amp;amp;height=296&amp;amp;face=0_0_551_296,https://scrap.kakaocdn.net/dn/R8e7M/hyWzETZE2B/dIew0Wqkv6t5KZnRMGP5V1/img.png?width=551&amp;amp;height=296&amp;amp;face=0_0_551_296,https://scrap.kakaocdn.net/dn/cZrFZf/hyWCOtQtUM/Dgvv5urkU4H2SUk4DeZY6k/img.jpg?width=1013&amp;amp;height=1266&amp;amp;face=431_627_559_767');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[Jenkins] 공유 라이브러리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;파이프라인 간소화를 위해 조사하던 중 공유라이브러리 라는게 눈에 띄었다.작업진행하면서 기록남기는 중이라 삽질내용이 들어갈 수 있는 점 주의하자.&amp;nbsp;step1. 일단 깃에 저장소를 하나 판다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ryeggg.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작업해두었던 파이프라인코드를 전부 라이브러리 호출방식으로 변경했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;젠킨스 접속해서 코드를 하나하나 다 바꿔주는 것도 귀찮았고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번처럼 컴퓨터 포맷후 경로 달라지는 부분과&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 파이프라인에서 같은 기능의 job을 다시 구성해서 쓰는게 너무 불필요한 작업이라고 생각했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 구성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-경로관리&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-실질적인 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-파이프라인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 총 3개로 이루어졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;경로관리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;src/org/name/Paths.groovy&lt;/p&gt;
&lt;pre id=&quot;code_1721108374087&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package org.name

class Paths{
    static final String unity_2019_4_3f1 = &quot;/Applications/Unity/Hub/Editor/2019.4.3f1/Unity.app/Contents/MacOS/Unity&quot;
    static final String unity_2019_4_40f1 = &quot;/Applications/Unity/Hub/Editor/2019.4.40f1/Unity.app/Contents/MacOS/Unity&quot;
    static final String xcode = &quot;/Applications/Xcode.app&quot;
    static final String desktop = &quot;/Users/imac27/Desktop&quot;

    static final String git_repository = &quot;/Users/imac27/git_repository&quot;


    static final String workspace = &quot;/Volumes/LaCie/Jenkins/workspace&quot;
    static final String workspace_mts = &quot;/Users/imac27/workspace_mts&quot;

    static final String googleDrive = &quot;/Volumes/LaCie/Build&quot;



    static String getWinVersionPath(String connectServer) {
        return &quot;Application/Desktop/${connectServer}&quot;
    }
    static String getWin32Path(String connectServer) {
        return &quot;Application/Desktop/${connectServer}/32bit&quot;
    }

    static String getWin64Path(String connectServer) {
        return &quot;Application/Desktop/${connectServer}/64bit&quot;
    }

    static String getOSXVersionPath(String connectServer) {
        return &quot;Application/Desktop_osx/${connectServer}&quot;
    }
    static String getOSXPath(String connectServer) {
        return &quot;Application/Desktop_osx/${connectServer}/64bit&quot;
    }




    static String getSshDirectoryWinVersionPath(String connectServer) {
        return &quot;desktop/Windows/${connectServer}/Version&quot;
    }

    static String getSshDirectoryOSXVersionPath(String connectServer) {
        return &quot;desktop/OSX/${connectServer}/Version&quot;
    }


    static String getSshDirectoryWin32Path(String connectServer) {
        return &quot;desktop/Windows/${connectServer}/Client32&quot;
    }

    static String getSshDirectoryWin64Path(String connectServer) {
        return &quot;desktop/Windows/${connectServer}/Client&quot;
    }

    static String getSshDirectoryOSXPath(String connectServer) {
        return &quot;desktop/OSX/${connectServer}/Client&quot;
    }




    static String getAndroidResourcePath(String target, String connectServer, String company) {
        return &quot;${workspace_mts}/Application/Mobile/Build/${target}/${connectServer}/${company}&quot;
    }

    static String getSshDirectoryAndroidResourcePath(String target, String connectServer, String company) {
        return &quot;mobile/${target}/${connectServer}/${company}/Resource&quot;
    }

    static String getSshDirectoryAndroidVersionPath(String target, String connectServer, String company) {
        return &quot;mobile/${target}/${connectServer}/${company}/Version&quot;
    }

    
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실직적인 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;var/shareCode.groovy&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1721108647551&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;package vars
import org.name.Paths

def call_Paths() {
    return new Paths()
}

def info(message) {
    echo &quot;INFO: ${message}&quot;
}

def warning(message) {
    echo &quot;WARNING: ${message}&quot;
}


def download_gitlab(String repository, String branch) {
    echo &quot;download_gitlab ${branch}&quot;

    script{
            dir(repository) {
                git branch: &quot;${branch}&quot;, url: 'git@git.~~~.git'
            }
        }
}

//폴더 삭제
def cleanFolders(String pipelineName) {
    echo &quot;Folder ReFactoring&quot;
    def paths = new Paths()

    sh (script : &quot;&quot;&quot;
    if [ -e ${paths.workspace}/${pipelineName}/Application/Desktop/Build ]; then
       rm -rf ${paths.workspace}/${pipelineName}/Application/Desktop/Build
    fi
    &quot;&quot;&quot;)
}


//unity build
def buildHTS_Win(String pipelineName, String server, String company, String at) {
    echo &quot;buildHTS_Win ${server} ${at}&quot;
    def paths = new Paths()

    sh (script : &quot;&quot;&quot;
    ${paths.unity_2019_4_3f1} \
    -quit \
    -batchmode \
    -projectPath ${paths.workspace}/${pipelineName}/Application/Desktop \
    -executeMethod ProjectBuild.BuildStartInJenkins \
    -buildTarget StandaloneWindows \
    -ConnectServer ${server} \
    -Company ${company} \
    -at ${at}
    &quot;&quot;&quot;)
}

//Addressable build
def buildMTS_Addressable(String target, String server, String company) {
    echo &quot;buildMTS_Addressable ${server}&quot;
    def paths = new Paths()

    sh (script : &quot;&quot;&quot;
    ${paths.unity_2019_4_40f1} \
    -quit \
    -batchmode \
    -projectPath ${paths.workspace_mts}/Application/Mobile \
    -executeMethod ProjectBuild.AddressableInJenkins \
    -buildTarget ${target}\
    -ConnectServer ${server} \
    -Company ${company}
    &quot;&quot;&quot;)
}


//SFTP 전송
def sendSFTP(String originPath, String remotePath) {
    echo &quot;sendSFTP originPath: ${originPath} // remotePath : ${remotePath}&quot;

    def paths = new Paths()


     script{
            sshPublisher(publishers: [sshPublisherDesc(configName: '~~', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, 
            makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: &quot;&quot;&quot;${remotePath}&quot;&quot;&quot;, remoteDirectorySDF: false, 
            removePrefix: &quot;&quot;&quot;${originPath}&quot;&quot;&quot;, sourceFiles: &quot;&quot;&quot;${originPath}/**&quot;&quot;&quot;)], 
            usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
        }
}


//구글마켓 업로드
def upload_googleStore(String releaseName) {
    echo &quot;upload_googleStore&quot;
    script{
            androidApkUpload filesPattern: '**/*.aab', 
            googleCredentialsId: '~~~',
            releaseName: &quot;&quot;&quot;${releaseName}&quot;&quot;&quot;,
            rolloutPercentage: '100', trackName: 'internal'
        }
}


//텔레그램 전송
def sendTelegram(String content) {
    echo &quot;sendTelegram&quot;

    sh (script : &quot;&quot;&quot;
    curl -X POST \
    -d chat_id=~~ \
    -d parse_mode=HTML \
    -d text=&quot;${content}&quot; \
    https://api.telegram.org/bot~~~~~/sendMessage
    &quot;&quot;&quot;)

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이프라인에서 활용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1721108821296&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Library('share_code') _
pipeline {
    agent any

    environment{
        //*************************중요*************************//
        //빌드 설정 값
        CONNECTSERVER = &quot;dev&quot; //dev , dev_st, staging , real
        BRANCH = &quot;DEV&quot; //DEV , DEV_ST, STAGING, REAL
        PIPELINEPROJECT_NAME = &quot;test&quot;
        COMPANY_NAME = &quot;~~~&quot;
        TARGET = &quot;Android&quot;;

        APK = &quot;false&quot; //apk로 할건지 aab로 할건지
    }
    
    stages {

        stage('download gitlab project') {
            steps {
                script{
                    def paths = shareCode.call_Paths()

                    dir(paths.workspace_mts) {
                        git branch: &quot;${BRANCH}&quot;, url: '~~~~'

                    }
                }
            }
        }


        stage('Build Addressable') {
            steps {
                script{
                    shareCode.buildMTS_Addressable(env.TARGET, env.CONNECTSERVER, env.COMPANY_NAME)
                }
            }
        }

        
        stage('SFTP_Addressable') {
            when{
                environment name : &quot;CONNECTSERVER&quot;, value : &quot;dev&quot;
            }
            steps {
                script{
                    def paths = shareCode.call_Paths()

                    originPath = &quot;${env.COMPANY_NAME}&quot;
                    echo &quot;origin path: ${originPath}&quot;

                    def remotePath = paths.getSshDirectoryAndroidResourcePath(env.TARGET, env.CONNECTSERVER, env.COMPANY_NAME)
                    echo &quot;remote path: ${remotePath}&quot;

                    shareCode.sendSFTP(originPath, remotePath)
                }
            }
        }

        
        stage('Build AAB') {
            when{
                environment name : &quot;APK&quot;, value : &quot;false&quot;
            }
            steps {
                script{
                    shareCode.buildMTS_Android(env.TARGET, env.CONNECTSERVER, env.COMPANY_NAME, &quot;64&quot;)
                }
            }
        }

       
        stage('Upload GooglePlayStore DEV') {
            when{
                allOf{
                    environment name : &quot;APK&quot;, value : &quot;false&quot;
                    environment name : &quot;CONNECTSERVER&quot;, value : &quot;dev&quot;
                }
            }
            steps {
                script{
                    shareCode.upload_googleStore(&quot;~~~&quot;)
                }
            }
        }

       
        stage('send telegram'){
            steps {
                script{
                    shareCode.sendTelegram(&quot;안드로이드 빌드가 완료되었습니다.&quot;)
                }
            }
        }
        
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 활용했다. :)&lt;/p&gt;</description>
      <category>DEV/Jenkins</category>
      <author>ryeggg</author>
      <guid isPermaLink="true">https://ryeggg.tistory.com/164</guid>
      <comments>https://ryeggg.tistory.com/164#entry164comment</comments>
      <pubDate>Tue, 16 Jul 2024 14:48:10 +0900</pubDate>
    </item>
    <item>
      <title>[Jenkins] Telegram 연동하기</title>
      <link>https://ryeggg.tistory.com/163</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;jenkins 빌드시 실패, 성공 여부와 실패했을 경우 에러코드 그리고 성공했다면 빌드 버전을 텔레그램 메세지로 공유받고 싶었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;젠킨스에서 Telegram Bot Plugin 설치&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1246&quot; data-origin-height=&quot;295&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5VuOr/btsGBgaLUU1/2rlpxgkxUm5RJtP0M0htk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5VuOr/btsGBgaLUU1/2rlpxgkxUm5RJtP0M0htk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5VuOr/btsGBgaLUU1/2rlpxgkxUm5RJtP0M0htk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5VuOr%2FbtsGBgaLUU1%2F2rlpxgkxUm5RJtP0M0htk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1246&quot; height=&quot;295&quot; data-origin-width=&quot;1246&quot; data-origin-height=&quot;295&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;텔레그램에 젠킨스 메세지를 출력할 봇 생성&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;536&quot; data-origin-height=&quot;662&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dUbC6z/btsGBvMxPcD/nZ1jHc70tDtBlGK497yWE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dUbC6z/btsGBvMxPcD/nZ1jHc70tDtBlGK497yWE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dUbC6z/btsGBvMxPcD/nZ1jHc70tDtBlGK497yWE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdUbC6z%2FbtsGBvMxPcD%2FnZ1jHc70tDtBlGK497yWE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;325&quot; height=&quot;401&quot; data-origin-width=&quot;536&quot; data-origin-height=&quot;662&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토큰값 복사해서 [TOKEN]에 집어넣어서 이동&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://api.telegram.org/bot6774679821:AAFc-J8GKkVAT5RZZzEMujmbyaykSifFMvs/getUpdates&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://api.telegram.org/bot[TOKEN]/getUpdates&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 {&quot;ok&quot;:true, &quot;result:[]} 이런 형식이 뜨는데 텔레그램 봇에 hi입력후 새로고침을 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;chat&quot;:{&quot;id&quot;:939393939, &quot;first_name~~~} 중간에 이런 내용이 있는데 저 아이디가 chat id이다 .&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O5Hxi/btsGBa24Rzm/yuBQ3ziKBFdsNqhz7EjzJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O5Hxi/btsGBa24Rzm/yuBQ3ziKBFdsNqhz7EjzJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O5Hxi/btsGBa24Rzm/yuBQ3ziKBFdsNqhz7EjzJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO5Hxi%2FbtsGBa24Rzm%2FyuBQ3ziKBFdsNqhz7EjzJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;82&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필요한 재료가 준비되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토큰값 , chat id&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1713153567510&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pipeline {
    agent any
    
    environment{
        MESSAGE = &quot;HI&quot;
    }
    
    stages {
        stage('send message'){
            steps {
                script{
                    sh (script : &quot;&quot;&quot;
                    curl -X POST \
                    -d chat_id=[챗아이디] \
                    -d parse_mode=HTML \
                    -d text=&quot;${MESSAGE}&quot; \
                    https://api.telegram.org/bot[토큰값]]/sendMessage
                    &quot;&quot;&quot;)
                }
            }
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/csLEsN/btsGEjX4oEg/h3GeyD0XsBtCWHDzTD28e0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/csLEsN/btsGEjX4oEg/h3GeyD0XsBtCWHDzTD28e0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csLEsN/btsGEjX4oEg/h3GeyD0XsBtCWHDzTD28e0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcsLEsN%2FbtsGEjX4oEg%2Fh3GeyD0XsBtCWHDzTD28e0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;352&quot; height=&quot;78&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;78&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이프라인에 연결 성공!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DEV/Jenkins</category>
      <author>ryeggg</author>
      <guid isPermaLink="true">https://ryeggg.tistory.com/163</guid>
      <comments>https://ryeggg.tistory.com/163#entry163comment</comments>
      <pubDate>Fri, 12 Jul 2024 09:53:38 +0900</pubDate>
    </item>
    <item>
      <title>[Jenkins] 공유 라이브러리</title>
      <link>https://ryeggg.tistory.com/162</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1721108919573&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Jenkins] 공유 라이브러리 심화&quot; data-og-description=&quot;[Jenkins] 공유 라이브러리파이프라인 간소화를 위해 조사하던 중 공유라이브러리 라는게 눈에 띄었다.작업진행하면서 기록남기는 중이라 삽질내용이 들어갈 수 있는 점 주의하자.&amp;nbsp;step1. 일단 깃&quot; data-og-host=&quot;ryeggg.tistory.com&quot; data-og-source-url=&quot;https://ryeggg.tistory.com/164&quot; data-og-url=&quot;https://ryeggg.tistory.com/164&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/7nV0I/hyWCMQk6Eu/fKco3KWqbBEpix2lSHvjN1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/baoWGr/hyWzA44YRP/X082YwqzgqK9SP8Egkbk0K/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/WZB3M/hyWCBVzDJa/fRByvW3UA2IGttc5TrOfyk/img.jpg?width=1013&amp;amp;height=1266&amp;amp;face=431_627_559_767&quot;&gt;&lt;a href=&quot;https://ryeggg.tistory.com/164&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ryeggg.tistory.com/164&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/7nV0I/hyWCMQk6Eu/fKco3KWqbBEpix2lSHvjN1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/baoWGr/hyWzA44YRP/X082YwqzgqK9SP8Egkbk0K/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/WZB3M/hyWCBVzDJa/fRByvW3UA2IGttc5TrOfyk/img.jpg?width=1013&amp;amp;height=1266&amp;amp;face=431_627_559_767');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[Jenkins] 공유 라이브러리 심화&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[Jenkins] 공유 라이브러리파이프라인 간소화를 위해 조사하던 중 공유라이브러리 라는게 눈에 띄었다.작업진행하면서 기록남기는 중이라 삽질내용이 들어갈 수 있는 점 주의하자.&amp;nbsp;step1. 일단 깃&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ryeggg.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;파이프라인 간소화를 위해 조사하던 중 공유라이브러리 라는게 눈에 띄었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;작업진행하면서 기록남기는 중이라 삽질내용이 들어갈 수 있는 점 주의하자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;step1. 일단 깃에 저장소를 하나 판다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;루트는 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;296&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2BU5x/btsItPo5b3c/KR8jaJ7M1NgkHWS9gfLCyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2BU5x/btsItPo5b3c/KR8jaJ7M1NgkHWS9gfLCyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2BU5x/btsItPo5b3c/KR8jaJ7M1NgkHWS9gfLCyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2BU5x%2FbtsItPo5b3c%2FKR8jaJ7M1NgkHWS9gfLCyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;551&quot; height=&quot;296&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;296&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;난 사실 이 사진보고 무슨 말인줄 몰랐는데&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;222&quot; data-origin-height=&quot;147&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R6XQ1/btsIvkH0W0n/AHH2pbeM9tga6Dc2C6RV6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R6XQ1/btsIvkH0W0n/AHH2pbeM9tga6Dc2C6RV6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R6XQ1/btsIvkH0W0n/AHH2pbeM9tga6Dc2C6RV6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR6XQ1%2FbtsIvkH0W0n%2FAHH2pbeM9tga6Dc2C6RV6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;222&quot; height=&quot;147&quot; data-origin-width=&quot;222&quot; data-origin-height=&quot;147&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;이렇게 만들라는 이야기 인 듯 하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;*저 폴더 중 vars 에 groovy 파일을 만들어 넣으면 젠킨스 파이프라인에서 사용 가능해 보인다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;step2. 젠킨스에 공유라이브러리 깃을 등록한다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;[Manage Jenkins] &amp;gt; [System] 에서 Global Trusted Pipeline Libraries 에 깃 정보를 등록한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;*바로 밑에 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Global Untrusted Pipeline Libraries 도 있는데 느낌상 좋아보이지 않아서 저기엔&amp;nbsp; 안했다.. ㅎ&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;876&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Qsz5j/btsIv7uw5df/cjksLUG5Lfh4IyED4fw610/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Qsz5j/btsIv7uw5df/cjksLUG5Lfh4IyED4fw610/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Qsz5j/btsIv7uw5df/cjksLUG5Lfh4IyED4fw610/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQsz5j%2FbtsIv7uw5df%2FcjksLUG5Lfh4IyED4fw610%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1149&quot; height=&quot;876&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;876&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;위 항목중 Name 기억해두자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;step3. git에 간단하게 테스트 코드 등록해보자.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720660852481&quot; class=&quot;ruby&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;def info(message) {
    echo &quot;INFO: ${message}&quot;
}

def warning(message) {
    echo &quot;WARNING: ${message}&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;test_git.groovy 만들어서 vars폴더에 넣어두고 업로드.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;step4. 파이프라인 스크립트를 작성한다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720661012769&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Library('share_code') _
pipeline {
    agent any
    
    stages {
        stage('test') {
            steps {
                 script { 
                    test_git.info 'Starting'
                    test_git.warning 'Nothing to do!'
                }
            }
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;426&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbYO7X/btsIuI3OwuT/kiUxM5pvLJj47JmHfR5sw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbYO7X/btsIuI3OwuT/kiUxM5pvLJj47JmHfR5sw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbYO7X/btsIuI3OwuT/kiUxM5pvLJj47JmHfR5sw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbYO7X%2FbtsIuI3OwuT%2FkiUxM5pvLJj47JmHfR5sw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;666&quot; height=&quot;426&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;426&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;303&quot; data-origin-height=&quot;448&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/db4off/btsIuGSt1mN/uC76zq42Ligbh8ot5YKlaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/db4off/btsIuGSt1mN/uC76zq42Ligbh8ot5YKlaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/db4off/btsIuGSt1mN/uC76zq42Ligbh8ot5YKlaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdb4off%2FbtsIuGSt1mN%2FuC76zq42Ligbh8ot5YKlaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;303&quot; height=&quot;448&quot; data-origin-width=&quot;303&quot; data-origin-height=&quot;448&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;성공&lt;/span&gt;&lt;/p&gt;</description>
      <category>DEV/Jenkins</category>
      <author>ryeggg</author>
      <guid isPermaLink="true">https://ryeggg.tistory.com/162</guid>
      <comments>https://ryeggg.tistory.com/162#entry162comment</comments>
      <pubDate>Thu, 11 Jul 2024 11:02:37 +0900</pubDate>
    </item>
    <item>
      <title>[Jenkins] Home Directory 변경하기</title>
      <link>https://ryeggg.tistory.com/161</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;파이프라인이 많아지면서 저장소 용량이 너무 많아져 별도 SSD 에다가 workspace를 만들어서 관리하면 좋을 것 같았다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;일단 jenkins를 정지시킴.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;1. homebrew.mxcl.jenkins.plist 수정&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;나는 homebrew를 사용하여 jenkins를 설치했었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;/usr/local/Cellar/jenkins/[버전]/ &lt;span style=&quot;text-align: start;&quot;&gt;homebrew.mxcl.jenkins.plist&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start; font-family: 'Noto Serif KR';&quot;&gt;*이동하는 방법을 모른다면&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;finder 아무거나 하나 열어본다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;상단 바 -&amp;gt; [이동] -&amp;gt; [폴더로이동]&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;337&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/djMWqT/btsIuHQOZ7J/heyHqbUMAkmNHq22pxTxR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/djMWqT/btsIuHQOZ7J/heyHqbUMAkmNHq22pxTxR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/djMWqT/btsIuHQOZ7J/heyHqbUMAkmNHq22pxTxR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdjMWqT%2FbtsIuHQOZ7J%2FheyHqbUMAkmNHq22pxTxR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;337&quot; height=&quot;194&quot; data-origin-width=&quot;337&quot; data-origin-height=&quot;194&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;이런식으로 접근하면 이동 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;2. 구문추가&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;xcode로 열면 수정하는법이 조금 복잡(?)한거 같아서 visual code로 열었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;(메모장 이런걸로 열면 될 듯 하다.)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720594809733&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;key&amp;gt;EnvironmentVariables&amp;lt;/key&amp;gt;
	&amp;lt;dict&amp;gt;
		&amp;lt;key&amp;gt;JENKINS_HOME&amp;lt;/key&amp;gt;
		&amp;lt;string&amp;gt;경로&amp;lt;/string&amp;gt;
	&amp;lt;/dict&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;이걸 추가해주면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dyOczr/btsIuPuuX4Z/qYXprli5Zy0DeCyN3DZh4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dyOczr/btsIuPuuX4Z/qYXprli5Zy0DeCyN3DZh4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dyOczr/btsIuPuuX4Z/qYXprli5Zy0DeCyN3DZh4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdyOczr%2FbtsIuPuuX4Z%2FqYXprli5Zy0DeCyN3DZh4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;530&quot; height=&quot;350&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;대략 이런모습..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;jenkins start..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Eyf2s/btsIt9UAi6N/6aeW9ZkAbkBDbmw9KbemdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Eyf2s/btsIt9UAi6N/6aeW9ZkAbkBDbmw9KbemdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Eyf2s/btsIt9UAi6N/6aeW9ZkAbkBDbmw9KbemdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEyf2s%2FbtsIt9UAi6N%2F6aeW9ZkAbkBDbmw9KbemdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;382&quot; height=&quot;427&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;완성&lt;/span&gt;&lt;/p&gt;</description>
      <category>DEV/Jenkins</category>
      <author>ryeggg</author>
      <guid isPermaLink="true">https://ryeggg.tistory.com/161</guid>
      <comments>https://ryeggg.tistory.com/161#entry161comment</comments>
      <pubDate>Wed, 10 Jul 2024 16:48:02 +0900</pubDate>
    </item>
    <item>
      <title>[Unity] Android 인앱 업데이트</title>
      <link>https://ryeggg.tistory.com/160</link>
      <description>&lt;figure id=&quot;og_1714459269720&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;인앱 업데이트 &amp;nbsp;|&amp;nbsp; Android 개발자 &amp;nbsp;|&amp;nbsp; Android Developers&quot; data-og-description=&quot;이 페이지는 Cloud Translation API를 통해 번역되었습니다. 인앱 업데이트 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 사용자는 기기에서 앱을 최신 상태로 &quot; data-og-host=&quot;developer.android.com&quot; data-og-source-url=&quot;https://developer.android.com/guide/playcore/in-app-updates?hl=ko&quot; data-og-url=&quot;https://developer.android.com/guide/playcore/in-app-updates?hl=ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/e3tag/hyVVEG8whA/fedFaKC2LMYcOcuUMVRkUk/img.png?width=1201&amp;amp;height=676&amp;amp;face=0_0_1201_676,https://scrap.kakaocdn.net/dn/chziLV/hyVZk74o9Z/7NkWU5lN5trFZvHsuSUkE0/img.png?width=1384&amp;amp;height=916&amp;amp;face=0_0_1384_916,https://scrap.kakaocdn.net/dn/5z9jb/hyVZkG1wyr/gQmMUprePXII1o4E0GGuNk/img.png?width=904&amp;amp;height=916&amp;amp;face=0_0_904_916&quot;&gt;&lt;a href=&quot;https://developer.android.com/guide/playcore/in-app-updates?hl=ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.android.com/guide/playcore/in-app-updates?hl=ko&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/e3tag/hyVVEG8whA/fedFaKC2LMYcOcuUMVRkUk/img.png?width=1201&amp;amp;height=676&amp;amp;face=0_0_1201_676,https://scrap.kakaocdn.net/dn/chziLV/hyVZk74o9Z/7NkWU5lN5trFZvHsuSUkE0/img.png?width=1384&amp;amp;height=916&amp;amp;face=0_0_1384_916,https://scrap.kakaocdn.net/dn/5z9jb/hyVZkG1wyr/gQmMUprePXII1o4E0GGuNk/img.png?width=904&amp;amp;height=916&amp;amp;face=0_0_904_916');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;인앱 업데이트 &amp;nbsp;|&amp;nbsp; Android 개발자 &amp;nbsp;|&amp;nbsp; Android Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이 페이지는 Cloud Translation API를 통해 번역되었습니다. 인앱 업데이트 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 사용자는 기기에서 앱을 최신 상태로&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.android.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앱 업데이트가 필요할 시 구글 스토어에 따로 들어가서 업데이트 받는 형식이 아닌&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앱실행 -&amp;gt; 업데이트 체크 -&amp;gt; 업데이트 화면&amp;nbsp; 이렇게 연결 될 수 있도록 도와준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 기능은 Android 5.0 (API Level 21) 이상 부터 지원되면 .apk, .obb 을 사용하는 앱에서는 호환되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉시업데이트 와 유연한 업데이트를 지원하는데 이번엔 즉시 업데이트 사용법을 정리해보려 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 패키지를 다운받아 유니티에 넣어준다. (자동으로 들어갔다.)&lt;/p&gt;
&lt;figure id=&quot;og_1714459592359&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Unity용 Google 패키지 살펴보기 &amp;nbsp;|&amp;nbsp; Google for Developers&quot; data-og-description=&quot;이 페이지는 Cloud Translation API를 통해 번역되었습니다. Unity용 Google 패키지 살펴보기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Unity용 Google 공식 패키지&quot; data-og-host=&quot;developers.google.com&quot; data-og-source-url=&quot;https://developers.google.com/unity/packages?hl=ko#play_in-app_update&quot; data-og-url=&quot;https://developers.google.com/unity/packages?hl=ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/NoOmK/hyVZllCsnO/kuZccVArWWOBUizaSCfRwK/img.png?width=1200&amp;amp;height=675&amp;amp;face=0_0_1200_675&quot;&gt;&lt;a href=&quot;https://developers.google.com/unity/packages?hl=ko#play_in-app_update&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developers.google.com/unity/packages?hl=ko#play_in-app_update&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/NoOmK/hyVZllCsnO/kuZccVArWWOBUizaSCfRwK/img.png?width=1200&amp;amp;height=675&amp;amp;face=0_0_1200_675');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Unity용 Google 패키지 살펴보기 &amp;nbsp;|&amp;nbsp; Google for Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이 페이지는 Cloud Translation API를 통해 번역되었습니다. Unity용 Google 패키지 살펴보기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Unity용 Google 공식 패키지&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developers.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 버전을 관리해줄 script를 만들어 아래와 같이 작성했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(코드 내용이 직관적이기때문에 따로 주석은 작성하지 않았다.)&lt;/p&gt;
&lt;pre id=&quot;code_1714459668743&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;using System.Collections;
using UnityEngine;
using Google.Play.AppUpdate;
using Google.Play.Common;

public class CheckAppUpdate : MonoBehaviour
{
    AppUpdateManager appUpdateManager;

    public void Start()
    {
#if PLATFORM_ANDROID &amp;amp;&amp;amp; !UNITY_EDITOR
        StartCoroutine(GoogleCheckUpdate_Version());
#endif
    }

    public IEnumerator GoogleCheckUpdate_Version()
    {
        appUpdateManager = new AppUpdateManager();
        PlayAsyncOperation&amp;lt;AppUpdateInfo, AppUpdateErrorCode&amp;gt; appUpdateInfoOperation = appUpdateManager.GetAppUpdateInfo();

        yield return appUpdateInfoOperation;

        if (appUpdateInfoOperation.IsSuccessful)
        {
            AppUpdateInfo appUpdateInfoResult = appUpdateInfoOperation.GetResult();

            if(appUpdateInfoResult.UpdateAvailability ==  UpdateAvailability.UpdateAvailable)
            {
                AppUpdateOptions appUpdateOptions = AppUpdateOptions.ImmediateAppUpdateOptions();
                AppUpdateRequest startUpdateRequest = appUpdateManager.StartUpdate(appUpdateInfoResult, appUpdateOptions);
                yield return startUpdateRequest;
            }
        }
        else
        {

        }
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DEV/Unity</category>
      <author>ryeggg</author>
      <guid isPermaLink="true">https://ryeggg.tistory.com/160</guid>
      <comments>https://ryeggg.tistory.com/160#entry160comment</comments>
      <pubDate>Tue, 30 Apr 2024 15:49:06 +0900</pubDate>
    </item>
    <item>
      <title>[Jenkins] mac homebrew 이용 remove</title>
      <link>https://ryeggg.tistory.com/159</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;터미널에서 입력&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1708310002631&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;brew services stop jenkins&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;젠킨스 중지&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1708310050417&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;brew remove jenkins&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;젠킨스 삭제&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1708310101640&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;brew cleanup&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;폴더 정리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1708310128241&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo rm -rf ~/.jenkins/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;젠킨스 설정폴더 삭제&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1708310187908&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;brew services start jenkins&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;입력시 jenkins is not installed 출력되면 삭제 완료&lt;/span&gt;&lt;/p&gt;</description>
      <category>DEV/Jenkins</category>
      <author>ryeggg</author>
      <guid isPermaLink="true">https://ryeggg.tistory.com/159</guid>
      <comments>https://ryeggg.tistory.com/159#entry159comment</comments>
      <pubDate>Mon, 19 Feb 2024 11:37:24 +0900</pubDate>
    </item>
    <item>
      <title>[Mac] 숨겨진 폴더,파일 보이게하기 ( 터미널 이용버전)</title>
      <link>https://ryeggg.tistory.com/158</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;원격으로 mac 작업중 숨겨진 폴더에 접근해야했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;가서 단축키를 누르면 되지만 &lt;b&gt;[&amp;nbsp; Shift + Command +. ]&amp;nbsp;&lt;/b&gt;그냥 일어나기 귀찮았다..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;그래서 적는 터미널로 숨겨진 폴더,파일 보이게 하기&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;터미널에서 입력 (여기서 TRUE 값을 FALSE로 바꿔주면 안보이지 안을까나)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1708071456670&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;defaults write com.apple.finder AppleShowAllFiles TRUE&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;그 후&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1708071482691&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;killall Finder&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;입력시 모든 finder 재시작!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;편...편하닼ㅋ&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DEV/ETC</category>
      <author>ryeggg</author>
      <guid isPermaLink="true">https://ryeggg.tistory.com/158</guid>
      <comments>https://ryeggg.tistory.com/158#entry158comment</comments>
      <pubDate>Fri, 16 Feb 2024 17:19:29 +0900</pubDate>
    </item>
  </channel>
</rss>