You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/integration/targets/git/tasks/setup.yml

78 lines
2.6 KiB
YAML

- name: SETUP | clean out the remote_tmp_dir
file:
path: "{{ remote_tmp_dir }}"
state: absent
- name: SETUP | create clean remote_tmp_dir
file:
path: "{{ remote_tmp_dir }}"
state: directory
- name: SETUP | install git
package:
name: '{{ item }}'
when: ansible_distribution not in ["MacOSX", "Alpine"]
notify:
- cleanup
with_items: "{{ git_required_packages[ansible_os_family | default('default') ] | default(git_required_packages.default) }}"
- name: SETUP | verify that git is installed so this test can continue
shell: which git
- name: SETUP | get git version, only newer than {{git_version_supporting_depth}} has fixed git depth
shell: git --version | grep 'git version' | sed 's/git version //'
register: git_version
- name: SETUP | get gpg version
shell: gpg --version 2>1 | head -1 | sed -e 's/gpg (GnuPG) //'
register: gpg_version
- name: SETUP | set git global user.email if not already set
shell: git config --global user.email 'noreply@example.com'
- name: SETUP | set git global user.name if not already set
shell: git config --global user.name 'Ansible Test Runner'
- name: SETUP | set git global init.defaultBranch
shell: >-
git config --global init.defaultBranch '{{ git_default_branch }}'
- name: SETUP | set git global init.templateDir
# NOTE: This custom Git repository template emulates the `init.defaultBranch`
# NOTE: setting on Git versions below 2.28.
# NOTE: Ref: https://superuser.com/a/1559582.
# NOTE: Other workarounds mentioned there, like invoking
# NOTE: `git symbolic-ref HEAD refs/heads/main` after each `git init` turned
# NOTE: out to have mysterious side effects that break the tests in surprising
# NOTE: ways.
shell: |
set -eEu
git config --global \
init.templateDir '{{ remote_tmp_dir }}/git-templates/git.git'
mkdir -pv '{{ remote_tmp_dir }}/git-templates'
set +e
GIT_TEMPLATES_DIR=$(\
2>/dev/null \
ls -1d \
'/Library/Developer/CommandLineTools/usr/share/git-core/templates' \
'/usr/local/share/git-core/templates' \
'/usr/share/git-core/templates' \
)
set -e
>&2 echo "Found Git's default templates directory: ${GIT_TEMPLATES_DIR}"
cp -r "${GIT_TEMPLATES_DIR}" '{{ remote_tmp_dir }}/git-templates/git.git'
echo 'ref: refs/heads/{{ git_default_branch }}' \
> '{{ remote_tmp_dir }}/git-templates/git.git/HEAD'
- name: SETUP | create repo_dir
file:
path: "{{ repo_dir }}"
state: directory
- name: SETUP | show git version
debug:
msg: "Running test with git {{ git_version.stdout }}"