Skip to content

Commit 67dd898

Browse files
committed
Add pre-provision step for Alpine systems
1 parent fba920b commit 67dd898

4 files changed

Lines changed: 42 additions & 0 deletions

File tree

alts/shared/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,7 @@ def __init__(self, **data):
334334
'Packages/e/epel-release-7-14.noarch.rpm',
335335
}
336336
centos_baseurl: str = 'http://mirror.centos.org/centos'
337+
extra_alpine_repo_baseurl: str = ''
337338
epel_mirror_replacement: str = ''
338339
git_reference_directory: Optional[str] = None
339340
tests_base_dir: str = '/tests'

alts/worker/runners/base.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -752,6 +752,8 @@ def initial_provision(self, verbose=False):
752752
var_dict['epel_mirror_replacement'] = CONFIG.epel_mirror_replacement
753753
if CONFIG.centos_baseurl:
754754
var_dict['centos_repo_baseurl'] = CONFIG.centos_baseurl
755+
if CONFIG.extra_alpine_repo_baseurl:
756+
var_dict['extra_alpine_repo_baseurl'] = CONFIG.extra_alpine_repo_baseurl
755757
cmd_args = [
756758
'-i',
757759
self.ANSIBLE_INVENTORY_FILE,

resources/roles/preparation/tasks/alpine.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,23 @@
22
- name: Update Alpine packages
33
command: apk --allow-untrusted update && apk --allow-untrusted upgrade
44

5+
- name: Set extra packages for Alpine 3.22
6+
set_fact:
7+
extra_packages:
8+
- apk-tools
9+
- libapk2
10+
extra_alpine_repo: "{{ extra_alpine_repo_baseurl }}/{{ configuration.split('-')[1] }}/stable"
11+
when: (ansible_facts.distribution_version | string).startswith('3.22')
12+
13+
- name: Install extra packages on Alpine 3.22
14+
include_tasks: alpine_extra_packages.yml
15+
loop: "{{ extra_packages }}"
16+
loop_control:
17+
loop_var: package_name
18+
when:
19+
- (ansible_facts.distribution_version | string).startswith('3.22')
20+
- extra_alpine_repo is defined
21+
522
- name: Add custom APK repository to /etc/apk/repositories
623
lineinfile:
724
path: /etc/apk/repositories
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
- name: "Get latest {{ package_name }} version from APKINDEX"
3+
shell: |
4+
curl -fsSL "{{ extra_alpine_repo }}/{{ ansible_architecture }}/APKINDEX.tar.gz" \
5+
| tar -xzO APKINDEX \
6+
| awk '/^P:/ { pkg = substr($0,3) } /^V:/ { ver = substr($0,3); if (pkg == "{{ package_name }}") print ver }' \
7+
| sort -V | tail -n1
8+
register: package_version
9+
changed_when: false
10+
11+
- name: "Download {{ package_name }} package"
12+
shell: >
13+
curl -fSL -o "/tmp/{{ package_name }}-{{ package_version.stdout }}.apk" "{{ extra_alpine_repo }}/{{ ansible_architecture }}/{{ package_name }}-{{ package_version.stdout }}.apk"
14+
15+
- name: "Install {{ package_name }} from downloaded package"
16+
command: "apk add --allow-untrusted --no-network /tmp/{{ package_name }}-{{ package_version.stdout }}.apk"
17+
18+
- name: "Verify {{ package_name }} version was installed"
19+
shell: apk list -I {{ package_name }} | head -1 | sed 's/^{{ package_name }}-\([^ ]*\).*/\1/'
20+
register: installed_package_version
21+
changed_when: false
22+
failed_when: installed_package_version.stdout != package_version.stdout

0 commit comments

Comments
 (0)