使用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版本,就需要重新安装。

广告
将在 10 秒后关闭
bannerAds