首页 > 解决方案 > 仅在某些文件更改时运行 Phony 目标

问题描述

仅当当前目录或子目录中的文件已更改时,我才想运行Terraform fmt命令。.tf/.tpl这是我的makefile,不确定是否可以使用makefile:

TF_VERSION=0.10.7

.PHONY: format

README.md: ./variables.tf
    terraform-docs md . > README.md

format: $(wildcard *.tf) $(wildcard */*.tf) $(wildcard */*.tpl)
    docker run -ti -v $(shell pwd):/tmp hashicorp/terraform:${TF_VERSION} fmt /tmp


help:
    @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'

.DEFAULT_GOAL := format

问题是每次都make运行(即使没有任何更改),如果我删除最后一行,我必须运行,否则它只会运行第一条规则。formatmake format

标签: makefileterraform

解决方案


使用一个空文件,其修改时间记录了规则最后一次运行的时间:

format_timestamp: $(wildcard *.tf) ...
    docker run -ti -v ...
    touch $@

推荐阅读