My wife's 2005 Yukon Denali 6.0 had the evap codes maybe 5 tears ago. The lines were all good, and one by one I replaced the valve at the canister, the gas cap, and finally the valve on top of the engine - the easy one to get to. That fixed it for years.
Now she has a P0442 MIL - Small evap...