我在stackoverflow網站上瀏覽了一下,但沒有找到與我想實作的類似的東西,希望有人能給我指點一下,謝謝。
我有一個目錄,其中存盤了所有的工件候選發布版和開發版,當有一個竹子構建的時候。到目前為止,我已經知道了如何找到目錄的模式,并驗證洗掉的結果。但是無法過濾結果以排除我想保留的最后三個最新版本。
以下是結構和代碼
Structures 。------
- 名稱:Ansible找到匹配的目錄,保留最后3個版本,洗掉所有其他版本
hosts: localhost
連接:本地
vars:
base_dir: "/opt/repo/"
artifacts:
- "subject-mapper"
- "artemis-margin-api"
任務。
- name: 查找候選發布目錄包
成為:是
查找。
paths: "{{ base_dir }}/{{ item }}"
模式。
- "{{專案}}-[0-9]*. [0-9]*. [0-9]*$"
use_regex: yes
遞回: 沒有
file_type: 目錄
回圈。"{{文物}}"
注冊:輸出
- debug:
msg: "{{ output }}"
- name: 過濾掉候選發布版本的結果,保留最后三個版本的結果
set_fact:
files_to_delete: "{{ (files_to_delete|default([] )) (item['files'] | sort(attribute='mtime') )[:-3] }}"
回圈。"{{ output['results'] }}"
- debug:
msg: "{{ files_to_delete }}"
- 名稱: 洗掉過濾后的結果,但保留最后的3個版本
檔案。
path: "{{ item.path }}"
狀態: 缺席
回圈。"{{ files_to_delete }}}"
when: confirm|default(false)|bool
注冊: output_delete
- debug:
msg: "{{ output_delete }}"
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
這里
uj5u.com熱心網友回復:
最簡單的方法是,從每個結果中彈出前三個匹配:
- set_fact:
files_to_delete: "{{ (files_to_delete|default([])) (item['files'] | sort(attribute='mtime') )[3:] }}"
回圈。"{{ output['results'] }}"
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/328086.html
標籤:
