diff --git a/.github/workflows/automerge.yaml b/.github/workflows/automerge.yaml new file mode 100644 index 00000000..6e50fb8e --- /dev/null +++ b/.github/workflows/automerge.yaml @@ -0,0 +1,29 @@ +--- +name: automerge +on: + workflow_run: + types: + - completed + workflows: + - 'ci' +jobs: + automerge: + name: Automerge + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' && github.actor == 'nsmbot' }} + steps: + - name: Check out the code + uses: actions/checkout@v2 + - name: Fetch master + run: | + git remote -v + git fetch --depth=1 origin master + - name: Only allow go.mod and go.sum changes + run: | + find . -type f ! -name 'go.mod' ! -name 'go.sum' ! -name '*.yaml' ! -name '*.yml' ! -name '*.txt' ! -name '*.md' ! -name '*.conf' -exec git diff --exit-code origin/master -- {} + + - name: Merge PR + uses: ridedott/merge-me-action@master + with: + GITHUB_LOGIN: nsmbot + ENABLED_FOR_MANUAL_CHANGES: true + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index fe7c1d39..2b0c3698 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -38,7 +38,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v1 with: - go-version: 1.15 + go-version: 1.16 - name: Build run: go build -race ./... @@ -91,7 +91,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v1 with: - go-version: 1.15 + go-version: 1.16 - run: go mod tidy - name: Check for changes run: | @@ -104,7 +104,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v1 with: - go-version: 1.15 + go-version: 1.16 - run: go generate ./... - name: Check for changes run: | @@ -129,7 +129,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v1 with: - go-version: 1.15 + go-version: 1.16 - name: Build container run: docker build . - name: Run tests @@ -167,7 +167,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v1 with: - go-version: 1.15 + go-version: 1.16 - name: Build ${NAME}:${GITHUB_SHA::8} image run: docker build . -t "${ORG}/${NAME}:${GITHUB_SHA::8}" --target runtime - name: Build ${NAME}:latest image @@ -179,78 +179,3 @@ jobs: docker image rm "${ORG}/${NAME}:${GITHUB_SHA::8}" docker push "${ORG}/${NAME}" docker image rm "${ORG}/${NAME}" - - automerge: - name: automerge - runs-on: ubuntu-latest - needs: - - update-deployments-k8s - if: github.actor == 'nsmbot' && github.base_ref == 'master' && github.event_name == 'pull_request' - steps: - - name: Check out the code - uses: actions/checkout@v2 - - name: Fetch master - run: | - git remote -v - git fetch --depth=1 origin master - - name: NSMBot should update only config files - run: find . -type f ! -name 'go.mod' ! -name 'go.sum' ! -name '*.yaml' ! -name '*.yml' ! -name '*.txt' ! -name '*.md' ! -name '*.conf' -exec git diff --exit-code origin/master -- {} + - - name: Automerge nsmbot PR - uses: ridedott/merge-me-action@master - with: - GITHUB_LOGIN: nsmbot - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - update-deployments-k8s: - name: Update deployments-k8s - runs-on: ubuntu-latest - needs: - - pushImage - if: github.repository != 'networkservicemesh/cmd-template' && github.actor == 'nsmbot' && github.base_ref == 'master' && github.event_name == 'pull_request' - steps: - - name: Checkout ${{ github.repository }} - uses: actions/checkout@v2 - with: - path: ${{ github.repository }} - repository: ${{ github.repository }} - token: ${{ secrets.NSM_BOT_GITHUB_TOKEN }} - - uses: benjlevesque/short-sha@v1.2 - id: short-sha - with: - length: 8 - - 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: Create commit message - working-directory: ${{ github.repository }} - run: | - echo "Update application version to latest version from ${{ github.repository }}@master ${{ github.repository }}#${{ github.event.number }}" > /tmp/commit-message - echo "" >> /tmp/commit-message - echo "${{ github.repository }} PR link: https://github.com/${{ github.repository }}/pull/${{ github.event.number }}" >> /tmp/commit-message - echo "" >> /tmp/commit-message - echo "${{ github.repository }} commit message:" >> /tmp/commit-message - git log -1 >> /tmp/commit-message - echo "Commit Message:" - cat /tmp/commit-message - - name: Find and Replace version - uses: jacobtomlinson/gha-find-replace@master - with: - find: "${{ github.event.repository.name }}:.*\n" - replace: "${{ github.event.repository.name }}:${{ steps.short-sha.outputs.sha }}\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 - git config --global user.email "nsmbot@networkservicmesh.io" - git config --global user.name "NSMBot" - git commit -s -F /tmp/commit-message - git checkout -b update/${{ github.repository }} - git push -f origin update/${{ github.repository }} diff --git a/.github/workflows/docker-push.yaml b/.github/workflows/docker-push.yaml index a2b1c98d..43da6d0a 100644 --- a/.github/workflows/docker-push.yaml +++ b/.github/workflows/docker-push.yaml @@ -19,7 +19,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v1 with: - go-version: 1.15 + go-version: 1.16 - name: Build ${NAME}:${GITHUB_SHA::8} image run: docker build . -t "${ORG}/${NAME}:${GITHUB_SHA::8}" --target runtime - name: Build ${NAME}:latest image diff --git a/.github/workflows/update-deployments.yaml b/.github/workflows/update-deployments.yaml index a6bdba04..9c132e65 100644 --- a/.github/workflows/update-deployments.yaml +++ b/.github/workflows/update-deployments.yaml @@ -4,12 +4,16 @@ on: push: branches: - master - + workflow_run: + types: + - completed + workflows: + - 'automerge' jobs: update-deployments-k8s: name: Update deployments-k8s runs-on: ubuntu-latest - if: github.repository != 'networkservicemesh/cmd-template' + if: ${{ github.repository != 'networkservicemesh/cmd-template' && (github.event.workflow_run.conclusion == 'success' && github.actor == 'nsmbot' || github.ref == 'refs/heads/master') }} steps: - name: Checkout ${{ github.repository }} uses: actions/checkout@v2