I have not built a cover for my sukkah, but I can draw from past experience
camping in a yurt. A yurt is designed
to support a small fire inside, in the center, for which purpose there is a
smoke hole in the top. Because you don't want to get rained on when not
burning a fire, the smoke hole has a cover. The best yurt designs have a
domed ring in the center (that the cover goes over), to prevent pooling; you
don't have that option with a sukkah, so we'll have to use a sloped approach
instead, like for a lean-to.
First, get a pair of 2x2s that are a foot or so longer, per 8' of cover length, than your sukkah is tall. (A one-foot difference from front to back provided enough slope for drainage for an 8-foot-deep canvas lean-to in my camping group this summer. If you're trying to cover 20 feet, though, you'll need more height to get that slope.) In the top of each, set a spike that protrudes a couple inches -- a large nail works. Also prepare two blocks of wood thicker than the spike is long and drill a hole partway through each into which the spike can fit. (Chunks of 4x4 would do.) Sand all exposed cut sides of these blocks, as you'll be pulling your cover over them and don't want to risk tearing it on a rough edge.
Choose one side of your sukkah (you might opt for the one that is "ante-windward", the one the wind is least likely to come from) and attach these poles to your existing vertical supports by screwing, bolting, or lashing. Do this on the outside of the sukkah to avoid interfering with your s'chach. We will call this the "tall side" henceforth. If your sukkah is oblong, I recommend doing this on a short side, so your cover is "longer but narrower" as opposed to "shorter but wider". It'll be easier to roll it on and off that way.
Procure (or assemble) a covering of the right size plus a few feet in
length. A plastic tarp is easy but can tear, particularly once you add
grommets (below). Canvas will do a better job of keeping you dry, but
you'll probably have to sew as the widest canvas I've seen for sale is about
58" wide. If your canvas didn't come pre-treated, apply water-proofing (and it's a good idea to seal your seams too).
Set grommets at all four corners. (Note: if setting grommets in
canvas, it's best to do it through a leather patch -- sew leather to canvas
and put grommet through both. This helps against tearing in high winds.)
Next, position two of the corners on the opposite side of your
sukkah at the top (get somebody to hold them in place for this step or tie
them down), and spread the cover over the top until you reach your new
poles. Mark the places on the cover where they meet the spikes, and set
grommets there. (Feel free to give yourself some extra length if you want a
bit of overhang at the lower side.) You should have a couple feet of cover
yet on this side, enough to hang down past your s'schach.
Attach a rope to each corner, long enough to reach the ground from where the cover will sit, plus a foot or two. Quarter-inch rope is sufficient. Use actual rope (like hemp), not something that stretches like clothesline.
Position the cover over the sukkah, with the non-corner grommets going over the poles with the spikes. Once the cover is in place, put one of the blocks over each spike; this will protect your cover from the spikes when you fold it back.
If you are setting your sukkah up on grass, pound a tent-stake near each corner, make a loop in each rope with a slider-knot (err, I wasn't a scout, sorry -- a knot that you can slide along the rope to lengthen or shorten it), put the rope loops through the stakes, and tighten. To pull the cover back, loosen the ropes on the short side, remove from the stakes, and walk the cover back, guiding it with the ropes, until you've pulled the cover back over the tall side. It will hang down the outside.
If you are setting your sukkah up on pavement, you'll need something on the sukkah itself to attach the ropes to. Assuming your sukkah has a "baseboard" (something that sits on the ground to which the uprights are attached), you can tie a loop of rope around it at each corner with a very small amount of "give". If you don't have a "baseboard" you'll need to rig something on your corner posts.
Once you have something on the frame to attach to, either tie off your ropes like above (threading through those ropes instead of tent stakes) or attach a trigger-snap hook to each rope. I highly recommend that you use the hooks for the ropes on the short side, as you'll be fastening and unfastening them a lot (assuming you're keeping your sukkah covered when not in use).
Here is a low-fidelity side view:
This won't keep 100% of the water out, because there's space on the sides between the s'chach and the cover, but it will keep most out.
A sukkah roof has to be open to the sky
Source?