Skip to content

Commit

Permalink
Add a new workflow for release branch processing (#11814)
Browse files Browse the repository at this point in the history
* Add a new workflow for release branch processing

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

* fix yaml linter issues

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

* fix some errors

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

* apply review comments

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

* use envs everywhere

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

---------

Signed-off-by: NikitaSkrynnik <nikita.skrynnik@xored.com>
  • Loading branch information
NikitaSkrynnik authored Apr 19, 2024
1 parent 39452d6 commit 20185ea
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 33 deletions.
65 changes: 65 additions & 0 deletions .github/workflows/check-release-branches.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
name: Check release branches
on:
push:
- "release/**" # We should only react to branches like "release/networkservicemesh/*/v*.*.*"
- "!release/*" # and ignore branches like "release/v*.*.*". "**" - any character, "*" - any character except "/"

concurrency:
group: check-release-branches
cancel-in-progress: true

jobs:
check-release-branches:
name: Check release branches
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set envs
run: |
echo "tag=$(echo ${{ github.event.ref }} | awk -F '/' '{print $NF}')" >> $GITHUB_ENV
{
echo 'branches<<EOF'
echo $(git branch -r | grep -e "release/networkservicemesh/.*/${{ env.tag }}")
echo EOF
} >> $GITHUB_ENV
# On this step we get all image names from deployments-k8s/apps folder and
# compare them to the set of release/networkservicemesh/cmd-*/${tag} branches.
# If the sets of branches and images are equal then we merge all
# release/networkservicemesh/cmd-*/${tag} branches into release/${tag} branch.
- name: Check release branches
run: |
images=$(grep -roh 'apps' -e "ghcr\.io\/networkservicemesh\/ci\/.*" | cut -d'/' -f4 | cut -d':' -f1 | sort -u)
branches=$(echo ${{ env.branches }} | tr ' ' '\n' | cut -d'/' -f4 | sort -u)
diff <(echo "$branches") <(echo "$images")
- name: Merge branches
run: |
git config --global user.email "nsmbot@networkservicmesh.io"
git config --global user.name "NSMBot"
git checkout -b release/${{ env.tag }}
for branch in ${{ env.branches }}; do
git merge $branch
done
git push -u origin release/${{ env.tag }}
# After merging all release branches we remove them from remote deployments-k8s
- name: Remove release branches
run: |
for branch in ${{ env.branches }}; do
branch=${branch#"origin/"}
gh api \
--method DELETE \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
/repos/networkservicemesh/deployments-k8s/git/refs/heads/$branch
done
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
33 changes: 0 additions & 33 deletions .github/workflows/pr-for-release.yaml

This file was deleted.

0 comments on commit 20185ea

Please sign in to comment.