Hello gitlab community
I have a pipeline where I build expo.dev applications, one way to build an app is to use a service ‘EAS’ that is basically a runner that runs on their premises.
Today, I’m launching the build using a command within a job, and that job is stalled doing nothing while polling for a result from the build job ran at EAS. Basically it looks like this:
stages:
- build
- deploy
.build-base: &build-base
<<: *setup_expo
image: node:14-alpine
cache:
- key:
files:
- yarn.lock
paths:
- node_modules
build-native-production:
<<: *build-base
stage: build
before_script:
- apk add --no-cache bash git
script:
- yarn --frozen-lockfile --prefer-offline
- yarn run eas build -p all --non-interactive --profile="production"
And here’s the build log:
All credentials are ready to build @zeloce/zaas-driver (app.zeloce.driver)
- Uploading to EAS Build (0 / 3.8 MB)
✔ Uploaded to EAS Learn more: https://expo.fyi/eas-build-archive
🤖 Android build details: https://expo.dev/accounts/zeloce/builds/69ddd2d8-8e63-463a-9c81-f41a7d6c90cb
🍎 iOS build details: https://expo.dev/accounts/zeloce/builds/fa2a32be-e6cb-4631-b70d-2a82d4e7c700
Waiting for builds to complete. You can press Ctrl+C to exit.
✔ All builds have finished
🤖 Android app:
https://expo.dev/artifacts/eas/e5e4eU99vLkPPBPpkWY5Zi.aab
🍎 iOS app:
https://expo.dev/artifacts/eas/wTGJRcRiJZWPrSFRKU6ZMA.ipa
Done in 3081.87s.
So it finishes with a total duration of 54 minutes 11 seconds.
So I end up having a job doing nothing for almost an hour running on the CI minutes.
I could launch the job and follow up on the other application, but I’d rather keep everything from within the pipeline.
I saw that some integrations (like https://chromatic.io) does exactly that:
- it launches a job on another service,
- that job callbacks gitlab.com,
- it updates the pipeline, adding an external job,
- when you click on it it opens the webpage of that other job, and
- updates the status of that external job with a success or failure when it’s done.
I tried to look the documentation of gitlab’s API and some other documentation elsewhere, I asked around on IRC or gitter for pointers, but no luck.
Is there any doc/tutorial/api doc that one could point to me where I can create/update an external job with the environment from within a gitlab pipeline’s job?
Thank you