I'm a recent (1.5 years ago) graduate, and I joined a new company about 6 months ago in an in-house tech position. Shortly after joining, I was asked to spend some time to deploy a new release on the weekend. This involves spending about an hour if all goes well, and many more hours if things go wrong. I was told there would only be a few such instances of this, and was told I'd be on a new project soon anyway which didn't have such requirements to deploy on weekends. I didn't argue with this as it seemed to be a one-off, and I'm OK with helping out every now and then when I can.
However, there turned out to be more instances of deployments than planned (releases got split up into smaller releases, and so deployments became more frequent). Again, I was told I'd be on a new project soon, so I was happy to do it a few more times. However, the new project I was moving to got scrapped, and I was stuck on the original project.
Now so far, these deployments have gone relatively smoothly, only requiring me to work for 1-3 hours on a weekend. However, I still feel this is unfair as a) this type of weekend work was not discussed with me before I joined and b) the deployments are unpredictable, so I may already have plans on the weekend, yet I'm expected to work. Fortunately, I have been free for all of the times requested (except one, where I just said I was busy and fortunately my colleague was able to cover me instead), but I don't want this to be the reason I stay silent. I'm also not asked if I'm free, it's just assumed and there's not really any moment for me to say "I'm not free" unless I approach my boss and tell him. However I feel it should be my boss coming to ME and asking if I'm free, am I wrong?
Before joining, there was no mention of working on weekends. There was a bonus discussed, however, but I figured this would be for performing well, not working extra. I'm not paid for the weekend work and I don't receive time off in lieu.
I would like some advice on how to proceed. The way I see it, I have 3 options (feel free to suggest more):
1) Discuss a new way of deploying. I may only be a recent graduate but even I know that deploying to the only production server each time a release is made is a disaster waiting to happen. A better way would be to have 2 production servers, but keep one as "staging" then swap them out when deployment and testing is complete. Either way, there are many more ways to do it. Downside of this is that this is a large corporation and so will likely resist changes like this (given all the infrastructure is designed to work this way), and even if the idea is accepted, it will take many months before it comes into effect.
2) Speak to my boss about getting compensation/time off in lieu for working on the weekends.
3) Flatly refuse to work on the weekends (this is probably not really an option as it's not exactly diplomatic or mature)
Many thanks in advance for any advice.