I have been tasked with rebuilding my DevOps pipeline and I need some help with a few parts.
We will have our code in BitBucket and have something trigger a server to spin up and validate our PR's. I don't fully understand how to do this at the moment, but its a pretty common pattern so it shouldn't be too bad. We will run our Unit Tests, do some static code analysis (test coverage, complexity, code quality, etc.).
Next we will have a Jenkins job monitoring master. It will run the unit test suite again (I am thinking that this is necessary because when merging the PR's we could introduce some errors possibly). Next it will build the bits and push it to an artifact repository. This will then start the staging test job.
The staging test job will pick up the bits built by the previous job, or allow any user to start it with a valid staging artifact. It will deploy it to a staging environment and then Run the automated tests here. If they pass it will somehow mark this artifact as acceptable. This is my first big question, is it common to move a compiled artifact between repositories to let the team know when it has passed certain quality thresholds?
Next we will have a job that allows anyone to take an artifact that has passed the automated tests and deploy it to some UAT environment where they can do any manual testing or demo's as required. My big question here is how can we mark this artifact as passed/failed?
Finally we have a job that can push an artifact that has passed manual testing out to production. My thinking is that this would allow us to push anything deemed acceptable to go to the customer, and would give us rollback if we build it correctly.
To summarize my questions:
- How do we mark artifacts that have passed certain stages in the pipeline in an automated fashion?
- How do we mark artifacts as passing final stages in a manual way?
- Is this missing anything major or have you run in to issues with a similar pattern?