From: Anil Belur Date: Wed, 13 Dec 2023 09:59:12 +0000 (+1000) Subject: Fix: Docker deps conflits on CentOS 8 X-Git-Url: https://gerrit.linuxfoundation.org/infra/gitweb?a=commitdiff_plain;h=574bd9b192b9a7589897df0816999d56d3a71fd3;p=ansible%2Froles%2Fdocker-install.git Fix: Docker deps conflits on CentOS 8 Error: Problem: package containers-common-2:1-57 from appstream requires runc, but none of the providers can be installed Problem: problem with installed package podman-3:4.6.1-5 Update pre-commit and molecule dependencies Add GHA workflow to test ansible roles. Issue: RELENG-5094 Change-Id: Ib61fc75c8775327e1f52fabd5252c9dd662655d9 Signed-off-by: Anil Belur --- diff --git a/.github/workflow/gerrit-verify.yaml b/.github/workflow/gerrit-verify.yaml new file mode 100644 index 0000000..dddfaf7 --- /dev/null +++ b/.github/workflow/gerrit-verify.yaml @@ -0,0 +1,165 @@ +--- +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.GERRIT_SERVER }} + username: ${{ vars.GERRIT_SSH_USER }} + key: ${{ secrets.GERRIT_SSH_PRIVKEY }} + known_hosts: ${{ vars.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: + 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 + env: + PY_COLORS: "1" + ANSIBLE_FORCE_COLOR: "1" + MOLECULE_DISTRO: ${{ matrix.distro }} + + tox-verify: + 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 + id: setup-python + with: + python-version: "3.11" + - name: Run tox + run: >- + pipx run tox + + vote: + if: ${{ always() }} + needs: + [ + prepare, + actionlint, + pre-commit, + tox-verify, + ] + 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.GERRIT_SERVER }} + username: ${{ vars.GERRIT_SSH_USER }} + key: ${{ secrets.GERRIT_SSH_PRIVKEY }} + known_hosts: ${{ vars.GERRIT_KNOWN_HOSTS }} + gerrit-change-number: ${{ inputs.GERRIT_CHANGE_NUMBER }} + gerrit-patchset-number: ${{ inputs.GERRIT_PATCHSET_NUMBER }} + vote-type: ${{ env.WORKFLOW_CONCLUSION }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c1879a6..b10b09b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,11 +1,11 @@ --- repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v1.3.0 + rev: v4.1.0 hooks: - id: trailing-whitespace - repo: https://github.com/jorisroovers/gitlint - rev: v0.11.0 + rev: v0.17.0 hooks: - id: gitlint diff --git a/meta/main.yml b/meta/main.yml index 65d6949..0ae59e0 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -1,5 +1,7 @@ --- galaxy_info: + namespace: lfit + role_name: java_install author: Linux Foundation Release Engineering description: Install Docker CE on Debian and RedHat systems. company: The Linux Foundation @@ -12,9 +14,13 @@ galaxy_info: - name: EL versions: - 7 + - 8 + - 9 + - name: Ubuntu versions: - - xenial + - bionic + - focal galaxy_tags: - containers diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml index 05b5dcb..c71d938 100644 --- a/molecule/default/molecule.yml +++ b/molecule/default/molecule.yml @@ -12,15 +12,32 @@ platforms: image: centos:7 groups: - centos + - centos_version - name: centos7-version image: centos:7 groups: - centos - centos_version - - name: ubuntu1604 - image: ubuntu:16.04 - - name: ubuntu1604-version - image: ubuntu:16.04 + - name: centos8 + image: quay.io/centos/centos:stream8 + groups: + - centos + - centos_version + - name: centos9 + image: quay.io/centos/centos:stream9 + groups: + - centos + - centos_version + - name: ubuntu1804 + image: ubuntu:18.04 + - name: ubuntu1804-version + image: ubuntu:18.04 + groups: + - ubuntu_version + - name: ubuntu2004 + image: ubuntu:20.04 + - name: ubuntu2004-version + image: ubuntu:20.04 groups: - ubuntu_version provisioner: diff --git a/molecule/default/prepare.yml b/molecule/default/prepare.yml new file mode 100644 index 0000000..5358b3b --- /dev/null +++ b/molecule/default/prepare.yml @@ -0,0 +1,5 @@ +--- +- name: Prepare + hosts: all + gather_facts: false + tasks: [] diff --git a/tasks/main.yml b/tasks/main.yml index 5137160..2e9698a 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -23,7 +23,7 @@ - ansible_distribution == 'Ubuntu' - ubuntu_docker_version != 'latest' -- name: Install Docker (RedHat) +- name: Install Docker (RedHat 7) block: - name: Install Docker requirements yum: @@ -41,7 +41,41 @@ name: '{{ docker_ce_name }}' state: present update_cache: true - when: ansible_os_family == 'RedHat' + when: ansible_os_family == 'RedHat' and ansible_distribution_major_version == "7" + become: true + +- name: Install Docker (RedHat 8) + block: + - name: Remove confliting packages with Docker-ce + yum: + name: + - atomic-registries + - buildah + - containers-common + - container-tools + - docker + - podman + - runc + - skopeo + state: absent + update_cache: true + - name: Add Docker repository + get_url: + url: https://download.docker.com/linux/centos/docker-ce.repo + dest: /etc/yum.repos.d/docker-ce.repo + mode: 0644 + - name: Install Docker requirements + yum: + name: + - docker-ce + - docker-ce-cli + - containerd.io + - containerd.io + - docker-buildx-plugin + - docker-compose-plugin + state: present + update_cache: true + when: ansible_os_family == 'RedHat' and ansible_distribution_major_version >= "8" become: true - name: Install Docker (Ubuntu) @@ -51,9 +85,9 @@ name: - apt-transport-https - ca-certificates - - curl - - software-properties-common + - gnupg state: present + update_cache: true - name: Add Docker apt-key apt_key: url: https://download.docker.com/linux/ubuntu/gpg @@ -64,7 +98,13 @@ state: present - name: Install Docker CE apt: - name: '{{ docker_ce_name }}' + name: + - docker-ce + - docker-ce-cli + - containerd.io + - containerd.io + - docker-buildx-plugin + - docker-compose-plugin state: present update_cache: true when: ansible_distribution == 'Ubuntu' @@ -111,6 +151,9 @@ become: true - name: Enable Docker service - service: name=docker enabled=true + systemd: + name: docker + enabled: true ignore_errors: true + when: ansible_os_family == 'RedHat' become: true diff --git a/tox.ini b/tox.ini index a0f2e9b..df67f4f 100644 --- a/tox.ini +++ b/tox.ini @@ -10,16 +10,38 @@ basepython = python3 deps = ansible~=2.9.6 ansible-lint~=4.2.0 + detox~=0.18 docker - molecule - pytest + yamllint + molecule~=3.0.8 + molecule[docker] + pytest~=5.4.0 passenv = * +allowlist_externals = + ./molecule.sh commands = ./molecule.sh [testenv:pre-commit] basepython = python3 deps = pre-commit +allowlist_externals = /bin/sh commands = - pre-commit install --hook-type commit-msg - pre-commit run --all-files + pre-commit run --all-files --show-diff-on-failure + /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"