使用GitHub Actions执行Ansible lint检查
本篇文章是Ansible lint Advent Calendar 2022的第8篇文章。
现在我们将讨论使用GitHub Actions执行Ansible lint的方法。
使用Action库
GitHub Actions提供了一个Action库,用于执行Ansible社区官方的Ansible lint。
然而,只能在路径中指定的参数非常不易处理。
name: Ansible Lint
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run ansible-lint
uses: ansible-community/ansible-lint-action@v6
with:
path: "playbooks/"
使用Shell脚本运行
由于使用公式的 Action 库比较困难,所以我们将使用 Shell 脚本进行处理。Galaxy Role 的安装部分将根据需要进行相应更改。
name: Ansible Lint
on: [push, pull_request]
jobs:
ansible-lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3'
- name: Install Ansible and ansible-lint
run: |
pip install ansible ansible-lint
- name: Install galaxy roles
run: |
if [ -f 'roles/requirements.yml' ]; then
ansible-galaxy install -r roles/requirements.yml
else
ansible-galaxy install git+https://github.com/${{ github.repository }},${{ github.sha }}
fi
- name: Execulte ansible-lint
run: |
ansible-lint
- name: Show ansible-lint version
run: |
ansible-lint --version
ansible-community --version
其他
GitHub Actions提供的VM在执行Action时,已经预先安装了Ansible。如果需要使用除预装版本以外的Ansible版本,就需要重新安装。