Chore: Update LF tools role 26/70526/4
authorAnil Belur <abelur@linuxfoundation.org>
Tue, 23 Aug 2022 01:07:46 +0000 (11:07 +1000)
committerAnil Belur <abelur@linuxfoundation.org>
Fri, 26 Jan 2024 18:44:04 +0000 (10:44 -0800)
- Add GHA workflow to test ansible role
- Update tox and pre-commit dependencies

ERROR! the role 'java-install' was not found in <>
The error appears to be in '': line 5, column 7, but may
be elsewhere in the file depending on the exact syntax
problem.

Update role name to match the role path on GHA and
Jenkins jobs.

Ref: https://github.com/ansible/molecule/issues/1042
Change-Id: I7c8f248db7c2d07192aa2f8f3a3c4506a7a3d749
Signed-off-by: Anil Belur <abelur@linuxfoundation.org>
.github/workflow/gerrit-verify.yaml [new file with mode: 0644]
.pre-commit-config.yaml
meta/main.yml
molecule/default/converge.yml
molecule/default/molecule.yml
tox.ini

diff --git a/.github/workflow/gerrit-verify.yaml b/.github/workflow/gerrit-verify.yaml
new file mode 100644 (file)
index 0000000..0ff54f0
--- /dev/null
@@ -0,0 +1,150 @@
+---
+name: Gerrit Verify for Ansible roles
+
+# yamllint disable-line rule:truthy
+on:
+  workflow_dispatch:
+    inputs:
+      GERRIT_BRANCH:
+        description: "Branch that change is against"
+        required: true
+        type: string
+      GERRIT_CHANGE_ID:
+        description: "The ID for the change"
+        required: true
+        type: string
+      GERRIT_CHANGE_NUMBER:
+        description: "The Gerrit number"
+        required: true
+        type: string
+      GERRIT_CHANGE_URL:
+        description: "URL to the change"
+        required: true
+        type: string
+      GERRIT_EVENT_TYPE:
+        description: "Type of Gerrit event"
+        required: true
+        type: string
+      GERRIT_PATCHSET_NUMBER:
+        description: "The patch number for the change"
+        required: true
+        type: string
+      GERRIT_PATCHSET_REVISION:
+        description: "The revision sha"
+        required: true
+        type: string
+      GERRIT_PROJECT:
+        description: "Project in Gerrit"
+        required: true
+        type: string
+      GERRIT_REFSPEC:
+        description: "Gerrit refspec of change"
+        required: true
+        type: string
+
+concurrency:
+  group: ${{ github.event.inputs.GERRIT_CHANGE_ID || github.run_id }}
+  cancel-in-progress: true
+
+jobs:
+  prepare:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Clear votes
+        uses: lfit/gerrit-review-action@v0.3
+        with:
+          host: ${{ vars.LFIT_GERRIT_SERVER }}
+          username: ${{ vars.LFIT_GERRIT_SSH_USER }}
+          key: ${{ secrets.LFIT_GERRIT_SSH_PRIVKEY_NP }}
+          known_hosts: ${{ vars.LFIT_GERRIT_KNOWN_HOSTS }}
+          gerrit-change-number: ${{ inputs.GERRIT_CHANGE_NUMBER }}
+          gerrit-patchset-number: ${{ inputs.GERRIT_PATCHSET_NUMBER }}
+          vote-type: clear
+      - name: Allow replication
+        run: sleep 10s
+
+  actionlint:
+    needs: prepare
+    runs-on: ubuntu-latest
+    steps:
+      - uses: lfit/checkout-gerrit-change-action@v0.4
+        with:
+          gerrit-refspec: ${{ inputs.GERRIT_REFSPEC }}
+          delay: "0s"
+      - name: Download actionlint
+        id: get_actionlint
+        run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
+        shell: bash
+      - name: Check workflow files
+        run: ${{ steps.get_actionlint.outputs.executable }} -color
+        shell: bash
+
+  # run pre-commit tox env separately to get use of more parallel processing
+  pre-commit:
+    needs: prepare
+    runs-on: ubuntu-latest
+    steps:
+      - uses: lfit/checkout-gerrit-change-action@v0.4
+        with:
+          gerrit-refspec: ${{ inputs.GERRIT_REFSPEC }}
+          delay: "0s"
+      - uses: actions/setup-python@v4
+        with:
+          python-version: "3.8"
+      - name: Run static analysis and format checkers
+        run: pipx run pre-commit run --all-files --show-diff-on-failure
+
+  molecule-run:
+    needs: prepare
+    name: Molecule
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        distro:
+          - centos7
+          - centos8
+          - ubuntu1804
+          - ubuntu2004
+          - ubuntu2204
+      fail-fast: false
+    steps:
+      - name: Gerrit Checkout
+        # yamllint disable-line rule:line-length
+        uses: lfit/checkout-gerrit-change-action@70360ca2f8bee3e6a15224d8a03f8e017b1ac91f # v0.4
+        with:
+          gerrit-refspec: ${{ inputs.GERRIT_REFSPEC }}
+          delay: "0s"
+      - name: Install test dependencies.
+        run: |
+          python -m pip install --upgrade pip
+          pip3 install ansible ansible-lint molecule-plugins[docker] docker
+      - name: Run Molecule tests.
+        run: molecule test
+        working-directory: ${{env.working-directory}}
+        env:
+          PY_COLORS: "1"
+          ANSIBLE_FORCE_COLOR: "1"
+          MOLECULE_DISTRO: ${{ matrix.distro }}
+
+  vote:
+    if: ${{ always() }}
+    needs:
+      [
+        prepare,
+        actionlint,
+        pre-commit,
+        molecule-run,
+      ]
+    runs-on: ubuntu-latest
+    steps:
+      - uses: technote-space/workflow-conclusion-action@v3
+      - name: Set vote
+        uses: lfit/gerrit-review-action@v0.3
+        with:
+          host: ${{ vars.LFIT_GERRIT_SERVER }}
+          username: ${{ vars.LFIT_GERRIT_SSH_USER }}
+          key: ${{ secrets.LFIT_GERRIT_SSH_PRIVKEY_NP }}
+          known_hosts: ${{ vars.LFIT_GERRIT_KNOWN_HOSTS }}
+          gerrit-change-number: ${{ inputs.GERRIT_CHANGE_NUMBER }}
+          gerrit-patchset-number: ${{ inputs.GERRIT_PATCHSET_NUMBER }}
+          vote-type: ${{ env.WORKFLOW_CONCLUSION }}
index b10b09b..1af1238 100644 (file)
@@ -1,11 +1,11 @@
 ---
 repos:
   - repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: v4.1.0
+    rev: v4.5.0
     hooks:
       - id: trailing-whitespace
 
   - repo: https://github.com/jorisroovers/gitlint
-    rev: v0.17.0
+    rev: v0.19.1
     hooks:
       - id: gitlint
index 7539f05..990640e 100644 (file)
@@ -1,5 +1,7 @@
 ---
 galaxy_info:
+  namespace: lfit
+  role_name: lf_recommended_tools
   author: Linux Foundation Release Engineering
   description: Install a collection of tools used by LF Projects.
   company: The Linux Foundation
@@ -13,9 +15,12 @@ galaxy_info:
     - name: EL
       versions:
         - 7
+        - 8
+        - 9
     - name: Ubuntu
       versions:
         - xenial
+        - focal
 
   galaxy_tags:
     - system
index 40971d6..1e30adc 100644 (file)
@@ -2,4 +2,4 @@
 - name: Converge
   hosts: all
   roles:
-    - role: lf-recommended-tools
+    - role: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }}"
index 7274ab6..6329307 100644 (file)
@@ -11,7 +11,7 @@ platforms:
   - name: centos7
     image: centos:7
   - name: centos8
-    image: quay.io/pycontribs/centos:stream8
+    image: quay.io/centos/centos:stream8
   - name: ubuntu1804
     image: ubuntu:18.04
   - name: ubuntu2004
diff --git a/tox.ini b/tox.ini
index 0942618..777d967 100644 (file)
--- a/tox.ini
+++ b/tox.ini
@@ -6,10 +6,11 @@ envlist =
 skipsdist=true
 
 [testenv:molecule]
-whitelist_externals = which
+basepython = python3
 deps =
     ansible~=2.9.6
     ansible-lint~=4.2.0
+    detox~=0.18
     docker
     yamllint
     molecule~=3.0.8
@@ -18,11 +19,28 @@ deps =
 passenv = *
 commands =
     ./molecule.sh
+allowlist_externals =
+    ./molecule.sh
 
 [testenv:pre-commit]
-basepython = python3
-deps =
-    pre-commit
+deps = pre-commit
+allowlist_externals = /bin/sh
 commands =
     pre-commit run --all-files --show-diff-on-failure
-    pre-commit run gitlint --hook-stage commit-msg --commit-msg-filename .git/COMMIT_EDITMSG
+    /bin/sh -c 'if ! git config --get user.name > /dev/null; then \
+        git config --global --add user.name "CI"; \
+        touch .git/REMOVE_USERNAME; fi'
+    /bin/sh -c 'if ! git config --get user.email > /dev/null; then \
+        git config --global --add user.email "ci@example.org"; \
+        touch .git/REMOVE_USEREMAIL; fi'
+    /bin/sh -c "if [ -f .git/COMMIT_EDITMSG ]; then \
+        cp .git/COMMIT_EDITMSG .git/COMMIT_MSGTOX; else \
+        git log HEAD -n1 | tail -n +5 | cut -c 5- > .git/COMMIT_MSGTOX; fi"
+    pre-commit run gitlint --hook-stage commit-msg --commit-msg-filename .git/COMMIT_MSGTOX
+    /bin/sh -c "rm -f .git/COMMIT_MSGTOX"
+    /bin/sh -c "if [ -f .git/REMOVE_USERNAME ]; then \
+        git config --global --unset user.name; \
+        rm -f .git/REMOVE_USERNAME; fi"
+    /bin/sh -c "if [ -f .git/REMOVE_USEREMAIL ]; then \
+        git config --global --unset user.email; \
+        rm -f .git/REMOVE_USEREMAIL; fi"