-
Notifications
You must be signed in to change notification settings - Fork 6.8k
[CD] Add COMMIT_ID param to release job #16202
Conversation
@zachgk could you please have a look at this - the other PR is blocked by it |
be13492
to
d5adaa5
Compare
9b82dc9
to
6afee10
Compare
6afee10
to
b675d16
Compare
dev job |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just putting a hold on this for a bit since it might make a merge conflict with the website release. Please bear with me.
Can you explain removing the git_sha param? I didn't see it in use in the init_git function anyways.
Can you describe what steps to take when you do get stuck because of this change? Like if I were to try to emulate the process with a build.py run on a local instance, what would I need to do differently?
@aaronmarkham Can you describe what steps to take when you do get stuck because of this change? Now, the CD pipeline is basically broken in two parts: the first builds and quality assures the libmxnet.so files and pushes them to the artifact repository indexed by the commit id. Then, the pipelines for each delivery channel take the binaries from the artifact repository, packages, tests and ships them. Our issue occurs if there are new commits to the branch from which that CD pipeline is being executed. That is, different (downstream) jobs could end up checking out different states of the repository, and there will be a failure because the binary for a commit id won't be found (since the libmxnet.so build pipeline worked off and got posted with a different commit id). This PR introduces the commit id parameter to the parameterized job to guarantee that the commit id used to checkout the CD pipeline will be used throughout the entire process. The only caveat here is that the interface, (i.e. the parameters) to the parameterized job is defined in the Jenkinsfile using pipeline syntax. This isn't a huge deal since this interface shouldn't change often at all. Can you describe what steps to take when you do get stuck because of this change? Like if I were to try to emulate the process with a build.py run on a local instance, what would I need to do differently? It doesn't quite translate to the process on the local instance because the binary is compiled there. Does any of this make sense? It's kinda convoluted to explain. I'll make a quick change and add this dummy run. Then we can avoid the problem altogether. |
@aaronmarkham also - no problem with you blocking it. I know you want to get this website released hehehe |
a222c60
to
8d91a8f
Compare
aa4c9ee
to
715d1e3
Compare
715d1e3
to
1a11cb7
Compare
6e8ffaa
to
03b9e0e
Compare
@aaronmarkham any movement on this? |
* Removes unnecessary parameter * Adds revision parameter to release job * Update documentation * Changes RELEASE_JOB_TYPE to string parameter * Adds variant and release job type checks * Adds release job update to CD pipeline * Disable concurrent builds for CD pipeline * Updates documentation with new release job mechanics
* Removes unnecessary parameter * Adds revision parameter to release job * Update documentation * Changes RELEASE_JOB_TYPE to string parameter * Adds variant and release job type checks * Adds release job update to CD pipeline * Disable concurrent builds for CD pipeline * Updates documentation with new release job mechanics
Description
Currently, if a new commit on master comes between the different stages, the CD pipeline will break. The reason is, the libxmet binary will be posted against one commit id, but the release pipeline (e.g. for PyPI packages), will be kicked off with the latest commit id.
This PR proposes to fix this issue by introducing a COMMIT_ID parameter to the release job definition. This solves the issue. This means we can use the commit id as the branch specifier in the 'Pipeline' section of the job configuration and ensure that the specified commit_id will be used for the build. This comes with some drawbacks, namely that release job will assume the state of the last job it ran. This can change the pipeline definition and lead to hard to track errors.
Checklist
Essentials
Please feel free to remove inapplicable items for your PR.
Changes
Comments