From a899cb2765f0fec0b11171aca0d99568eeb4dfc4 Mon Sep 17 00:00:00 2001 From: Network Service Mesh Bot <60070799+nsmbot@users.noreply.github.com> Date: Sun, 23 Jan 2022 22:12:50 -0600 Subject: [PATCH] Sync files with networkservicemesh/cmd-template --- .github/workflows/automerge.yaml | 86 ------------------- .github/workflows/release-deployments.yaml | 99 ++++++++++++++++++++++ 2 files changed, 99 insertions(+), 86 deletions(-) create mode 100644 .github/workflows/release-deployments.yaml diff --git a/.github/workflows/automerge.yaml b/.github/workflows/automerge.yaml index 035d6178..732a3d57 100644 --- a/.github/workflows/automerge.yaml +++ b/.github/workflows/automerge.yaml @@ -11,39 +11,7 @@ jobs: name: Automerge runs-on: ubuntu-latest if: ${{ github.event.workflow_run.conclusion == 'success' && github.actor == 'nsmbot' }} - outputs: - pr_branch_ref: ${{ steps.check_mergeability.outputs.pr_branch_ref }} steps: - - name: Find current PR - uses: jwalton/gh-find-current-pr@v1.0.2 - id: findPr - with: - sha: ${{ github.event.workflow_run.head_sha }} - github-token: ${{ secrets.GITHUB_TOKEN }} - - name: Validate PR number - run: | - if [ -z ${{ steps.findPr.outputs.pr }} ]; then - echo "No opened PR was found for SHA ${{ github.event.workflow_run.head_sha }}" - exit 1 - fi - - name: Get PR Info - id: get_pull_request_info - uses: octokit/request-action@v2.x - with: - route: GET /repos/${{ github.repository }}/pulls/${{ steps.findPr.outputs.pr }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Check mergeability - id: check_mergeability - run: | - echo "Mergeable: ${{ fromJson(steps.get_pull_request_info.outputs.data).mergeable }}" - PR_BRANCH_REF=${{ fromJson(steps.get_pull_request_info.outputs.data).head.ref }} - echo "PR_BRANCH_REF: $PR_BRANCH_REF" - echo "::set-output name=pr_branch_ref::$PR_BRANCH_REF" - if [ "${{ fromJson(steps.get_pull_request_info.outputs.data).mergeable }}" != "true" ]; then - echo "PR has conflicts" - exit 1 - fi - name: Check out the code uses: actions/checkout@v2 - name: Fetch main @@ -59,57 +27,3 @@ jobs: GITHUB_LOGIN: nsmbot ENABLED_FOR_MANUAL_CHANGES: true GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - resolve_conflicts: - name: Autoresolve Conflicts - needs: [automerge] - if: ${{ always() && needs.automerge.result == 'failure' && needs.automerge.outputs.pr_branch_ref != '' && github.actor == 'nsmbot' }} - runs-on: ubuntu-latest - steps: - - name: Checkout default branch - uses: actions/checkout@v2 - with: - fetch-depth: 0 - token: ${{ secrets.GITHUB_TOKEN }} - - name: Checkout PR branch - uses: actions/checkout@v2 - with: - ref: ${{ needs.automerge.outputs.pr_branch_ref }} - fetch-depth: 0 - token: ${{ secrets.GITHUB_TOKEN }} - - name: Verify conflicts only in go.mod/go.sum - run: | - CONFLICTING_FILES=$(git merge-tree $(git merge-base origin/main HEAD) origin/main HEAD | \ - awk 'BEGIN {is_conflict = 0} /changed in both/{is_conflict = 1; next} /base/{if (is_conflict) {print $4; is_conflict = 0} next }' | \ - { grep -vF "go.mod" || true; } | \ - { grep -vF "go.sum" || true; }) - if [[ -n $CONFLICTING_FILES ]]; then - echo "Conflicts can be resolved only in go.mod and go.sum files, but conflicts were found in other files: $CONFLICTING_FILES" - exit 1 - fi - - name: Check number of retries - run: | - if [ $(git log --oneline | head -n 10 | grep -Fc "Automatically resolving conflicts in go.mod") -ge 3 ]; then - echo "Couldn't automatically resolve conflicts (number of re-tries is >= 3). Please, resolve them manually." - exit 1 - fi - - name: Merge default branch - run: | - git config --global user.email "nsmbot@networkservicmesh.io" - git config --global user.name "NSMBot" - git config pull.rebase false - git pull -q origin main -s ort -X theirs - - name: Setup Go - uses: actions/setup-go@v1 - with: - go-version: 1.16 - - name: Re-generate go.sum - run: go mod tidy - - name: Push changes - run: | - echo "Automatically resolving conflicts in go.mod and updating dependency versions to the latest" >> /tmp/commit-message - git config --global user.email "nsmbot@networkservicmesh.io" - git config --global user.name "NSMBot" - git add -- go.sum go.mod - git commit -s -F /tmp/commit-message - echo "Force-pushing changes to ${{ needs.automerge.outputs.pr_branch_ref }}" - git push -f origin ${{ needs.automerge.outputs.pr_branch_ref }} diff --git a/.github/workflows/release-deployments.yaml b/.github/workflows/release-deployments.yaml new file mode 100644 index 00000000..bae5a968 --- /dev/null +++ b/.github/workflows/release-deployments.yaml @@ -0,0 +1,99 @@ +--- +name: Release deployments-k8s repository +on: + push: + branches: + - "release/**" +jobs: + check-branch: + name: Check release branch in deployments-k8s + runs-on: ubuntu-latest + steps: + - name: Get tag + run: | + branch=${{ github.event.ref }} + echo '::set-output name=tag::'${branch#refs/heads/release/} + id: get-tag-step + + - name: Checkout networkservicemesh/deployments-k8s + uses: actions/checkout@v2 + with: + path: networkservicemesh/deployments-k8s + repository: networkservicemesh/deployments-k8s + token: ${{ secrets.NSM_BOT_GITHUB_TOKEN }} + + - name: check-release-branch + working-directory: networkservicemesh/deployments-k8s + run: | + echo Starting to check release branch in deployments-k8s repository + branch=release/${{ steps.get-tag-step.outputs.tag }} + echo branch to be checked - ${branch} + + if ! [ -z "$(git ls-remote --heads origin ${branch})" ]; then + echo Branch ${branch} is already presented in deployments-k8s repository + exit 0; + fi + + echo Branch ${branch} is not presented in repository + echo Starting to create ${branch} branch in deployments-k8s repository + + git config --global user.email "nsmbot@networkservicmesh.io" + git config --global user.name "NSMBot" + git checkout -b ${branch} + git push -u origin ${branch} || exit 0; + + update-deployments-k8s: + needs: check-branch + name: Update deployments-k8s + runs-on: ubuntu-latest + if: ${{ github.repository != 'networkservicemesh/cmd-template' }} + steps: + - name: Get tag + run: | + branch=${{ github.event.ref }} + echo '::set-output name=tag::'${branch#refs/heads/release/} + id: get-tag-step + + - name: Checkout ${{ github.repository }} + uses: actions/checkout@v2 + with: + path: ${{ github.repository }} + repository: ${{ github.repository }} + + - name: Create commit message + working-directory: ${{ github.repository }} + run: | + echo "Update docker images to the latest tag ${{ steps.get-tag-step.outputs.tag }}" >> /tmp/commit-message + echo "" >> /tmp/commit-message + echo "Commit Message:" + cat /tmp/commit-message + + - name: Checkout networkservicemesh/deployments-k8s + uses: actions/checkout@v2 + with: + path: networkservicemesh/deployments-k8s + repository: networkservicemesh/deployments-k8s + token: ${{ secrets.NSM_BOT_GITHUB_TOKEN }} + + - name: Find and Replace ci/${{ github.repository }} version + uses: jacobtomlinson/gha-find-replace@master + with: + find: "ci/${{ github.event.repository.name }}:.*\n" + replace: "${{ github.event.repository.name }}:${{ steps.get-tag-step.outputs.tag }}\n" + + - name: Push update to the deployments-k8s + working-directory: networkservicemesh/deployments-k8s + run: | + echo Starting to update repositotry deployments-k8s + git add -- . + if ! [ -n "$(git diff --cached --exit-code)" ]; then + echo Repository already up to date + exit 0; + fi + + branch=release/${{ github.repository }}/${{ steps.get-tag-step.outputs.tag }} + git config --global user.email "nsmbot@networkservicmesh.io" + git config --global user.name "NSMBot" + git commit -s -F /tmp/commit-message + git checkout -b ${branch} + git push -f origin ${branch}