integration test that starts multiple apps

I would like to add following integration test to our library:

  • start up 2 Spring Boot apps (graphql servers) using our library

  • start up node app (graphql gateway) that connects to the Spring Boot apps

  • post HTTP request to the node app and verify the response

  • shut down all apps

i.e. something along the lines

-uses: actions/checkout@v2
-name: Set up Java 11
uses: actions/setup-java@v1
java-version: 11
-name: Start App 1
run: ./gradlew :app1:bootRun
-name: Start App 2
run: ./gradlew :app2:bootRun

-name: Use Node.js 12
 uses: actions/setup-node@v1
 node-version: 12
- name: start gateway
run: |
npm install
npm start
- name: verify
run: |
curl -o response.json -H "Content-Type: application/json" -X POST -d '{"xyz":"abc"}'
jq '.xyz == abc'
# shutdown all apps

Was wondering if GH actions can support such workflows?

You might be able to get this to work if you redirect the output streams from your grade calls to a file and send them to the background.  Actions will not go on to the next step until the output streams opened in the current step have closed. 

Thanks for the info. Sounds pretty problematic. I think it might be easier to wrap it all up in something like docker-compose and then invoke it from GH action. Thanks again!