Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I have multiple GitHub Actions workflow files?

Can I have multiple workflow files?

I have a few repo's utilizing GitHub Actions and they work great! In my specific use case, I auto-deploy to my dev environment on "push," and I auto-deploy to production on "release." These are two separate workflows.

I know I can have these two workflows in the same main.workflow file and that would work just fine, but I would prefer to have them in separate workflow files completely. Would it be possible for example to have a dev.workflow file, and a prod.workflow file?

I have tried creating a dev.workflow and prod.workflow file, but they don't seem to be picked up by Actions. It appears a main.workflow file is required. If that is the case, is there a way to source other workflow files into the main.workflow?

like image 499
ItsKarma Avatar asked Jul 19 '19 15:07

ItsKarma


People also ask

Can you have multiple GitHub workflows?

github/workflows directory in a repository, and a repository can have multiple workflows, each of which can perform a different set of tasks.

Can a workflow trigger another workflow?

If multiple triggering event activity types for your workflow occur at the same time, multiple workflow runs will be triggered. For example, the following workflow triggers when an issue is opened or labeled.


2 Answers

You can have multiple files in the .github/workflows folder. All files will be read and run as independent tests. The 'on' parameter on each file will tell when it must be called.

Following your idea you could have:

dev.workflow.yml - To run some kind of testing maybe (only on dev branch, when push)

name: Dev Workflow - Test and check thing on:   push:     branches:       - dev jobs:   ... 

prod.workflow.yml- To build and deploy your project (only on master branch, when a PR is closed)

name: Master Workflow - Build and deploy to production on:   pull_request:     types: closed     branches:       - master jobs:   ... 
like image 168
Tiago Gouvêa Avatar answered Oct 18 '22 17:10

Tiago Gouvêa


Since this question was asked, GitHub has made a few changes to workflows. They are now written in YAML syntax rather than HCL, and instead of being stored in a .github/main.workflow file, they are stored in a .github/workflows directory. The documentation says that "You must store workflow files" (note the plural) "in the .github/workflows directory of your repository."

So once you port your main.workflow file to YAML syntax, you should be able to store each workflow in a single file the way you wanted.

like image 28
rmunn Avatar answered Oct 18 '22 17:10

rmunn