From e15d7b47777af2ca0dbd20e4b40e1c5458909b9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Sat, 16 Oct 2021 19:45:33 +0100 Subject: [PATCH 01/13] include cross-package coverage in codecov In a recent go-car PR, we noticed that codecov was complaining about an uncovered line, when it was definitely being covered by a test. The problem was that the test was in another package. We could be strict and only count coverage within each package. However, what's most useful is to count the aggregate coverage across all packages in a module. If a module only achieves 70% coverage within each of its packages, but achieves 90% coverage when including cross-package coverage, the latter number is what is actually most interesting to us. Achieving full coverage within each package is perhaps ideal, but certainly not a requirement to have good coverage. Plus, this change will reduce "uncovered line" noise that can be reasonably considered a false positive. --- templates/.github/workflows/go-test.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/templates/.github/workflows/go-test.yml b/templates/.github/workflows/go-test.yml index ceca1cb5..9270db70 100644 --- a/templates/.github/workflows/go-test.yml +++ b/templates/.github/workflows/go-test.yml @@ -29,7 +29,10 @@ jobs: - name: Run tests uses: protocol/multiple-go-modules@v1.2 with: - run: go test -v -coverprofile module-coverage.txt ./... + # Use -coverpkg=./..., so that we include cross-package coverage. + # If package ./A imports ./B, and ./A's tests also cover ./B, + # this means ./B's coverage will be significantly higher than 0%. + run: go test -v -coverprofile=module-coverage.txt -coverpkg=./... ./... - name: Run tests (32 bit) if: ${{ matrix.os != 'macos' }} # can't run 32 bit tests on OSX. uses: protocol/multiple-go-modules@v1.2 From 09af2ddfc317cab8a07dfac14b631dd881ed9e26 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Fri, 12 Nov 2021 11:00:30 +0400 Subject: [PATCH 02/13] update staticcheck to 2021.1.2 (v0.2.2) --- templates/.github/workflows/go-check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/.github/workflows/go-check.yml b/templates/.github/workflows/go-check.yml index 2cb5dd83..494d4814 100644 --- a/templates/.github/workflows/go-check.yml +++ b/templates/.github/workflows/go-check.yml @@ -24,7 +24,7 @@ jobs: echo "RUNGOGENERATE=true" >> $GITHUB_ENV fi - name: Install staticcheck - run: go install honnef.co/go/tools/cmd/staticcheck@df71e5d0e0ed317ebf43e6e59cf919430fa4b8f2 # 2021.1.1 (v0.2.1) + run: go install honnef.co/go/tools/cmd/staticcheck@c8caa92bad8c27ae734c6725b8a04932d54a147b # 2021.1.2 (v0.2.2) - name: Check that go.mod is tidy uses: protocol/multiple-go-modules@v1.2 with: From a2a21182d1133ab6e92653f70616da5cb57840c1 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Fri, 12 Nov 2021 11:59:22 +0400 Subject: [PATCH 03/13] update Codecov action to v2.1.0 --- templates/.github/workflows/go-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/.github/workflows/go-test.yml b/templates/.github/workflows/go-test.yml index ceca1cb5..20846bab 100644 --- a/templates/.github/workflows/go-test.yml +++ b/templates/.github/workflows/go-test.yml @@ -46,7 +46,7 @@ jobs: shell: bash run: echo "COVERAGES=$(find . -type f -name 'module-coverage.txt' | tr -s '\n' ',' | sed 's/,$//')" >> $GITHUB_ENV - name: Upload coverage to Codecov - uses: codecov/codecov-action@51d810878be5422784e86451c0e7c14e5860ec47 # v2.0.2 + uses: codecov/codecov-action@f32b3a3741e1053eb607407145bc9619351dc93b # v2.1.0 with: files: '${{ env.COVERAGES }}' env_vars: OS=${{ matrix.os }}, GO=${{ matrix.go }} From 6947f776de51418ef855ff5926e30b3df29ad4df Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Sun, 21 Nov 2021 18:36:41 +0400 Subject: [PATCH 04/13] create off-master releases if the PR sets the "release" label --- .github/workflows/releaser.yml | 23 +++++++++++++++++++ templates/.github/workflows/release-check.yml | 1 - templates/.github/workflows/releaser.yml | 1 - 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/.github/workflows/releaser.yml b/.github/workflows/releaser.yml index cc978d14..2dca8854 100644 --- a/.github/workflows/releaser.yml +++ b/.github/workflows/releaser.yml @@ -6,11 +6,34 @@ jobs: runs-on: ubuntu-latest env: VERSION: "" + CREATETAG: "false" + BRANCH: "" steps: - uses: actions/checkout@v2 - name: Determine version run: echo "VERSION=$(jq -r .version version.json)" >> $GITHUB_ENV + - name: Determine branch + run: echo "BRANCH=refs/heads/${{ github.event.repository.default_branch }}" >> $GITHUB_ENV + - name: Create a release, if we're on the default branch + run: echo "CREATETAG=true" >> $GITHUB_ENV + if: env.BRANCH == github.ref + - name: Determine if this is commit is a merged PR (if we're not on a non-default branch) + if: env.BRANCH != github.ref + id: getmergedpr + uses: actions-ecosystem/action-get-merged-pull-request@59afe90821bb0b555082ce8ff1e36b03f91553d9 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + - name: Check if the "release" label was set on the PR + if: steps.getmergedpr.outputs.number != '' && env.BRANCH != github.ref + run: | + while IFS= read -r label; do + if [[ "$label" == "release" ]]; then + echo "CREATETAG=true" >> $GITHUB_ENV + break + fi + done <<< "${{ steps.getmergedpr.outputs.labels }}" - name: Create release + if: env.CREATETAG == 'true' run: | git fetch origin --tags if ! $(git rev-list ${{ env.VERSION}}.. &> /dev/null); then diff --git a/templates/.github/workflows/release-check.yml b/templates/.github/workflows/release-check.yml index eb683441..f1b5f7bb 100644 --- a/templates/.github/workflows/release-check.yml +++ b/templates/.github/workflows/release-check.yml @@ -2,7 +2,6 @@ name: Release Checker on: pull_request: paths: [ 'version.json' ] - branches: [ $default-branch ] jobs: release-check: diff --git a/templates/.github/workflows/releaser.yml b/templates/.github/workflows/releaser.yml index 3b866bc6..8549a63b 100644 --- a/templates/.github/workflows/releaser.yml +++ b/templates/.github/workflows/releaser.yml @@ -2,7 +2,6 @@ name: Releaser on: push: paths: [ 'version.json' ] - branches: [ $default-branch ] jobs: releaser: From eb5d1f4be54627a88347c0fa765c9db03349c0ae Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Sun, 21 Nov 2021 21:30:09 +0400 Subject: [PATCH 05/13] post a note explaining the "release" label when targeting a non-default branch --- .github/workflows/release-check.yml | 11 +++++++++++ VERSIONING.md | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/.github/workflows/release-check.yml b/.github/workflows/release-check.yml index ce544ab4..04e39a6a 100644 --- a/.github/workflows/release-check.yml +++ b/.github/workflows/release-check.yml @@ -11,6 +11,7 @@ jobs: GORELEASE: "" GOCOMPAT: "" GOMODDIFF: "" + RELEASE_BRANCH_NOTE: "" steps: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 @@ -94,6 +95,15 @@ jobs: output="(empty)" fi printf "GOCOMPAT<> $GITHUB_ENV + - run: | + echo "RELEASE_BRANCH_NOTE<> $GITHUB_ENV + if: github.base_ref != github.event.repository.default_branch - name: Post output uses: marocchino/sticky-pull-request-comment@82e7a0d3c51217201b3fedc4ddde6632e969a477 # v2.1.1 if: env.INITIAL_RUN == 'false' && env.COMPARETO != '' @@ -118,4 +128,5 @@ jobs: ``` ${{ env.GOCOMPAT }} ``` + ${{ env.RELEASE_BRANCH_NOTE }} diff --git a/VERSIONING.md b/VERSIONING.md index ce97d5dc..c4ccb3cf 100644 --- a/VERSIONING.md +++ b/VERSIONING.md @@ -34,6 +34,10 @@ The [release check workflow](.github/workflows/release-check.yml) will comment o As soon as the PR is merged into the default branch, the [releaser workflow](.github/workflows/releaser.yml) is run. This workflow cuts a new release on CI and pushes the tag. +### Using a Release Branch + +Sometimes it's necessary to cut releases on a release branch. If you open a Pull Request targeting a branch other than the default branch, a new release will only be created if the PR has the `release` label. + ### Dealing with Manual Pushes Unfortunately, GitHub doesn't allow us to disable / restrict pushing of Git tags (see this long-standing [Feature Request](https://github.community/t/feature-request-protected-tags/1742), and consider upvoting it ;)). We can however run a [workflow](.github/workflows/tagpush.yml) when a version tag is pushed. From 1449defbec37bb2727fbd3a983fdbd67222ccbb0 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Tue, 23 Nov 2021 12:10:32 +0400 Subject: [PATCH 06/13] improve env variable naming in releaser workflow --- .github/workflows/releaser.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/releaser.yml b/.github/workflows/releaser.yml index 2dca8854..9a981c22 100644 --- a/.github/workflows/releaser.yml +++ b/.github/workflows/releaser.yml @@ -7,24 +7,24 @@ jobs: env: VERSION: "" CREATETAG: "false" - BRANCH: "" + DEFAULT_BRANCH: "" steps: - uses: actions/checkout@v2 - name: Determine version run: echo "VERSION=$(jq -r .version version.json)" >> $GITHUB_ENV - name: Determine branch - run: echo "BRANCH=refs/heads/${{ github.event.repository.default_branch }}" >> $GITHUB_ENV + run: echo "DEFAULT_BRANCH=refs/heads/${{ github.event.repository.default_branch }}" >> $GITHUB_ENV - name: Create a release, if we're on the default branch run: echo "CREATETAG=true" >> $GITHUB_ENV - if: env.BRANCH == github.ref - - name: Determine if this is commit is a merged PR (if we're not on a non-default branch) - if: env.BRANCH != github.ref + if: env.DEFAULT_BRANCH == github.ref + - name: Determine if this commit is a merged PR (if we're not on a default branch) + if: env.DEFAULT_BRANCH != github.ref id: getmergedpr uses: actions-ecosystem/action-get-merged-pull-request@59afe90821bb0b555082ce8ff1e36b03f91553d9 with: github_token: ${{ secrets.GITHUB_TOKEN }} - name: Check if the "release" label was set on the PR - if: steps.getmergedpr.outputs.number != '' && env.BRANCH != github.ref + if: steps.getmergedpr.outputs.number != '' && env.DEFAULT_BRANCH != github.ref run: | while IFS= read -r label; do if [[ "$label" == "release" ]]; then From 521fd350cbcb13f0cf3016407b0724a4e5f01b99 Mon Sep 17 00:00:00 2001 From: "Masih H. Derkani" Date: Fri, 12 Nov 2021 12:03:10 +0000 Subject: [PATCH 07/13] Integrate unified CI into `filecoin-project/go-legs` (#224) Project: - https://github.com/filecoin-project/go-legs --- config.json | 1 + 1 file changed, 1 insertion(+) diff --git a/config.json b/config.json index 4fe21521..40997952 100644 --- a/config.json +++ b/config.json @@ -5,6 +5,7 @@ { "target": "filecoin-project/go-fil-commp-hashhash" }, { "target": "filecoin-project/go-hamt-ipld" }, { "target": "filecoin-project/go-indexer-core" }, + { "target": "filecoin-project/go-legs" }, { "target": "filecoin-project/indexer-reference-provider" }, { "target": "filecoin-project/storetheindex" }, { "target": "filecoin-shipyard/js-lotus-client-schema" }, From 5db6d161575419272d9d00c4388963cf2434b8d4 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Tue, 16 Nov 2021 17:00:26 +0400 Subject: [PATCH 08/13] chore: add ipfs/go-ds-sql (#225) * chore: add ipfs/go-ds-sql * sorted config.json alphabetically Co-authored-by: Piotr Galar --- config.json | 1 + 1 file changed, 1 insertion(+) diff --git a/config.json b/config.json index 40997952..9204efe3 100644 --- a/config.json +++ b/config.json @@ -35,6 +35,7 @@ { "target": "ipfs/go-ds-pebble" }, { "target": "ipfs/go-ds-redis" }, { "target": "ipfs/go-ds-s3" }, + { "target": "ipfs/go-ds-sql" }, { "target": "ipfs/go-fetcher", "deploy_versioning": true }, { "target": "ipfs/go-filestore", "deploy_versioning": true }, { "target": "ipfs/go-fs-lock" }, From f489585ea44cd61c3f0af8ac3ae5b912c072eb68 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Fri, 12 Nov 2021 13:22:24 +0400 Subject: [PATCH 09/13] use "if:" for OS-specific additional setup steps GitHub Actions finally fixed the issue, see https://github.com/actions/runner/issues/834#issuecomment-9567794. This reverts #202. --- README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 21b62c74..d5a61602 100644 --- a/README.md +++ b/README.md @@ -21,11 +21,8 @@ runs: run: echo "do some initial setup" - name: Step 2 shell: bash - run: | - # note that it's not possible to use if: on the step, see https://github.com/actions/runner/issues/834 - if [[ "${{ matrix.os }}" == "ubuntu" ]]; then - echo "do some Linux-specific setup" - fi + run: echo "do some Linux-specific setup" + if: ${{ matrix.os == 'ubuntu' }} ``` These setup steps are run after the repository has been checked out and after Go has been installed, but before any tests or checks are run. From 79e627d56a9ca1482b50f18ecba6c03a3295a186 Mon Sep 17 00:00:00 2001 From: Adin Schmahmann Date: Thu, 18 Nov 2021 08:26:11 -0800 Subject: [PATCH 10/13] deploy versioning on ipfs/tar-utils --- config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.json b/config.json index 9204efe3..698a0127 100644 --- a/config.json +++ b/config.json @@ -87,7 +87,7 @@ { "target": "ipfs/iptb" }, { "target": "ipfs/iptb-plugins" }, { "target": "ipfs/pinbot-irc" }, - { "target": "ipfs/tar-utils" }, + { "target": "ipfs/tar-utils", "deploy_versioning": true }, { "target": "ipld/codec-fixtures" }, { "target": "ipld/go-car", "deploy_versioning": true }, { "target": "ipld/go-codec-dagpb" }, From 9fc40d15b2b002c5c097c546defcf625bb53ab6e Mon Sep 17 00:00:00 2001 From: galargh Date: Mon, 22 Nov 2021 20:35:20 +0100 Subject: [PATCH 11/13] use msys2 on Windows --- templates/.github/workflows/go-test.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/templates/.github/workflows/go-test.yml b/templates/.github/workflows/go-test.yml index 8f432f14..0b10cd8f 100644 --- a/templates/.github/workflows/go-test.yml +++ b/templates/.github/workflows/go-test.yml @@ -23,6 +23,10 @@ jobs: run: | go version go env + - name: Use msys2 on windows + if: ${{ matrix.os == 'windows' }} + shell: bash + run: echo "C:/msys64/usr/bin" >> $GITHUB_PATH - name: Run repo-specific setup uses: ./.github/actions/go-test-setup if: hashFiles('./.github/actions/go-test-setup') != '' From 4e2a02448beed7cf707728aae091e32d0d1781d7 Mon Sep 17 00:00:00 2001 From: galargh Date: Thu, 2 Dec 2021 17:00:07 +0100 Subject: [PATCH 12/13] add comment about msys2 bash.cmd --- templates/.github/workflows/go-test.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/templates/.github/workflows/go-test.yml b/templates/.github/workflows/go-test.yml index 0b10cd8f..01294752 100644 --- a/templates/.github/workflows/go-test.yml +++ b/templates/.github/workflows/go-test.yml @@ -26,6 +26,10 @@ jobs: - name: Use msys2 on windows if: ${{ matrix.os == 'windows' }} shell: bash + # The executable for msys2 is also called bash.cmd + # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md#shells + # If we prepend its location to the PATH + # subsequent 'shell: bash' steps will use msys2 instead of gitbash run: echo "C:/msys64/usr/bin" >> $GITHUB_PATH - name: Run repo-specific setup uses: ./.github/actions/go-test-setup From 353ff9e322dc0204e771a417a52ec7c182725e39 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Thu, 9 Dec 2021 11:39:10 +0400 Subject: [PATCH 13/13] deploy the versioning workflows to all repos --- .github/workflows/copy-workflow.yml | 10 +-- .github/workflows/dispatch.yml | 2 +- config.json | 96 ++++++++++++++--------------- 3 files changed, 52 insertions(+), 56 deletions(-) diff --git a/.github/workflows/copy-workflow.yml b/.github/workflows/copy-workflow.yml index 5b14f86f..fca2bc0f 100644 --- a/.github/workflows/copy-workflow.yml +++ b/.github/workflows/copy-workflow.yml @@ -92,7 +92,7 @@ jobs: git commit -m "remove .gx" fi - name: add version.json file (in order to deploy versioning workflows) - if: matrix.cfg.deploy_versioning && hashFiles(format('{0}/version.json', env.TARGET_REPO_DIR)) == '' + if: hashFiles(format('{0}/version.json', env.TARGET_REPO_DIR)) == '' working-directory: ${{ env.TARGET_REPO_DIR }} run: | git fetch origin --unshallow # we need the entire commit history @@ -155,13 +155,9 @@ jobs: git commit -m "run gofmt -s" fi - name: determine files to add + # By setting the environment variable, it's possible to programmatically add / modify this list. + # See https://github.com/protocol/.github/blob/38135c75e47839623bf9b2748275d8c6167a8fa8/.github/workflows/copy-workflow.yml#L163-L168 for an example, how we used to make use of this. run: echo "FILES=${{ toJson(github.event.inputs.files) }}" >> $GITHUB_ENV - - name: add more versioning workflows files, if necessary - if: matrix.cfg.deploy_versioning - run: | - files=$(jq -r '.[]' <<< '${{ env.FILES }}') - files+=(".github/workflows/releaser.yml" ".github/workflows/release-check.yml" ".github/workflows/tagpush.yml") - echo "FILES=$(jq -nc '$ARGS.positional' --args ${files[@]})" >> $GITHUB_ENV - name: Add files run: | for f in $(jq -r ".[]" <<< ${{ toJson(env.FILES) }}); do diff --git a/.github/workflows/dispatch.yml b/.github/workflows/dispatch.yml index 4e693ac3..e8d4ae8c 100644 --- a/.github/workflows/dispatch.yml +++ b/.github/workflows/dispatch.yml @@ -9,7 +9,7 @@ on: env: # We could use a higher number here. We use a small number just to make sure to create multiple batches. MAX_REPOS_PER_WORKFLOW: 16 - FILES: '[ ".github/workflows/automerge.yml", ".github/workflows/go-test.yml", ".github/workflows/go-check.yml" ]' # a JSON array of the files to distribute + FILES: '[ ".github/workflows/automerge.yml", ".github/workflows/go-test.yml", ".github/workflows/go-check.yml", ".github/workflows/releaser.yml", ".github/workflows/release-check.yml", ".github/workflows/tagpush.yml" ]' # a JSON array of the files to distribute jobs: matrix: diff --git a/config.json b/config.json index 698a0127..d7f444d1 100644 --- a/config.json +++ b/config.json @@ -15,81 +15,81 @@ { "target": "ipfs-shipyard/w3rc" }, { "target": "ipfs/bbloom" }, { "target": "ipfs/go-bitfield" }, - { "target": "ipfs/go-bitswap", "deploy_versioning": true }, + { "target": "ipfs/go-bitswap" }, { "target": "ipfs/go-block-format" }, - { "target": "ipfs/go-blockservice", "deploy_versioning": true }, + { "target": "ipfs/go-blockservice" }, { "target": "ipfs/go-bs-sqlite3" }, { "target": "ipfs/go-cid" }, { "target": "ipfs/go-cidutil" }, { "target": "ipfs/go-dagwriter" }, - { "target": "ipfs/go-datastore", "deploy_versioning": true }, + { "target": "ipfs/go-datastore" }, { "target": "ipfs/go-detect-race" }, { "target": "ipfs/go-dnslink" }, - { "target": "ipfs/go-ds-badger", "deploy_versioning": true }, + { "target": "ipfs/go-ds-badger" }, { "target": "ipfs/go-ds-badger2" }, { "target": "ipfs/go-ds-bitcask" }, { "target": "ipfs/go-ds-crdt" }, - { "target": "ipfs/go-ds-flatfs", "deploy_versioning": true }, - { "target": "ipfs/go-ds-leveldb", "deploy_versioning": true }, - { "target": "ipfs/go-ds-measure", "deploy_versioning": true }, + { "target": "ipfs/go-ds-flatfs" }, + { "target": "ipfs/go-ds-leveldb" }, + { "target": "ipfs/go-ds-measure" }, { "target": "ipfs/go-ds-pebble" }, { "target": "ipfs/go-ds-redis" }, { "target": "ipfs/go-ds-s3" }, { "target": "ipfs/go-ds-sql" }, - { "target": "ipfs/go-fetcher", "deploy_versioning": true }, - { "target": "ipfs/go-filestore", "deploy_versioning": true }, + { "target": "ipfs/go-fetcher" }, + { "target": "ipfs/go-filestore" }, { "target": "ipfs/go-fs-lock" }, - { "target": "ipfs/go-graphsync", "deploy_versioning": true }, + { "target": "ipfs/go-graphsync" }, { "target": "ipfs/go-ipfs-api" }, - { "target": "ipfs/go-ipfs-blockstore", "deploy_versioning": true }, + { "target": "ipfs/go-ipfs-blockstore" }, { "target": "ipfs/go-ipfs-blocksutil" }, { "target": "ipfs/go-ipfs-chunker" }, { "target": "ipfs/go-ipfs-cmds" }, - { "target": "ipfs/go-ipfs-config", "deploy_versioning": true }, + { "target": "ipfs/go-ipfs-config" }, { "target": "ipfs/go-ipfs-delay" }, - { "target": "ipfs/go-ipfs-ds-help", "deploy_versioning": true }, + { "target": "ipfs/go-ipfs-ds-help" }, { "target": "ipfs/go-ipfs-example-plugin" }, - { "target": "ipfs/go-ipfs-exchange-interface", "deploy_versioning": true }, - { "target": "ipfs/go-ipfs-exchange-offline", "deploy_versioning": true }, + { "target": "ipfs/go-ipfs-exchange-interface" }, + { "target": "ipfs/go-ipfs-exchange-offline" }, { "target": "ipfs/go-ipfs-files" }, { "target": "ipfs/go-ipfs-http-client" }, { "target": "ipfs/go-ipfs-keystore" }, - { "target": "ipfs/go-ipfs-pinner", "deploy_versioning": true }, + { "target": "ipfs/go-ipfs-pinner" }, { "target": "ipfs/go-ipfs-posinfo" }, { "target": "ipfs/go-ipfs-pq" }, - { "target": "ipfs/go-ipfs-provider", "deploy_versioning": true }, - { "target": "ipfs/go-ipfs-routing", "deploy_versioning": true }, + { "target": "ipfs/go-ipfs-provider" }, + { "target": "ipfs/go-ipfs-routing" }, { "target": "ipfs/go-ipfs-util" }, { "target": "ipfs/go-ipld-cbor" }, { "target": "ipfs/go-ipld-format" }, { "target": "ipfs/go-ipld-git" }, { "target": "ipfs/go-ipld-legacy" }, - { "target": "ipfs/go-ipns", "deploy_versioning": true }, + { "target": "ipfs/go-ipns" }, { "target": "ipfs/go-log" }, - { "target": "ipfs/go-merkledag", "deploy_versioning": true }, + { "target": "ipfs/go-merkledag" }, { "target": "ipfs/go-metrics-interface" }, { "target": "ipfs/go-metrics-prometheus" }, - { "target": "ipfs/go-mfs", "deploy_versioning": true }, - { "target": "ipfs/go-namesys", "deploy_versioning": true }, - { "target": "ipfs/go-path", "deploy_versioning": true }, + { "target": "ipfs/go-mfs" }, + { "target": "ipfs/go-namesys" }, + { "target": "ipfs/go-path" }, { "target": "ipfs/go-peertaskqueue" }, { "target": "ipfs/go-qringbuf" }, { "target": "ipfs/go-todocounter" }, - { "target": "ipfs/go-unixfs", "deploy_versioning": true }, - { "target": "ipfs/go-unixfsnode", "deploy_versioning": true }, + { "target": "ipfs/go-unixfs" }, + { "target": "ipfs/go-unixfsnode" }, { "target": "ipfs/go-verifcid" }, { "target": "ipfs/hang-fds" }, { "target": "ipfs/http-api-docs" }, - { "target": "ipfs/interface-go-ipfs-core", "deploy_versioning": true }, + { "target": "ipfs/interface-go-ipfs-core" }, { "target": "ipfs/ipfs-ds-convert" }, { "target": "ipfs/ipfs-update" }, { "target": "ipfs/ipget" }, { "target": "ipfs/iptb" }, { "target": "ipfs/iptb-plugins" }, { "target": "ipfs/pinbot-irc" }, - { "target": "ipfs/tar-utils", "deploy_versioning": true }, + { "target": "ipfs/tar-utils" }, { "target": "ipld/codec-fixtures" }, - { "target": "ipld/go-car", "deploy_versioning": true }, + { "target": "ipld/go-car" }, { "target": "ipld/go-codec-dagpb" }, { "target": "ipld/go-ipld-adl-hamt" }, { "target": "ipld/go-ipld-btc" }, @@ -109,43 +109,43 @@ { "target": "libp2p/go-doh-resolver" }, { "target": "libp2p/go-eventbus" }, { "target": "libp2p/go-flow-metrics" }, - { "target": "libp2p/go-libp2p", "deploy_versioning": true }, + { "target": "libp2p/go-libp2p" }, { "target": "libp2p/go-libp2p-asn-util" }, - { "target": "libp2p/go-libp2p-autonat", "deploy_versioning": true }, + { "target": "libp2p/go-libp2p-autonat" }, { "target": "libp2p/go-libp2p-backoff" }, { "target": "libp2p/go-libp2p-blankhost" }, - { "target": "libp2p/go-libp2p-circuit", "deploy_versioning": true }, + { "target": "libp2p/go-libp2p-circuit" }, { "target": "libp2p/go-libp2p-connmgr" }, { "target": "libp2p/go-libp2p-consensus" }, - { "target": "libp2p/go-libp2p-core", "deploy_versioning": true }, + { "target": "libp2p/go-libp2p-core" }, { "target": "libp2p/go-libp2p-daemon" }, - { "target": "libp2p/go-libp2p-discovery", "deploy_versioning": true }, + { "target": "libp2p/go-libp2p-discovery" }, { "target": "libp2p/go-libp2p-gorpc" }, - { "target": "libp2p/go-libp2p-gostream", "deploy_versioning": true }, - { "target": "libp2p/go-libp2p-http", "deploy_versioning": true }, + { "target": "libp2p/go-libp2p-gostream" }, + { "target": "libp2p/go-libp2p-http" }, { "target": "libp2p/go-libp2p-introspector" }, - { "target": "libp2p/go-libp2p-kad-dht", "deploy_versioning": true }, - { "target": "libp2p/go-libp2p-kbucket", "deploy_versioning": true }, + { "target": "libp2p/go-libp2p-kad-dht" }, + { "target": "libp2p/go-libp2p-kbucket" }, { "target": "libp2p/go-libp2p-loggables" }, { "target": "libp2p/go-libp2p-mplex" }, { "target": "libp2p/go-libp2p-nat" }, { "target": "libp2p/go-libp2p-netutil" }, - { "target": "libp2p/go-libp2p-noise", "deploy_versioning": true }, - { "target": "libp2p/go-libp2p-peerstore", "deploy_versioning": true }, + { "target": "libp2p/go-libp2p-noise" }, + { "target": "libp2p/go-libp2p-peerstore" }, { "target": "libp2p/go-libp2p-pnet" }, - { "target": "libp2p/go-libp2p-pubsub-router", "deploy_versioning": true }, + { "target": "libp2p/go-libp2p-pubsub-router" }, { "target": "libp2p/go-libp2p-pubsub-tracer" }, - { "target": "libp2p/go-libp2p-quic-transport", "deploy_versioning": true }, + { "target": "libp2p/go-libp2p-quic-transport" }, { "target": "libp2p/go-libp2p-raft" }, { "target": "libp2p/go-libp2p-record" }, { "target": "libp2p/go-libp2p-relay-daemon" }, { "target": "libp2p/go-libp2p-routing-helpers" }, - { "target": "libp2p/go-libp2p-swarm", "deploy_versioning": true }, - { "target": "libp2p/go-libp2p-testing", "deploy_versioning": true }, - { "target": "libp2p/go-libp2p-tls", "deploy_versioning": true }, - { "target": "libp2p/go-libp2p-transport-upgrader", "deploy_versioning": true }, + { "target": "libp2p/go-libp2p-swarm" }, + { "target": "libp2p/go-libp2p-testing" }, + { "target": "libp2p/go-libp2p-tls" }, + { "target": "libp2p/go-libp2p-transport-upgrader" }, { "target": "libp2p/go-libp2p-webrtc-direct" }, - { "target": "libp2p/go-libp2p-xor", "deploy_versioning": true }, + { "target": "libp2p/go-libp2p-xor" }, { "target": "libp2p/go-libp2p-yamux" }, { "target": "libp2p/go-mplex" }, { "target": "libp2p/go-msgio" }, @@ -159,7 +159,7 @@ { "target": "libp2p/go-sockaddr" }, { "target": "libp2p/go-socket-activation" }, { "target": "libp2p/go-stream-muxer-multistream" }, - { "target": "libp2p/go-tcp-transport", "deploy_versioning": true }, + { "target": "libp2p/go-tcp-transport" }, { "target": "libp2p/go-ws-transport" }, { "target": "libp2p/go-yamux" }, { "target": "libp2p/hydra-booster" }, @@ -172,7 +172,7 @@ { "target": "multiformats/go-multiaddr-fmt" }, { "target": "multiformats/go-multibase" }, { "target": "multiformats/go-multicodec" }, - { "target": "multiformats/go-multihash", "deploy_versioning": true }, + { "target": "multiformats/go-multihash" }, { "target": "multiformats/go-multistream" }, { "target": "multiformats/go-varint" }, { "target": "multiformats/ma-pipe" }