Description
This is a feature request. Because it's an advanced feature, I understand that it might not be directly implemented but some smaller features would unlock it.
Use case
At Open Collective, we have 2 main repositories, one for our API and one for our Frontend. In our CI, we have e2e tests which are requiring a checkout of both API and Frontend to run.
- In the most simple scenario, we run a checkout of
master
in both projects - In the most common scenario, we run the e2e tests on feature branches of the API, and they run fine with the
master
Frontend because they don't require any modifications of the Frontend - In an advanced scenario, if a feature needs a modification on both API and Frontend, we're using by convention the same exact branch name on API and Frontend (ie:
feat/new-events-page
) and we want the e2e test to use checkouts of these branches.
Status Quo
We're using some magic script that is implementing the functionality using downloaded tarballs (didn't write that!) .
https://github.com/opencollective/opencollective-api/blob/master/scripts/ci_checkout_frontend.sh
GitHub Actions to the rescue
We would like to use a nicely written GitHub Action for that. My initial implementation would be:
- name: Checkout (frontend - matching branch)
uses: actions/checkout@v2-beta
with:
repository: opencollective/opencollective-frontend
path: opencollective-frontend
ref: ${{ github.ref }}
- name: Checkout (frontend - master)
if: failure()
uses: actions/checkout@v2-beta
with:
repository: opencollective/opencollective-frontend
path: opencollective-frontend
ref: master
opencollective/opencollective-api#3031
https://github.com/opencollective/opencollective-api/pull/3031/checks?check_run_id=343540511
It's almost working but unfortunately the first command is sending a CI failure and we can't proceed normally after.
Feature Request
- Ability to skip the failure signal if the checkout doesn't work
- name: Checkout (frontend - matching branch)
uses: actions/checkout@v2-beta
with:
repository: 'opencollective/opencollective-frontend'
ref: ${{ github.ref }}
silentFailure: true
- Ability to know if the checkout with a given id failed
- name: Checkout (frontend - matching branch)
uses: actions/checkout@v2-beta
id: checkout-matching-branch
with:
repository: 'opencollective/opencollective-frontend'
ref: ${{ github.ref }}
silentFailure: true
- name: Checkout (frontend - master)
if: steps.checkout-matching-branch.outputs.failure === 'true'
uses: actions/checkout@v2-beta
with:
repository: 'opencollective/opencollective-frontend'
ref: master