By default, the API will fetch only 30 open PRs. This is enough currently
as we have 35 open ones. Bump the limit to the maximum. 100 should be enough
for some time. 🤞
Signed-off-by: Ondřej Budai <ondrej@budai.cz>
63 lines
2.1 KiB
YAML
63 lines
2.1 KiB
YAML
# inspired by rhinstaller/anaconda
|
|
|
|
name: Trigger GitLab CI
|
|
|
|
on:
|
|
workflow_run:
|
|
workflows: ["Tests"]
|
|
types: [completed]
|
|
|
|
jobs:
|
|
trigger-gitlab:
|
|
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
SCHUTZBOT_SSH_KEY: ${{ secrets.SCHUTZBOT_SSH_KEY }}
|
|
SKIP_CI: ${{ github.event.pull_request.draft == true || contains(github.event.pull_request.labels.*.name, 'WIP') }}
|
|
steps:
|
|
- name: Report status
|
|
uses: haya14busa/action-workflow_run-status@v1
|
|
|
|
- name: Install Dependencies
|
|
run: |
|
|
sudo apt install -y jq
|
|
|
|
- name: Clone repository
|
|
uses: actions/checkout@v2
|
|
with:
|
|
ref: ${{ github.event.workflow_run.head_sha }}
|
|
fetch-depth: 0
|
|
|
|
- uses: octokit/request-action@v2.x
|
|
id: fetch_pulls
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
route: GET /repos/${{ github.repository }}/pulls
|
|
per_page: 100
|
|
|
|
- name: Checkout branch
|
|
run: |
|
|
PR_DATA=$(mktemp)
|
|
# use uuid as a file terminator to avoid conflicts with data content
|
|
cat > "$PR_DATA" <<'a21b3e7f-d5eb-44a3-8be0-c2412851d2e6'
|
|
${{ steps.fetch_pulls.outputs.data }}
|
|
a21b3e7f-d5eb-44a3-8be0-c2412851d2e6
|
|
|
|
PR=$(jq -rc '.[] | select(.head.sha | contains("${{ github.event.workflow_run.head_sha }}")) | select(.state | contains("open"))' "$PR_DATA" | jq -r .number)
|
|
if [ ! -z "$PR" ]; then
|
|
git checkout -b PR-$PR
|
|
else
|
|
git checkout ${{ github.event.workflow_run.head_branch }}
|
|
fi
|
|
|
|
- name: Push to gitlab
|
|
run: |
|
|
mkdir -p ~/.ssh
|
|
echo "${SCHUTZBOT_SSH_KEY}" > ~/.ssh/id_rsa
|
|
chmod 400 ~/.ssh/id_rsa
|
|
touch ~/.ssh/known_hosts
|
|
ssh-keyscan -t rsa gitlab.com >> ~/.ssh/known_hosts
|
|
git remote add ci git@gitlab.com:osbuild/ci/osbuild-composer.git
|
|
[[ "${SKIP_CI}" == true ]] && PUSH_OPTION="-o ci.skip" || PUSH_OPTION=""
|
|
git push -f ${PUSH_OPTION} ci
|