Skip to content

Commit

Permalink
Sync files with networkservicemesh/cmd-template
Browse files Browse the repository at this point in the history
This PR syncs files with https://github.com/networkservicemesh/cmd-template

Revision: https://github.com/networkservicemesh/cmd-template/commits/0e918069285bad36f7f80e09185ce9b29408284d

commit 0e918069285bad36f7f80e09185ce9b29408284d
Author: Nikita Skrynnik <93182827+NikitaSkrynnik@users.noreply.github.com>
Date:   Mon Jan 24 11:07:06 2022 +0700

    Fan-in NSM Releasing (#83)

    * implement fan-in releasing scenario

    Signed-off-by: Nikita Skrynnik <nikita.skrynnik@xored.com>

    * fix linter issue

    Signed-off-by: Nikita Skrynnik <nikita.skrynnik@xored.com>

    * switch to real branch names

    Signed-off-by: Nikita Skrynnik <nikita.skrynnik@xored.com>

Signed-off-by: NSMBot <nsmbot@networkservicmesh.io>
  • Loading branch information
NSMBot committed Jan 24, 2022
1 parent a973a96 commit f9894f5
Show file tree
Hide file tree
Showing 2 changed files with 99 additions and 86 deletions.
86 changes: 0 additions & 86 deletions .github/workflows/automerge.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 }}
99 changes: 99 additions & 0 deletions .github/workflows/release-deployments.yaml
Original file line number Diff line number Diff line change
@@ -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}

0 comments on commit f9894f5

Please sign in to comment.