Let only the init stage run so that we have a link on PRs to the CI and can trigger it manually if desired. PR template updated with this info. Also use yaml anchors for rules to reduce duplication.
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')) && !contains(github.event.pull_request.labels.*.name, 'WIP+test') }}
|
|
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.variable="SKIP_CI=true"' || PUSH_OPTION=""
|
|
git push -f ${PUSH_OPTION} ci
|