New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Publishing artifacts #1541
Publishing artifacts #1541
Conversation
Can one of the admins verify this patch? |
(ci) test this please |
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.
Looking good.
I think the pool
directory structure for the 3rd party libraries should follow the Debian conventions rather than having them all published under the indy/pool/${RELEASE}/i/indy-plenum/
folder.
For example:
python3-base58_1.0.0_amd64.deb
=>indy/pool/${RELEASE}/b/base58/python3-base58_1.0.0_amd64.deb
python3-jsonpickle_0.9.6_amd64.deb
=>indy/pool/${RELEASE}/j/jsonpickle/python3-jsonpickle_0.9.6_amd64.deb
python3-rocksdb_0.6.9_amd64.deb
=>indy/pool/${RELEASE}/r/rocksdb/python3-rocksdb_0.6.9_amd64.deb
rocksdb_5.8.8_amd64.deb
=>indy/pool/${RELEASE}/r/rocksdb/rocksdb_5.8.8_amd64.deb
python3-ursa_0.1.1_amd64.deb
=>indy/pool/${RELEASE}/u/ursa/python3-ursa_0.1.1_amd64.deb
.github/workflows/build.yaml
Outdated
mkdir -p /tmp/build-output | ||
./build-scripts/ubuntu-1604/build-indy-plenum.sh /__w/indy-plenum/indy-plenum 1.14.0 /tmp/build-output | ||
mkdir -p /tmp/plenum-build | ||
./build-scripts/ubuntu-1604/build-indy-plenum.sh /__w/indy-plenum/indy-plenum 1.14.0 /tmp/plenum-build |
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.
Hardcoded version number.
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.
Thanks for the feedback!
In the current repo of sovrin the 3rd party libraries are organized as follows
python3-base58_1.0.0_amd64.de
=> deb/pool/xenial/master/p/python3-base58/python3-base58_1.0.0_amd64.deb
python3-rocksdb_0.6.9_amd64.deb
=> /deb/pool/xenial/master/p/python3-rocksdb/python3-rocksdb_0.6.9_amd64.deb
rocksdb_5.8.8_amd64.deb
=> deb/pool/xenial/master/r/rocksdb/rocksdb_5.8.8_amd64.deb
---> All python packes in deb/pool/xenial/master/p/python3-*
Shall we replicate the current directory structure are change it to the proposed structure of @WadeBarnes?
And yes, the version was and is hardcoded. Is there any file where we maintain the current version of plenum? Then we could extract the version from there.
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.
@udosson, I had noticed the same thing with the python packages all being published under .../p/python*/
. I'm not really a fan of that convention. Taking the rocksdb
dependencies for example, I find it much more intuitive to have the rocksdb
dependencies grouped together:
indy/pool/${RELEASE}/r/rocksdb/python3-rocksdb_0.6.9_amd64.deb
indy/pool/${RELEASE}/r/rocksdb/rocksdb_5.8.8_amd64.deb
Then it's clear there is a dependency on rocksdb
as well as the python module for rocksdb
.
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.
https://github.com/hyperledger/indy-plenum/blob/master/plenum/__version__.json is the version file maintained by the https://github.com/hyperledger/indy-plenum/blob/master/bump_version.sh script used to update the package version.
@udosson, I'm testing some updates to this process. I've created a script that will upload the packages to the repository in the manner I've described. The same script should work for the plenum and 3rd party artifacts. |
w00t!!!!! Well done! |
I dug a little further into why repeated build/upload of indy-plenum packages fail, yet repeated build/upload of the 3rd party packages succeed. It seems the indy-plenum build produces a different checksum, even when the exact same code is used for the build. That appears to be causing issues with the lookup the jfrog cli does before it uploads. |
The only files that change from build to build are |
|
@udosson, the changes here (WadeBarnes@b6b6378) are ready to go. I'll rebase them onto this PR once you squash your commit history. |
I've cleared out all of the |
Signed-off-by: udosson <r.klemens@yahoo.de>
efe0af5
to
d5c7b7d
Compare
@WadeBarnes, I squashed my commit history. You're good to rebase your commits onto this PR. |
(ci) test this please |
(ci) test this please |
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.
From a 10,000 foot view - LGTM
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.
I haven't looked at this in a while, and I've never used jFrog - at first glance there is nothing alarming. LGTM
Great. The jFrog part has been through a LOT of testing. |
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.
Looks good to me
- Implement organized publishing of Debian packages. - Set the build version dynamically based on the module version and the type of build being performed. - Migrates the functionality of the following [sovrin-foundation/jenkins-shared](https://github.com/sovrin-foundation/jenkins-shared.git) libraries into a GitHub action. - `getReleaseVersion.groovy` - The `Set release versions` stage from `testAndPublish.groovy` - Cache pip packages to speed up installing the dependencies on the test containers. - This is a bit of a compromise since dependencies could change from build to build making image caching complicated. - Maintain a sorted order for the manifest. - Update `build` and `lint` image build and publishing processes. - Restrict artifact publishing to the main (hyperledger/indy-plenum) repository. - Retain the uploaded deb package in the workflow for 5 days. Signed-off-by: Wade Barnes <wade@neoterictech.ca>
c09b850
to
fa677e7
Compare
I found one small change needed while integrating these changes into |
@WadeBarnes good catch! |
(ci) test this please |
This PR implements the publishing of the artifacts to the JFrog Artifactory of Hyperledger..
The PR currently works for ubuntu 16.04 only.
A successful run of the GitHub action with publishing the artifacts to the JFrog Artifactory of Hyperledger can be found here.
An update of the Docker image was necessary to include
zstd
which is required to pass a cache created by a container to a job that natively runs on ubuntu.