# 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