Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions .github/workflows/trigger-downstream.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
name: Trigger Downstream Tests

on:
workflow_run:
workflows: ["CommCare Core Build"]
types: [completed]

jobs:
trigger-downstream:
# Only run for successful PR builds, not pushes
if: >
github.event.workflow_run.conclusion == 'success' &&
github.event.workflow_run.event == 'pull_request' &&
github.event.workflow_run.pull_requests[0]
Comment thread
dannyroberts marked this conversation as resolved.
Outdated
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- repo: dimagi/commcare-android
check_name: "cross-repo / commcare-android"
workflow_file: commcare-android-pr-workflow.yml
- repo: dimagi/formplayer
check_name: "cross-repo / formplayer"
workflow_file: build.yml
steps:
- name: Generate GitHub App token
id: app-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ secrets.CROSS_REPO_CI_APP_ID }}
private-key: ${{ secrets.CROSS_REPO_CI_PRIVATE_KEY }}
owner: dimagi
repositories: commcare-core,commcare-android,formplayer

- name: Get PR info
id: pr
run: |
echo "sha=${{ github.event.workflow_run.head_sha }}" >> "$GITHUB_OUTPUT"
echo "pr_number=${{ github.event.workflow_run.pull_requests[0].number }}" >> "$GITHUB_OUTPUT"

- name: Set pending status
uses: actions/github-script@v7
env:
COMMCARE_CORE_SHA: ${{ steps.pr.outputs.sha }}
CHECK_NAME: ${{ matrix.check_name }}
with:
github-token: ${{ steps.app-token.outputs.token }}
script: |
await github.rest.repos.createCommitStatus({
owner: 'dimagi',
repo: 'commcare-core',
sha: process.env.COMMCARE_CORE_SHA,
state: 'pending',
context: process.env.CHECK_NAME,
description: 'Waiting for downstream tests...'
});

- name: Trigger downstream workflow
id: dispatch
uses: actions/github-script@v7
env:
COMMCARE_CORE_SHA: ${{ steps.pr.outputs.sha }}
COMMCARE_CORE_PR: ${{ steps.pr.outputs.pr_number }}
CHECK_NAME: ${{ matrix.check_name }}
REPO: ${{ matrix.repo }}
WORKFLOW_FILE: ${{ matrix.workflow_file }}
with:
github-token: ${{ steps.app-token.outputs.token }}
script: |
try {
const [owner, repo] = process.env.REPO.split('/');
await github.rest.actions.createWorkflowDispatch({
owner,
repo,
workflow_id: process.env.WORKFLOW_FILE,
ref: 'dmr/cross-repo-ci',
Comment thread
dannyroberts marked this conversation as resolved.
Outdated
inputs: {
commcare_core_sha: process.env.COMMCARE_CORE_SHA,
commcare_core_pr: process.env.COMMCARE_CORE_PR,
commcare_core_check_name: process.env.CHECK_NAME
}
});
} catch (error) {
// If dispatch fails, set error status so it doesn't stay pending forever
await github.rest.repos.createCommitStatus({
owner: 'dimagi',
repo: 'commcare-core',
sha: process.env.COMMCARE_CORE_SHA,
state: 'error',
context: process.env.CHECK_NAME,
description: `Failed to trigger: ${error.message}`.substring(0, 140)
});
throw error;
}
Loading