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 }}