Skip to content

Commit 3c534b3

Browse files
authored
Merge pull request #15 from dawidd6/requirements
Support installing requirements
2 parents d28d998 + 9a7cbd2 commit 3c534b3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+16056
-2
lines changed

.github/workflows/test.yml

+9
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,15 @@ jobs:
4848
uses: ./
4949
with:
5050
playbook: playbook.yml
51+
requirements: requirements.yml
52+
options: |
53+
--inventory hosts
54+
--limit local
55+
- name: Test local
56+
uses: ./
57+
with:
58+
playbook: playbook.yml
59+
requirements: requirements-bundle.yml
5160
options: |
5261
--inventory hosts
5362
--limit local

action.yml

+3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ inputs:
77
playbook:
88
description: Ansible playbook filepath
99
required: true
10+
requirements:
11+
description: Ansible Galaxy requirements filepath
12+
required: false
1013
directory:
1114
description: Root directory of Ansible project (defaults to current)
1215
required: false

main.js

+16
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
const core = require('@actions/core')
22
const exec = require('@actions/exec')
3+
const yaml = require('yaml')
34
const fs = require('fs')
45
const os = require('os')
56

67
async function main() {
78
try {
89
const playbook = core.getInput("playbook", { required: true })
10+
const requirements = core.getInput("requirements")
911
const directory = core.getInput("directory")
1012
const key = core.getInput("key")
1113
const inventory = core.getInput("inventory")
@@ -23,6 +25,20 @@ async function main() {
2325
core.saveState("directory", directory)
2426
}
2527

28+
if (requirements) {
29+
const requirementsContent = fs.readFileSync(requirements, 'utf8')
30+
const requirementsObject = yaml.parse(requirementsContent)
31+
32+
if (Array.isArray(requirementsObject)) {
33+
await exec.exec("ansible-galaxy", ["install", "-r", requirements])
34+
} else {
35+
if (requirementsObject.roles)
36+
await exec.exec("ansible-galaxy", ["role", "install", "-r", requirements])
37+
if (requirementsObject.collections)
38+
await exec.exec("ansible-galaxy", ["collection", "install", "-r", requirements])
39+
}
40+
}
41+
2642
if (key) {
2743
const keyFile = ".ansible_key"
2844
fs.writeFileSync(keyFile, key + os.EOL, { mode: 0600 })

node_modules/.package-lock.json

+33
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

node_modules/yaml/LICENSE

+13
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

node_modules/yaml/README.md

+127
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)