The two-year deal is for $24 million, a source confirmed to ESPN. MLB Network was the first to report the terms of Roark's agreement.
A 33-year-old right-hander, Roark had a 4.35 ERA and a 10-10 record in 31 starts last season for the Cincinnati Reds and Oakland Athletics, who acquired him on July 31 to beef up their rotation for a successful run to an AL wild-card berth.
He went 4-3 in 10 starts for the A's down the stretch -- giving up 14 home runs, however -- and finished with a 4.58 ERA.
Roark is also only one season removed from slotting high in the Washington Nationals' star-studded rotation alongside Max Scherzer and Stephen Strasburg, although he had the distinction of leading the National League in losses in 2018 when he went 9-15 with a 4.34 ERA.
He has proved his durability, making at least 31 starts and pitching 165 innings for four consecutive seasons.
The veteran starter broke into the big leagues with Washington in 2013 and pitched in parts of six seasons before heading to Cincinnati as part of the majors' first Tanner-for-Tanner trade in December 2018. The Reds acquired him for fellow right-hander Tanner Rainey during last year's winter meetings.
Roark went 15-10 with a 2.85 ERA in 2014, was 16-10 with a career-best 2.83 ERA in 2016 and posted an overall record of 64-54 with 732 strikeouts and a 3.59 ERA with the Nationals.
He was drafted in the 25th round of the 2008 amateur draft by the Texas Rangers, who traded him to the Nationals in January 2010.