Так как в примере DevilPrado есть прозрачная пустота между кнопкой и рамкой, а в Вашем примере этого не будет, то дополню Ваш ответ ещё вот таким вариантом:
Вдруг кому подойдёт больше.
Из минусов - не скруглены внутренние углы. (Можно скруглить, увеличив количество точек у внутреннего контура. Лучшего варианта пока не придумал)
Ширина градиентной границы регулируется в clip-path. В данном примере 10px.