Skip to content

Commit

Permalink
[cherry-pick] Add workflow to cherry pick commits to master (#25) (#27)
Browse files Browse the repository at this point in the history
* Add workflow to cherry pick commits to master (#25)

/cherry-pick

Signed-off-by: Tamal Saha <[email protected]>

* Fix "could not get uid/gid" when building Node/Docker

ref: https://stackoverflow.com/a/52196681

Signed-off-by: Tamal Saha <[email protected]>

Co-authored-by: Tamal Saha <[email protected]>
  • Loading branch information
1gtm and tamalsaha authored Jun 17, 2020
1 parent fdcde29 commit 6ed9b1e
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 2 deletions.
30 changes: 30 additions & 0 deletions .github/workflows/cherry-pick.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: cherry-pick

on:
push:
branches:
- master

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v1

- name: Prepare git
run: |
git config --global user.name "1gtm"
git config --global user.email "[email protected]"
- name: Install GitHub CLI
run: |
curl -fsSL https://github.com/github/hub/raw/master/script/get | bash -s 2.14.1
sudo mv bin/hub /usr/local/bin
- name: Update release branches
env:
GITHUB_USER: 1gtm
GITHUB_TOKEN: ${{ secrets.LGTM_GITHUB_TOKEN }}
run: |
./hack/scripts/cherry-pick.sh
4 changes: 3 additions & 1 deletion Dockerfile.dbg
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,9 @@ FROM {ARG_FROM}
RUN set -x \
&& apk add --update --no-cache bash ca-certificates curl

RUN npm install [email protected] -g
# https://stackoverflow.com/a/52196681
RUN npm config set unsafe-perm true \
&& npm install [email protected] -g

COPY --from=0 restic_{NEW_RESTIC_VER} /bin/restic_{NEW_RESTIC_VER}
COPY bin/{ARG_OS}_{ARG_ARCH}/{ARG_BIN} /{ARG_BIN}
Expand Down
4 changes: 3 additions & 1 deletion Dockerfile.in
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,9 @@ FROM {ARG_FROM}
RUN set -x \
&& apk add --update --no-cache bash ca-certificates curl

RUN npm install [email protected] -g
# https://stackoverflow.com/a/52196681
RUN npm config set unsafe-perm true \
&& npm install [email protected] -g

COPY --from=0 /restic_{NEW_RESTIC_VER} /bin/restic_{NEW_RESTIC_VER}
COPY bin/{ARG_OS}_{ARG_ARCH}/{ARG_BIN} /{ARG_BIN}
Expand Down
48 changes: 48 additions & 0 deletions hack/scripts/cherry-pick.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#!/bin/bash

# Copyright The Stash Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -eou pipefail

should_cherry_pick() {
while IFS=$': \t' read -r -u9 marker v; do
if [ "$marker" = "/cherry-pick" ]; then
return 0
fi
done 9< <(git show -s --format=%b)
return 1
}

should_cherry_pick || {
echo "Skipped cherry picking."
echo "To automatically cherry pick, add /cherry-pick to commit message body."
exit 0
}

git remote set-url origin https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git

while IFS=/ read -r -u9 repo branch; do
git checkout $branch
pr_branch="master-${GITHUB_SHA:0:8}"${branch#"release"}
git checkout -b $pr_branch
git cherry-pick --strategy=recursive -X theirs $GITHUB_SHA
git push -u origin HEAD -f
hub pull-request \
--base $branch \
--labels automerge \
--message "[cherry-pick] $(git show -s --format=%s)" \
--message "$(git show -s --format=%b | sed --expression='/\/cherry-pick/d')" || true
sleep 2
done 9< <(git branch -r | grep release)

0 comments on commit 6ed9b1e

Please sign in to comment.