Improve ci and readmeUnverified
8b27c3c parent: 22667a9 modified
.gitlab-ci.yml +11 -100 | @@ -1,32 +1,24 @@ | ||
| 1 | 1 | # Pipeline CI/CD re:group |
| 2 | -# - lint : web-ext lint sur chaque push / MR | |
| 2 | +# - lint : web-ext lint sur chaque push / MR | |
| 3 | 3 | # - secret-detection : scan de secrets (template GitLab) |
| 4 | -# - sign : signe le .xpi via l'API AMO (unlisted) sur tag vX.Y.Z | |
| 5 | -# - publish : pousse le .xpi signé dans le Package Registry (stockage durable) | |
| 6 | -# - pages : reconstruit updates.json + miroir des .xpi sur GitLab Pages | |
| 4 | +# - sign : soumet + signe la version sur AMO (listed) sur tag vX.Y.Z | |
| 7 | 5 | # |
| 8 | 6 | # Variables CI à définir (Settings > CI/CD > Variables), masked + protected : |
| 9 | 7 | # WEB_EXT_API_KEY (jwtIssuer depuis AMO > Manage API Keys) |
| 10 | 8 | # WEB_EXT_API_SECRET (jwtSecret) |
| 11 | 9 | # web-ext lit ces deux variables automatiquement : jamais passées en argument. |
| 12 | 10 | # |
| 13 | -# Le job de release ne tourne que sur tags PROTÉGÉS (motif v* à protéger | |
| 14 | -# dans Settings > Repository > Protected tags) → seuls les tags protégés | |
| 15 | -# voient les variables protégées. | |
| 11 | +# Le job sign ne tourne que sur tags PROTÉGÉS (motif v* à protéger dans | |
| 12 | +# Settings > Repository > Protected tags) → seuls les tags protégés voient | |
| 13 | +# les variables protégées. AMO gère la distribution et les mises à jour. | |
| 16 | 14 | |
| 17 | 15 | stages: |
| 18 | 16 | - test |
| 19 | 17 | - secret-detection |
| 20 | 18 | - sign |
| 21 | - - publish | |
| 22 | - - pages | |
| 23 | 19 | |
| 24 | 20 | variables: |
| 25 | 21 | SECRET_DETECTION_ENABLED: 'true' |
| 26 | - # Base publique servie par GitLab Pages (unique domain désactivé). | |
| 27 | - PAGES_BASE: 'https://juuduu.gitlab.io/re-group-firefox-addon' | |
| 28 | - # Nom du paquet générique dans le registry. | |
| 29 | - PKG_NAME: 're-group' | |
| 30 | 22 | |
| 31 | 23 | include: |
| 32 | 24 | - template: Security/Secret-Detection.gitlab-ci.yml |
| @@ -48,8 +40,9 @@ lint: | ||
| 48 | 40 | - npx web-ext lint --source-dir=. |
| 49 | 41 | |
| 50 | 42 | # --------------------------------------------------------------------------- |
| 51 | -# Sign — sur tag vX.Y.Z uniquement. Vérifie que le manifest == le tag, | |
| 52 | -# puis signe via AMO (canal unlisted, signature automatique). | |
| 43 | +# Sign — sur tag vX.Y.Z. Vérifie que le manifest == le tag, puis soumet et | |
| 44 | +# signe la version sur AMO (canal listed). La licence est passée via | |
| 45 | +# amo-metadata.json (obligatoire pour une version listed). | |
| 53 | 46 | # --------------------------------------------------------------------------- |
| 54 | 47 | sign: |
| 55 | 48 | stage: sign |
| @@ -66,90 +59,8 @@ sign: | ||
| 66 | 59 | fi |
| 67 | 60 | - npm install --no-save web-ext@^10 |
| 68 | 61 | # WEB_EXT_API_KEY / WEB_EXT_API_SECRET lus depuis l'environnement. |
| 69 | - - npx web-ext sign --channel=unlisted --source-dir=. --artifacts-dir=signed | |
| 70 | - - mkdir -p out | |
| 71 | - - cp "$(ls -t signed/*.xpi | head -n1)" "out/${PKG_NAME}-${VERSION}.xpi" | |
| 72 | - - echo "VERSION=${VERSION}" >> build.env | |
| 62 | + - npx web-ext sign --channel=listed --amo-metadata=amo-metadata.json --source-dir=. --artifacts-dir=signed | |
| 73 | 63 | artifacts: |
| 74 | 64 | paths: |
| 75 | - - out/ | |
| 76 | - reports: | |
| 77 | - dotenv: build.env | |
| 78 | - | |
| 79 | -# --------------------------------------------------------------------------- | |
| 80 | -# Publish — dépose le .xpi signé dans le Package Registry générique. | |
| 81 | -# Stockage durable et versionné, jamais écrasé. | |
| 82 | -# --------------------------------------------------------------------------- | |
| 83 | -publish: | |
| 84 | - stage: publish | |
| 85 | - image: curlimages/curl:latest | |
| 86 | - needs: [sign] | |
| 87 | - rules: | |
| 88 | - - if: '$CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+$/' | |
| 89 | - script: | |
| 90 | - - FILE="${PKG_NAME}-${VERSION}.xpi" | |
| 91 | - - | | |
| 92 | - curl --fail --silent --show-error \ | |
| 93 | - --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \ | |
| 94 | - --upload-file "out/${FILE}" \ | |
| 95 | - "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PKG_NAME}/${VERSION}/${FILE}" | |
| 96 | - | |
| 97 | -# --------------------------------------------------------------------------- | |
| 98 | -# Release — crée une Release GitLab avec un lien vers le .xpi (pour les humains). | |
| 99 | -# --------------------------------------------------------------------------- | |
| 100 | -release: | |
| 101 | - stage: publish | |
| 102 | - image: registry.gitlab.com/gitlab-org/release-cli:latest | |
| 103 | - needs: [sign, publish] | |
| 104 | - rules: | |
| 105 | - - if: '$CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+$/' | |
| 106 | - script: | |
| 107 | - - echo "Release ${CI_COMMIT_TAG}" | |
| 108 | - release: | |
| 109 | - tag_name: '$CI_COMMIT_TAG' | |
| 110 | - name: 're:group $CI_COMMIT_TAG' | |
| 111 | - description: 'Version signée disponible sur la page de mise à jour.' | |
| 112 | - assets: | |
| 113 | - links: | |
| 114 | - - name: 're_group ${VERSION} (.xpi signé)' | |
| 115 | - url: '${PAGES_BASE}/${PKG_NAME}-${VERSION}.xpi' | |
| 116 | - | |
| 117 | -# --------------------------------------------------------------------------- | |
| 118 | -# Pages — reconstruit le site public : miroir de TOUS les .xpi du registry | |
| 119 | -# + updates.json regénéré depuis la liste complète des versions. | |
| 120 | -# Aucun état à committer : la source de vérité est le registry. | |
| 121 | -# --------------------------------------------------------------------------- | |
| 122 | -pages: | |
| 123 | - stage: pages | |
| 124 | - image: alpine:latest | |
| 125 | - needs: [publish] | |
| 126 | - rules: | |
| 127 | - - if: '$CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+$/' | |
| 128 | - script: | |
| 129 | - - apk add --no-cache curl jq | |
| 130 | - - mkdir -p public | |
| 131 | - - ADDON_ID="$(jq -r '.browser_specific_settings.gecko.id' manifest.json)" | |
| 132 | - # Liste toutes les versions du paquet générique PKG_NAME. | |
| 133 | - - | | |
| 134 | - curl --fail --silent --show-error --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \ | |
| 135 | - "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages?package_type=generic&per_page=100" \ | |
| 136 | - > packages.json | |
| 137 | - - VERSIONS="$(jq -r --arg n "$PKG_NAME" '.[] | select(.name==$n) | .version' packages.json | sort -V)" | |
| 138 | - - echo "[]" > entries.json | |
| 139 | - - | | |
| 140 | - for V in $VERSIONS; do | |
| 141 | - FILE="${PKG_NAME}-${V}.xpi" | |
| 142 | - curl --fail --silent --show-error --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \ | |
| 143 | - -o "public/${FILE}" \ | |
| 144 | - "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PKG_NAME}/${V}/${FILE}" | |
| 145 | - jq --arg v "$V" --arg link "${PAGES_BASE}/${FILE}" \ | |
| 146 | - '. += [{"version":$v,"update_link":$link}]' entries.json > entries.tmp | |
| 147 | - mv entries.tmp entries.json | |
| 148 | - done | |
| 149 | - - | | |
| 150 | - jq -n --arg id "$ADDON_ID" --slurpfile e entries.json \ | |
| 151 | - '{addons: {($id): {updates: $e[0]}}}' > public/updates.json | |
| 152 | - - cat public/updates.json | |
| 153 | - artifacts: | |
| 154 | - paths: | |
| 155 | - - public | |
| 65 | + - signed/ | |
| 66 | + expire_in: 1 month | |
| @@ -1,32 +1,24 @@ | |||
| 1 | # Pipeline CI/CD re:group | 1 | # Pipeline CI/CD re:group |
| 2 | -# - lint : web-ext lint sur chaque push / MR | 2 | +# - lint : web-ext lint sur chaque push / MR |
| 3 | # - secret-detection : scan de secrets (template GitLab) | 3 | # - secret-detection : scan de secrets (template GitLab) |
| 4 | -# - sign : signe le .xpi via l'API AMO (unlisted) sur tag vX.Y.Z | 4 | +# - sign : soumet + signe la version sur AMO (listed) sur tag vX.Y.Z |
| 5 | -# - publish : pousse le .xpi signé dans le Package Registry (stockage durable) | ||
| 6 | -# - pages : reconstruit updates.json + miroir des .xpi sur GitLab Pages | ||
| 7 | # | 5 | # |
| 8 | # Variables CI à définir (Settings > CI/CD > Variables), masked + protected : | 6 | # Variables CI à définir (Settings > CI/CD > Variables), masked + protected : |
| 9 | # WEB_EXT_API_KEY (jwtIssuer depuis AMO > Manage API Keys) | 7 | # WEB_EXT_API_KEY (jwtIssuer depuis AMO > Manage API Keys) |
| 10 | # WEB_EXT_API_SECRET (jwtSecret) | 8 | # WEB_EXT_API_SECRET (jwtSecret) |
| 11 | # web-ext lit ces deux variables automatiquement : jamais passées en argument. | 9 | # web-ext lit ces deux variables automatiquement : jamais passées en argument. |
| 12 | # | 10 | # |
| 13 | -# Le job de release ne tourne que sur tags PROTÉGÉS (motif v* à protéger | 11 | +# Le job sign ne tourne que sur tags PROTÉGÉS (motif v* à protéger dans |
| 14 | -# dans Settings > Repository > Protected tags) → seuls les tags protégés | 12 | +# Settings > Repository > Protected tags) → seuls les tags protégés voient |
| 15 | -# voient les variables protégées. | 13 | +# les variables protégées. AMO gère la distribution et les mises à jour. |
| 16 | 14 | ||
| 17 | stages: | 15 | stages: |
| 18 | - test | 16 | - test |
| 19 | - secret-detection | 17 | - secret-detection |
| 20 | - sign | 18 | - sign |
| 21 | - - publish | ||
| 22 | - - pages | ||
| 23 | 19 | ||
| 24 | variables: | 20 | variables: |
| 25 | SECRET_DETECTION_ENABLED: 'true' | 21 | SECRET_DETECTION_ENABLED: 'true' |
| 26 | - # Base publique servie par GitLab Pages (unique domain désactivé). | ||
| 27 | - PAGES_BASE: 'https://juuduu.gitlab.io/re-group-firefox-addon' | ||
| 28 | - # Nom du paquet générique dans le registry. | ||
| 29 | - PKG_NAME: 're-group' | ||
| 30 | 22 | ||
| 31 | include: | 23 | include: |
| 32 | - template: Security/Secret-Detection.gitlab-ci.yml | 24 | - template: Security/Secret-Detection.gitlab-ci.yml |
| @@ -48,8 +40,9 @@ lint: | |||
| 48 | - npx web-ext lint --source-dir=. | 40 | - npx web-ext lint --source-dir=. |
| 49 | 41 | ||
| 50 | # --------------------------------------------------------------------------- | 42 | # --------------------------------------------------------------------------- |
| 51 | -# Sign — sur tag vX.Y.Z uniquement. Vérifie que le manifest == le tag, | 43 | +# Sign — sur tag vX.Y.Z. Vérifie que le manifest == le tag, puis soumet et |
| 52 | -# puis signe via AMO (canal unlisted, signature automatique). | 44 | +# signe la version sur AMO (canal listed). La licence est passée via |
| 45 | +# amo-metadata.json (obligatoire pour une version listed). | ||
| 53 | # --------------------------------------------------------------------------- | 46 | # --------------------------------------------------------------------------- |
| 54 | sign: | 47 | sign: |
| 55 | stage: sign | 48 | stage: sign |
| @@ -66,90 +59,8 @@ sign: | |||
| 66 | fi | 59 | fi |
| 67 | - npm install --no-save web-ext@^10 | 60 | - npm install --no-save web-ext@^10 |
| 68 | # WEB_EXT_API_KEY / WEB_EXT_API_SECRET lus depuis l'environnement. | 61 | # WEB_EXT_API_KEY / WEB_EXT_API_SECRET lus depuis l'environnement. |
| 69 | - - npx web-ext sign --channel=unlisted --source-dir=. --artifacts-dir=signed | 62 | + - npx web-ext sign --channel=listed --amo-metadata=amo-metadata.json --source-dir=. --artifacts-dir=signed |
| 70 | - - mkdir -p out | ||
| 71 | - - cp "$(ls -t signed/*.xpi | head -n1)" "out/${PKG_NAME}-${VERSION}.xpi" | ||
| 72 | - - echo "VERSION=${VERSION}" >> build.env | ||
| 73 | artifacts: | 63 | artifacts: |
| 74 | paths: | 64 | paths: |
| 75 | - - out/ | 65 | + - signed/ |
| 76 | - reports: | 66 | + expire_in: 1 month |
| 77 | - dotenv: build.env | ||
| 78 | - | ||
| 79 | -# --------------------------------------------------------------------------- | ||
| 80 | -# Publish — dépose le .xpi signé dans le Package Registry générique. | ||
| 81 | -# Stockage durable et versionné, jamais écrasé. | ||
| 82 | -# --------------------------------------------------------------------------- | ||
| 83 | -publish: | ||
| 84 | - stage: publish | ||
| 85 | - image: curlimages/curl:latest | ||
| 86 | - needs: [sign] | ||
| 87 | - rules: | ||
| 88 | - - if: '$CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+$/' | ||
| 89 | - script: | ||
| 90 | - - FILE="${PKG_NAME}-${VERSION}.xpi" | ||
| 91 | - - | | ||
| 92 | - curl --fail --silent --show-error \ | ||
| 93 | - --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \ | ||
| 94 | - --upload-file "out/${FILE}" \ | ||
| 95 | - "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PKG_NAME}/${VERSION}/${FILE}" | ||
| 96 | - | ||
| 97 | -# --------------------------------------------------------------------------- | ||
| 98 | -# Release — crée une Release GitLab avec un lien vers le .xpi (pour les humains). | ||
| 99 | -# --------------------------------------------------------------------------- | ||
| 100 | -release: | ||
| 101 | - stage: publish | ||
| 102 | - image: registry.gitlab.com/gitlab-org/release-cli:latest | ||
| 103 | - needs: [sign, publish] | ||
| 104 | - rules: | ||
| 105 | - - if: '$CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+$/' | ||
| 106 | - script: | ||
| 107 | - - echo "Release ${CI_COMMIT_TAG}" | ||
| 108 | - release: | ||
| 109 | - tag_name: '$CI_COMMIT_TAG' | ||
| 110 | - name: 're:group $CI_COMMIT_TAG' | ||
| 111 | - description: 'Version signée disponible sur la page de mise à jour.' | ||
| 112 | - assets: | ||
| 113 | - links: | ||
| 114 | - - name: 're_group ${VERSION} (.xpi signé)' | ||
| 115 | - url: '${PAGES_BASE}/${PKG_NAME}-${VERSION}.xpi' | ||
| 116 | - | ||
| 117 | -# --------------------------------------------------------------------------- | ||
| 118 | -# Pages — reconstruit le site public : miroir de TOUS les .xpi du registry | ||
| 119 | -# + updates.json regénéré depuis la liste complète des versions. | ||
| 120 | -# Aucun état à committer : la source de vérité est le registry. | ||
| 121 | -# --------------------------------------------------------------------------- | ||
| 122 | -pages: | ||
| 123 | - stage: pages | ||
| 124 | - image: alpine:latest | ||
| 125 | - needs: [publish] | ||
| 126 | - rules: | ||
| 127 | - - if: '$CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+$/' | ||
| 128 | - script: | ||
| 129 | - - apk add --no-cache curl jq | ||
| 130 | - - mkdir -p public | ||
| 131 | - - ADDON_ID="$(jq -r '.browser_specific_settings.gecko.id' manifest.json)" | ||
| 132 | - # Liste toutes les versions du paquet générique PKG_NAME. | ||
| 133 | - - | | ||
| 134 | - curl --fail --silent --show-error --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \ | ||
| 135 | - "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages?package_type=generic&per_page=100" \ | ||
| 136 | - > packages.json | ||
| 137 | - - VERSIONS="$(jq -r --arg n "$PKG_NAME" '.[] | select(.name==$n) | .version' packages.json | sort -V)" | ||
| 138 | - - echo "[]" > entries.json | ||
| 139 | - - | | ||
| 140 | - for V in $VERSIONS; do | ||
| 141 | - FILE="${PKG_NAME}-${V}.xpi" | ||
| 142 | - curl --fail --silent --show-error --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \ | ||
| 143 | - -o "public/${FILE}" \ | ||
| 144 | - "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PKG_NAME}/${V}/${FILE}" | ||
| 145 | - jq --arg v "$V" --arg link "${PAGES_BASE}/${FILE}" \ | ||
| 146 | - '. += [{"version":$v,"update_link":$link}]' entries.json > entries.tmp | ||
| 147 | - mv entries.tmp entries.json | ||
| 148 | - done | ||
| 149 | - - | | ||
| 150 | - jq -n --arg id "$ADDON_ID" --slurpfile e entries.json \ | ||
| 151 | - '{addons: {($id): {updates: $e[0]}}}' > public/updates.json | ||
| 152 | - - cat public/updates.json | ||
| 153 | - artifacts: | ||
| 154 | - paths: | ||
| 155 | - - public | ||
modified
README.md +2 -0 | @@ -15,6 +15,8 @@ La spécification complète du comportement est dans [`SPEC.md`](./SPEC.md). | ||
| 15 | 15 | plus longue**. |
| 16 | 16 | - Si tu déplaces un onglet à la main, l'extension respecte ton choix jusqu'à ce que |
| 17 | 17 | l'URL change vers un **autre** groupe. |
| 18 | + - Le bouton "réorganiser" ne respecte pas ton choix manuel, par contre. Ça remettra ton | |
| 19 | + onglet dans son groupe. | |
| 18 | 20 | - Les onglets qui ne matchent rien ne sont jamais retirés d'un groupe. |
| 19 | 21 | - Les groupes sont **par fenêtre** ; les groupes vides sont supprimés par Firefox. |
| 20 | 22 | |
| @@ -15,6 +15,8 @@ La spécification complète du comportement est dans [`SPEC.md`](./SPEC.md). | |||
| 15 | plus longue**. | 15 | plus longue**. |
| 16 | - Si tu déplaces un onglet à la main, l'extension respecte ton choix jusqu'à ce que | 16 | - Si tu déplaces un onglet à la main, l'extension respecte ton choix jusqu'à ce que |
| 17 | l'URL change vers un **autre** groupe. | 17 | l'URL change vers un **autre** groupe. |
| 18 | + - Le bouton "réorganiser" ne respecte pas ton choix manuel, par contre. Ça remettra ton | ||
| 19 | + onglet dans son groupe. | ||
| 18 | - Les onglets qui ne matchent rien ne sont jamais retirés d'un groupe. | 20 | - Les onglets qui ne matchent rien ne sont jamais retirés d'un groupe. |
| 19 | - Les groupes sont **par fenêtre** ; les groupes vides sont supprimés par Firefox. | 21 | - Les groupes sont **par fenêtre** ; les groupes vides sont supprimés par Firefox. |
| 20 | 22 | ||
added
amo-metadata.json +6 -0 | new file mode 100644 | ||
| @@ -0,0 +1,6 @@ | ||
| 1 | +{ | |
| 2 | + "categories": ["tabs"], | |
| 3 | + "version": { | |
| 4 | + "license": "Unlicense" | |
| 5 | + } | |
| 6 | +} | |
| new file mode 100644 | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | +{ | ||
| 2 | + "categories": ["tabs"], | ||
| 3 | + "version": { | ||
| 4 | + "license": "Unlicense" | ||
| 5 | + } | ||
| 6 | +} | ||
modified
manifest.json +1 -2 | @@ -1,14 +1,13 @@ | ||
| 1 | 1 | { |
| 2 | 2 | "manifest_version": 3, |
| 3 | 3 | "name": "__MSG_extName__", |
| 4 | - "version": "0.5.0", | |
| 4 | + "version": "0.5.1", | |
| 5 | 5 | "description": "__MSG_extDescription__", |
| 6 | 6 | "default_locale": "fr", |
| 7 | 7 | "browser_specific_settings": { |
| 8 | 8 | "gecko": { |
| 9 | 9 | "id": "regroup@judu", |
| 10 | 10 | "strict_min_version": "151.0", |
| 11 | - "update_url": "https://juuduu.gitlab.io/re-group-firefox-addon/updates.json", | |
| 12 | 11 | "data_collection_permissions": { |
| 13 | 12 | "required": ["none"] |
| 14 | 13 | } |
| @@ -1,14 +1,13 @@ | |||
| 1 | { | 1 | { |
| 2 | "manifest_version": 3, | 2 | "manifest_version": 3, |
| 3 | "name": "__MSG_extName__", | 3 | "name": "__MSG_extName__", |
| 4 | - "version": "0.5.0", | 4 | + "version": "0.5.1", |
| 5 | "description": "__MSG_extDescription__", | 5 | "description": "__MSG_extDescription__", |
| 6 | "default_locale": "fr", | 6 | "default_locale": "fr", |
| 7 | "browser_specific_settings": { | 7 | "browser_specific_settings": { |
| 8 | "gecko": { | 8 | "gecko": { |
| 9 | "id": "regroup@judu", | 9 | "id": "regroup@judu", |
| 10 | "strict_min_version": "151.0", | 10 | "strict_min_version": "151.0", |
| 11 | - "update_url": "https://juuduu.gitlab.io/re-group-firefox-addon/updates.json", | ||
| 12 | "data_collection_permissions": { | 11 | "data_collection_permissions": { |
| 13 | "required": ["none"] | 12 | "required": ["none"] |
| 14 | } | 13 | } |
modified
web-ext-config.cjs +1 -0 | @@ -3,6 +3,7 @@ | ||
| 3 | 3 | module.exports = { |
| 4 | 4 | ignoreFiles: [ |
| 5 | 5 | "**/*.md", |
| 6 | + "amo-metadata.json", | |
| 6 | 7 | "test/**", |
| 7 | 8 | ".code-review-graph/**", |
| 8 | 9 | "web-ext-config.cjs", |
| @@ -3,6 +3,7 @@ | |||
| 3 | module.exports = { | 3 | module.exports = { |
| 4 | ignoreFiles: [ | 4 | ignoreFiles: [ |
| 5 | "**/*.md", | 5 | "**/*.md", |
| 6 | + "amo-metadata.json", | ||
| 6 | "test/**", | 7 | "test/**", |
| 7 | ".code-review-graph/**", | 8 | ".code-review-graph/**", |
| 8 | "web-ext-config.cjs", | 9 | "web-ext-config.cjs", |