Deployment best practices?

As per https://help.github.com/en/github/administering-a-repository/about-releases, a Github release must be associated with a Git tag. This is their design/limitation (depending on how you look at it), so Travis cannot do anything about that.

So you either create tags manually, or create one automatically during a Travis build. See https://docs.travis-ci.com/user/deployment/releases/ for details.

Yes, if you wish to create a “nightly” release each time you push to master, this means you’ll need to create a tag for that and move it each time (and use overwrite: true to overwrite an existing release). See https://github.community/t5/How-to-use-Git-and-GitHub/Nightly-Builds-Latest-Branch-Releases/td-p/4922.

Creating a tag may trigger another build, for the newly-created tag. If it does, your logic needs to somehow recognize this situation (to e.g. avoid infinitely creating new releases).