Firefox 부가 기능에 게시

이 부분에서는 확장 게시를 담당할 워크플로를 만들 것입니다.
Firefox 부가 기능 시장에서.

🧱 준비



먼저 확장 UUID를 찾아야 합니다. 추가 기능 개발자 허브의 "기술 세부 정보"섹션에 있는 확장 페이지에서 찾을 수 있습니다.

다음으로 official documentation을 따라 API 접근에 필요한 jwtIssuer, jwtSecret 값을 구한다.

🔒 비밀에 다음 값 추가:


  • FF_EXTENSION_ID - 확장의 UUID
  • FF_JWT_ISSUER
  • FF_JWT_SECRET

  • publish-on-firefox-add-ons 워크플로



    워크플로에는 유일한 트리거인 workflow_dispatch 이벤트가 있습니다. 다음과 같이 발송할 수 있습니다.
  • 커밋 또는 태그를 워크플로 참조로 수동으로 지정합니다.
  • zip 자산이 있는 릴리스를 준비한 후 publish-release-on-tag 워크플로에 의해.

  • 확장을 배포하는 데 필요한 압축된 zip을 얻기 위해 이미 생성된 복합 작업을 활용합니다.

    .github/workflows/publish-on-firefox-addons.yml:

    name: publish-on-firefox-add-ons
    on:
      workflow_dispatch:
    jobs:
      publish:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v2
    
          - uses: cardinalby/export-env-action@v1
            with:
              envFile: './.github/workflows/constants.env'
              expand: true
    
          - name: Obtain packed zip
            uses: ./.github/workflows/actions/get-zip-asset
            with:
              githubToken: ${{ secrets.GITHUB_TOKEN }}
    
          - name: Deploy to Firefox Addons
            id: addonsDeploy
            uses: cardinalby/webext-buildtools-firefox-addons-action@v1
            continue-on-error: true
            with:
              zipFilePath: ${{ env.ZIP_FILE_PATH }}
              extensionId: ${{ secrets.FF_EXTENSION_ID }}
              jwtIssuer: ${{ secrets.FF_JWT_ISSUER }}
              jwtSecret: ${{ secrets.FF_JWT_SECRET }}
    
          - name: Abort on upload error
            if: |
              steps.addonsDeploy.outcome == 'failure' &&
              steps.addonsDeploy.outputs.sameVersionAlreadyUploadedError != 'true'
            run: exit 1
    



  • , 각 워크플로가 시작될 때 repo를 확인하고 constants.env 파일에서 env 변수를 내보냅니다.
  • get-zip-asset 복합 작업을 호출한 후 env.ZIP_FILE_PATH 경로에 압축 및 빌드 확장자가 있는 zip 파일이 있을 것으로 예상합니다.
  • 확장을 게시하기 위해 webext-buildtools-firefox-addons-action 작업에 다른 필수 입력과 함께 경로를 전달합니다. 우리는 continue-on-error: true 플래그를 사용하여 오류가 발생한 경우 단계가 즉시 실패하지 않도록 하고 기본 설정에 따라 다음 단계에서 결과를 검증합니다.
  • addonsDeploy 단계 출력을 검사하면 실패 원인을 찾을 수 있습니다. 게시하려는 버전이 이미 게시되어 실패한 경우 오류로 간주하지 않습니다.

  • 시간 초과 메모



    또한 게시 작업이 때때로 timeoutError == 'true' 출력과 함께 실패할 수 있습니다. 확장 프로그램이 업로드되었지만 Addons 서버의 처리 대기 시간이 초과되었음을 의미합니다. 이 오류 처리를 워크플로에 포함하지 않았지만 다음을 수행할 수 있습니다.
  • webext-buildtools-firefox-addons-action 작업의 timeoutMs 입력으로 더 긴 시간 초과를 지정합니다. 기본 시간 초과는 600000ms(10분)입니다.
  • steps.addonsDeploy.outputs.timeoutError == 'true'인 경우 마지막 단계에서 작업을 실패하지 마십시오.
  • 시간 초과의 경우 잠시 후 워크플로를 다시 실행하십시오. 첫 번째 실행 후 확장이 처리된 경우 워크플로가 통과합니다( steps.addonsDeploy.outputs.sameVersionAlreadyUploadedError != 'true' 사용).
  • 좋은 웹페이지 즐겨찾기