github.com/networkservicemesh/govpp@v0.0.0-20240328101142-8a444680fbba/.github/workflows/update-dependent-repositories.yaml (about)

     1  ---
     2  name: Update dependent repositories
     3  on:
     4    workflow_call:
     5      inputs:
     6        docker_tag:
     7          type: string
     8          required: true
     9      secrets:
    10        token:
    11          required: true
    12  jobs:
    13    update-dependent-repositories:
    14      continue-on-error: true
    15      strategy:
    16        fail-fast: false
    17        matrix:
    18          repository:
    19            - sdk-vpp
    20            - cmd-forwarder-vpp
    21            - cmd-nse-vlan-vpp
    22            - cmd-nse-vl3-vpp
    23            - cmd-nse-firewall-vpp
    24            - cmd-nsc-vpp
    25            - cmd-nse-icmp-responder-vpp
    26            - cmd-nsc-simple-docker
    27            - cmd-nse-simple-vl3-docker
    28      name: Update ${{ matrix.repository }}
    29      runs-on: ubuntu-latest
    30      steps:
    31        - name: Checkout ${{ github.repository }}
    32          uses: actions/checkout@v2
    33          with:
    34            path: ${{ github.repository }}
    35            repository: ${{ github.repository }}
    36        - name: Find merged PR
    37          uses: jwalton/gh-find-current-pr@v1.3.2
    38          id: findPr
    39          with:
    40            sha: ${{ github.sha }}
    41            github-token: ${{ secrets.token }}
    42        - name: Create commit message
    43          working-directory: ${{ github.repository }}
    44          run: |
    45            echo "Update go.mod and go.sum to latest version from ${{ github.repository }}@${{ inputs.docker_tag }}" >> /tmp/commit-message
    46            echo "PR link: https://github.com/${{ github.repository }}/pull/${{ steps.findPr.outputs.pr }}" >> /tmp/commit-message
    47            echo "" >> /tmp/commit-message
    48            LOG_MSG=$(git log --date=iso --pretty='format:Commit: %h%nAuthor: %an%nDate: %ad%nMessage:%n  - %B%n' -1 | sed '/^$/d;$d')
    49            for((i=2;i<=18;i+=2)); do n=$(printf '%*s' $((i+2))) m=$(printf '%*s' $i) LOG_MSG=$(echo "$LOG_MSG" | tr '\n' '|' | sed "s/${m}-/${n}-/2g" | tr '|' '\n'); done
    50            echo "$LOG_MSG" >> /tmp/commit-message
    51            echo "Commit Message:"
    52            cat /tmp/commit-message
    53        - name: Checkout networkservicemesh/${{ matrix.repository }}
    54          uses: actions/checkout@v2
    55          with:
    56            path: networkservicemesh/${{ matrix.repository }}
    57            repository: networkservicemesh/${{ matrix.repository }}
    58            token: ${{ secrets.token }}
    59        - uses: actions/setup-go@v4
    60          with:
    61            go-version: 1.20.8
    62        - name: Update ${{ matrix.repository }} locally
    63          working-directory: networkservicemesh/${{ matrix.repository }}
    64          run: |
    65            set +e
    66            has_dep=$(grep "github.com/${{ github.repository }}" go.mod | grep -v "// indirect" -c)
    67            if [ "$has_dep" -eq 0 ]; then
    68              echo "${{ matrix.repository }} repo doesn't have ${{ github.repository }} dependency"
    69              exit 0
    70            fi
    71  
    72            go get -u github.com/${{ github.repository }}@${{ inputs.docker_tag }}
    73            go mod tidy
    74            git diff
    75        - name: Find and Replace version
    76          uses: jacobtomlinson/gha-find-replace@v3
    77          with:
    78            find: "VPP_VERSION=.*"
    79            replace: "VPP_VERSION=${{ inputs.docker_tag }}"
    80        - name: Push update to the ${{ matrix.repository }}
    81          working-directory: networkservicemesh/${{ matrix.repository }}
    82          run: |
    83            echo Starting to update repositotry ${{ matrix.repository }}
    84            git config --global user.email "nsmbot@networkservicmesh.io"
    85            git config --global user.name "NSMBot"
    86            git add .
    87            if ! [ -n "$(git diff --cached --exit-code)" ]; then
    88              echo ${{ matrix.repository }} is up to date
    89              exit 0;
    90            fi
    91            git commit -s -F /tmp/commit-message
    92            git checkout -b update/${{ github.repository }}
    93            git push -f origin update/${{ github.repository }}