Deploy a Collection to Ansible Galaxy.
This action expects to be run from a repository with certain met conditions.
- The repository contains a valid Ansible Galaxy Collection, meaning it minimally contains a
galaxy.ymlfile and aREADME.md. - The repository has a top-level
metadirectory with the fileruntime.ymlminimally containing the keyrequires_ansible, which is required by Ansible Galaxy.
An example workflow using this action can be found here and in the tests.
Required: Ansible Galaxy API key.
This should be protected as a secret in your workflow. See Creating and Using Secrets Encrypted Variables.
Default: ./
The directory in which the Ansible Collection is stored. This defaults to the project root.
Only change this if your Collection is not stored in your project root.
Semver-compatible string: 1, 1.1, 1.1.1, 1.1.1-alpha
Dynamically inject a semver-compatible version into your galaxy.yml file.
New in v2.5.0
Default: true
If you want to build a collection archive file but do not want to publish it to Ansible Galaxy, you can disable the publishing by setting this parameter to false.
The Action will create a collection archive file in the default ansible-galaxy collection format: <namespace-from-galaxy-yml>-<name-from-galaxy-yml>-<semver-version>.tar.gz.
e.g. artis3n-mycollection-1.0.0.tar.gz
New in v2.5.0
Default: true
If you already have a built collection archive file you can disable this Action from building one by setting this parameter to false.
This will publish any existing collection archive to Ansible Galaxy.
Note that the Action expects the built archive to exist in the root of the collection_dir directory.
By default, that is the project root.
The Action also expects the built archive to be named in the default ansible-galaxy collection format: <namespace-from-galaxy-yml>-<name-from-galaxy-yml>-<semver-version>.tar.gz.
e.g. artis3n-mycollection-1.0.0.tar.gz
Default: galaxy.yml
A collection must have a galaxy.yml file that contains the necessary information to build a collection artifact. Defaults to "galaxy.yml" in the collection_dir.
This parameter is deprecated as Ansible Galaxy requires the file to be named galaxy.yml and to exist in the root of your Collection. Use collection_dir to specify a non-root directory for your Collection.
Minimal complete example:
---
name: Deploy Collection
# Trigger the workflow however you prefer
on:
release:
types:
- published
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build and Deploy Collection
uses: artis3n/ansible_galaxy_collection@v2
with:
api_key: '${{ secrets.GALAXY_API_KEY }}'Pass in galaxy.yml version as an input parameter:
- name: Get the version name from the tags
run: echo "RELEASE_VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
- name: Injecting a dynamic Collection version
uses: artis3n/ansible_galaxy_collection@v2
with:
api_key: '${{ secrets.GALAXY_API_KEY }}'
galaxy_version: '${{ env.RELEASE_VERSION }}'If your Collection root is not in your repo root:
- name: When the Collection is not in the project root
uses: artis3n/ansible_galaxy_collection@v2
with:
api_key: '${{ secrets.GALAXY_API_KEY }}'
collection_dir: 'src/my_collection'To build a collection without publishing it to Ansible Galaxy:
- name: Build Collection
uses: artis3n/ansible_galaxy_collection@v2
with:
api_key: '${{ secrets.GALAXY_API_KEY }}'
publish: falseIf you already have a collection archive built and merely want to publish it to Ansible Galaxy without building a new one:
- name: Publish Collection
uses: artis3n/ansible_galaxy_collection@v2
with:
api_key: '${{ secrets.GALAXY_API_KEY }}'
build: false0:Ok1:DeployFailed- The Action attempted to deploy to Ansible Galaxy, but failed. There will be details of the error from Ansible Galaxy recorded at the end of the action's logs.
2:ValidationFailed- One or more user-supplied input parameters were invalid. See the error message for validation details.
3:BuildFailed- The action encountered an error performing
ansible-galaxy collection build. Details should be available in the action details.
- The action encountered an error performing
4:PublishFailed- The action encountered an error performing
ansible-galaxy collection publish. Details should be available in the action details.
- The action encountered an error performing