자동 스크립트를 사용하여 Chrome 확장 자동 게시

우리는 모든 것이 자동화된 세계에서 살고 있는데, 왜 수동으로 크롬 확장을 발표해야 합니까?🤔
에서 설정한 크롬 확장을 자동으로 발표합니다.
이 문장은 매우 길겠지만, 마지막으로, 너는 위대한 것이 네 손에 있을 것이다.
이 문서에서는 다음 항목에 주목합니다.
  • Let’s change our extension folder structure
  • Setup package.json file to install required NPM packages
  • Setting up Github actions to automate deployment on code push
  • Let’s set up Google credentials to allow uploading extension
  • Write a script to publish an extension to web-store
  • 필요한 가방 포함
  • 생성 경로 설정
  • 확장 버전 업데이트
  • 저장할 zip 파일 생성
  • 클라이언트 Id와 클라이언트 비밀번호로 웹스토어 초기화
  • 새로운 리셋 영패 생성
  • 확장 zip을 상점에 업로드
  • 출시 확장
  • 확장 폴더 구조 변경


    시작하기 전에 에서 만든 확장 폴더 구조를 다시 설정합니다.
    이것은 우리가 코드를 관리하고 다음 단계에서 확장 zip을 만드는 데 도움을 줄 것입니다.이를 위해 프로젝트 디렉터리[app]에 새 폴더를 만들고 모든 확장 파일을 [app] 폴더로 이동합니다.
    웹 팩과 같은 구축 도구를 사용하고 있다면, 필요에 따라 이 설정을 변경할 수 있습니다.

    패키지를 설치합니다.필요한 NPM 패키지 설치를 위한 json 파일


    이제 npm 패키지를 사용할 때가 되었습니다. 이것은 우리가 과정을 자동화하는 데 도움을 줄 것입니다.
    이 소프트웨어 패키지를 사용하면 우리의 업무량을 줄이고 일을 더욱 쉽게 할 수 있다.
    우리가 필요로 하는 소프트웨어 패키지: -

  • J 파일 - npm ->
    이것은 우리가 명세서를 읽는 데 도움을 줄 것이다.json 파일은 확장된 버전을 업데이트합니다.

  • 로컬 우편 번호 - npm ->
    코드를 생성하는 zip 파일을 사용할 것입니다.

  • fs 추가 - npm ->
    fs extra는 zip 파일을 버퍼로 읽는 데 도움을 줄 것입니다

  • chrome webstore manager-npm ->
    이것은 우리가 프로세스를 자동화하는 데 필요한 가장 중요한 소프트웨어 패키지다.

  • 경로 - 노드에서 기본적으로 제공됩니다.따라서 명시적으로 설치할 필요가 없습니다.
  • 이제 가방으로 완성합시다.json


    What is the package.json file?

    The file holds various metadata relevant to the project. This file is used to give information to npm that allows it to identify the project as well as handle the project's dependencies.
    To know more click here


    패키지를 만들고 초기화합니다.json 파일은 터미널에서 다음 명령을 실행합니다.npm init기본 옵션을 사용하거나 필요에 따라 세부 정보를 추가합니다.
    패키지를 생성한 후json, 내가 언급한 의존항을 설치할 때가 되었다.
    이렇게 하려면 다음 명령을 실행하십시오. -npm install jsonfile zip-local fs-extra chrome-webstore-manager --save-devSave dev - 이 옵션은 패키지에 종속 항목을 저장합니다.devdependences 속성의 json입니다.
    이것은 가방의 최종 구조다.json

    코드 푸시 자동 배포를 위한 Github 작업 설정


    GitHub 작업을 통해 자동 작업을 추가할 수 있습니다.GitHub repo에서 특정 작업을 트리거하면

    우리의 예에서, 우리는 npm 명령을 실행하고, 실행 노드를 통해 확장을 배치해야 한다.js 스크립트


    github 작업에 대한 더 많은 정보를 알고 싶으면 here


    다음은 GitHub 작업 예제입니다





    이 파일을 GitHub 작업에 그대로 추가합니다


    이 파일을 어디에 추가합니까?🤔

    다음 폴더 구조를 작성하여 작업 흐름 파일을 추가합니다


    -> Chrome-extension-demo
        -> app  //Our extension code
        -> .github
            -> workflows
                -> action.yml
    

    Let’s set up Google credentials to allow uploading extension


    자동 게시를 위해서는 Google 개발자 콘솔에서 프로젝트에 Chrome Web Store API를 활성화해야 합니다


    1. 구글 개발자 컨트롤러 방문.
    2. 새 프로젝트를 만들거나 기존 프로젝트를 선택합니다.
    3. 왼쪽 사이드바에서 API & 선택;인증
    4. 표시되는 사용 가능한 API 목록에서 Chrome Web Store API 상태를 ON으로 설정합니다.
    5. 서비스 약관을 수락하다.
    6. 왼쪽 사이드바에서 자격 증명을 선택합니다.
    7. 고객 ID 및 고객 기밀 작성
      • 자격 증명 작성 클릭
      • OAuth 클라이언트 ID 선택

      • 응용 프로그램 형식의 데스크톱 응용 프로그램
      • 신청 이름 입력
      • 만들기 버튼을 클릭합니다.


    🥳 그래우리는 고객 Id와 고객 기밀을 얻었습니다



    방문 영패 획득:


    클라이언트 ID와 클라이언트 기밀을 가지고 있으면 방문 영패를 검색하고 영패를 새로 고칠 수 있습니다.액세스 영패는 우리의 스크립트 업로드와 발표 확장을 권한을 부여합니다


    Note:- Access token gets expired after 40 minutes. So, we will always need to create a new one while deploying our extension in a continuous deployment process.


    새로운access\u영패를 만들기 위해refresh\u영패를 사용합니다


    Let’s generate access_token and refresh_token:


    1. 다음 URL을 사용하여access\u영패를 생성하는 코드 생성

    https://accounts.google.com/o/oauth2/auth?response_type=code&scope=https://www.googleapis.com/auth/chromewebstore&client_id=$CLIENT_ID&redirect_uri=urn:ietf:wg:oauth:2.0:oob
    

    이전 단계에서 생성한 클라이언트 ID로 $CLIENT\u ID를 대체합니다

    업데이트된 URL을 브라우저에 붙여넣고 Enter 키를 누릅니다

    확장된 동일한 구글 계정 업로드 선택

    크롬 확장 및 응용 프로그램을 보고 관리할 수 있는 권한을 부여합니다



    1. 권한을 수여한 후, 우리는 권한 수여 코드를 얻는다.
      이 코드를 복사하여access\u 영패를 생성합니다.


    1. 터미널을 열어 다음curl 요청을 실행합니다.
      상기 코드를 사용하여 영패에 접근을 요청합니다.예를 들어curl을 사용하면 다음 명령을 실행하여 액세스 토큰을 얻을 수 있습니다($CLIENT\u ID, $CLIENT\u SECRET 및 $CODE 값을 상기 값으로 대체).

    curl "https://accounts.google.com/o/oauth2/token" -d \
    "client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&code=$CODE&grant_type=authorization_code&redirect_uri=urn:ietf:wg:oauth:2.0:oob"
    

    이것은 결과를 되돌려줍니다. 예를 들어


    {
      "access_token" : "ya29...",
      "token_type" : "Bearer",
      "expires_in" : 3600,
      "refresh_token" : "1/rwn..."
    }
    

    새로 고침 영패를 적어 두세요. 배치 스크립트에서 이 영패를 사용할 것입니다


    Write a script to publish an extension to web-store


    확장된 루트 수준에서 새 JavaScript 파일을 만들고 deploy로 이름을 지정합니다.js회사


    1. 필요한 포장 포함
      NPM을 사용하여 설치한 패키지를 가져옵니다.

    const fs = require('fs-extra');
    const zipper = require("zip-local");
    const jsonfile = require('jsonfile');
    const path = require('path');
    const ChromeWebstore = require('chrome-webstore-manager');
    
    1. 생성 경로 설정

    const itemId = "EXTENSION_ID";
    var buildLocation = path.join(__dirname, "app");
    

    EXTENSION\u ID를 업로드로 교체
    Id는 다음과 같이 보일 수 있습니다. - ecjchthpmtdecenmykiuipbibkhcijlj


    1. 확장 버전 업데이트
      새 패키지를 상점에 업로드할 때 새 버전을 추가합니다.구글은 같은 버전의 새 패키지를 업로드하는 것을 허락하지 않는다.
      목록 파일 읽기
      새 버전 생성
      새 버전 업데이트 사용
      업데이트 버전을 사용하여 목록 파일 쓰기

    // read manifest file
    var manifest = jsonfile.readFileSync(path.join(buildLocation, "manifest.json"));
    function getNewVersion() {
           var ver = parseInt(manifest.version.split('.')[0]);
           ver++;
           return `${ver}.0.0`;
    }
    var version = getNewVersion();
    // replace version
    manifest.version = version;
    // save manifest file
    jsonfile.writeFileSync(path.join(buildLocation, "manifest.json"), manifest);
    
    1. zip 파일을 생성하고 이 파일을 읽어서 저장에 불러옵니다.

    // create zip
    zipper.sync.zip(buildLocation).compress().save(path.join(buildLocation, "build.zip"));
    const fileBin = fs.readFileSync(path.join(buildLocation, "build.zip"));
    
    1. 클라이언트 Id 및 클라이언트 기밀로 웹스토어 초기화

    // Initialize with ClientID and ClinetSecret
    const chromeWebstore = new ChromeWebstore("<CLIENT_ID>", "<CLIENT_SECRET>");
    

    CLIENT\u ID 및 CLIENT\u SECRET


    1. 새로운access_영패 생성
      다음 함수를 사용하여 새로운access\u 영패를 만듭니다.

    chromeWebstore.getRefreshToken("<REFRESH_TOKEN>")
    

    우리가 이전 과정에서 생성한 REFRESH\u 영패로 REFRESH\u 영패를 교체


    1. 확장자 zip을 상점에 업로드

    chromeWebstore.updateItem(newToken, fileBin, itemId)
    

    6단계에서 우리는 새로운access\u영패를 포함하는 대상을 되돌려주는promise를 얻을 것이다

    이 액세스 영패를 사용하여 chrome Webstore 업데이트 방법으로 확장 zip


    1. 출시 확장

    chromeWebstore.publishItem(newToken, itemId)
    

    업로드가 완료되면 확장을 발표할 수 있습니다

    발표를 위해 크롬 웹스토어의publish Item 방법을 사용합니다


    Let’s keep the last 3 steps together to complete our script.


    // Get new token with refresh_token
    chromeWebstore.getRefreshToken("<REFRESH_TOKEN>").then(function (data) {
       const json = JSON.parse(data)
       const newToken = json.access_token
       chromeWebstore.updateItem(newToken, fileBin, itemId).then((data) => {
           console.log(data);
           chromeWebstore.publishItem(newToken, itemId).then((data) => {
               console.log(data);
           });
       });
    });
    console.log("Deployed version is " + version);
    

    Hoorayyyyy! 🎉🎉


    마지막으로, 우리는 배치 스크립트의 창설을 완성하였습니다


    이제 확장 코드를 리셋 프로토콜에 밀어넣으면 Github 작업이 발생합니다

    작업 흐름 파일에서 배치 스크립트를 터치하는 명령을 만들었습니다. 확장은 배치 스크립트를 사용하여 자동으로 업데이트됩니다


    이것은 매우 긴 문장입니다. 왜냐하면 저는 해야 할 해석이 많기 때문입니다


    좋아했으면 좋겠어


    시간 내주셔서 감사합니다


    마음에 드셨으면 좋겠어요.공유**


    즐거운 인코딩

    좋은 웹페이지 즐겨찾기