Skip to content

Commit

Permalink
feat: [#366] Backup and upload Pypi artifacts.
Browse files Browse the repository at this point in the history
  • Loading branch information
030 committed Jul 22, 2023
1 parent 131e1a1 commit da7a925
Show file tree
Hide file tree
Showing 9 changed files with 349 additions and 32 deletions.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ configured by N3DR.

- [docker](./docs/quickstarts/DOCKER.md)
- [maven2](./docs/quickstarts/MAVEN2.md)
- [pypi](./docs/quickstarts/PYPI.md)
- [rubygems](./docs/quickstarts/RUBYGEMS.md)

## Instructions
Expand All @@ -110,3 +111,5 @@ configured by N3DR.
## Stargazers over time

[![Stargazers over time](https://starchart.cc/030/n3dr.svg)](https://starchart.cc/030/n3dr)

go test -tags=integration ./...
90 changes: 90 additions & 0 deletions docs/quickstarts/PYPI.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# Pypi

- [Download N3DR](./snippets/n3dr/DOWNLOAD.md).
- [Start a Nexus3 server](./snippets/nexus3/SERVER.md).
- Create a `some-maven2` repository:

```bash
./n3dr configRepository \
-u admin \
-p $(docker exec -it nexus3-n3dr-src cat /nexus-data/admin.password) \
-n localhost:8081 \
--https=false \
--configRepoName some-maven2 \
--configRepoType maven2
```

- Populate it with artifacts:

```bash
downloadDir=/tmp/some-dir/some-maven2 && \
mkdir -p ${downloadDir} && \
for i in $(seq 20); do
path=${downloadDir}/some/group/1.0.0/1.0.0-${i}
filename="Some_Package"
file="${filename}-1.0.0-${i}"
filePath="${path}/${file}"
mkdir -p ${path}
dd if=/dev/urandom of=${filePath} bs=1M count=${i}

zip ${filePath}.zip ${filePath}
cp ${filePath} ${filePath}.jar
cp ${filePath} ${filePath}-javadoc.jar
cp ${filePath} ${filePath}-sources.jar
cp ${filePath} ${filePath}.war
echo hello > ${filePath}.module

curl -X "POST" \
localhost:8081/service/rest/v1/components?repository=some-maven2 \
-v \
-f \
-u "admin:$(docker exec -it nexus3-n3dr-src cat /nexus-data/admin.password)" \
-H "accept: application/json" \
-H "Content-Type: multipart/form-data" \
-F "maven2.asset1=@${filePath}.jar;type=application/x-java-archive" \
-F "maven2.asset1.extension=jar" \
-F "maven2.asset2=@${filePath}.war;type=application/x-java-archive" \
-F "maven2.asset2.extension=war" \
-F "maven2.asset3=@${filePath}.zip" \
-F "maven2.asset3.extension=zip" \
-F "maven2.asset4=@${filePath}.module" \
-F "maven2.asset4.extension=module" \
-F "maven2.asset5=@${filePath}-javadoc.jar;type=application/x-java-archive" \
-F "maven2.asset5.classifier=javadoc" \
-F "maven2.asset5.extension=jar" \
-F "maven2.asset6=@${filePath}-sources.jar;type=application/x-java-archive" \
-F "maven2.asset6.classifier=sources" \
-F "maven2.asset6.extension=jar" \
-F "maven2.groupId=some.group" \
-F "maven2.artifactId=${filename}" \
-F "maven2.version=1.0.0-${i}" \
-F "maven2.generate-pom=true"
done
```

- [Backup all artifacts](./snippets/n3dr/BACKUP.md).
- Create a local repository without POM files:

```bash
cp -r /tmp/some-dir-backup/some-maven2 /tmp/some-dir-backup/some-maven2-without-pom
rm /tmp/some-dir-backup/some-maven2-without-pom/some/group/Some_Package/1.0.0-*/*.pom
```

- [Start another Nexus3 server](./snippets/nexus3/ANOTHERSERVER.md).
- Create two repositories in the other Nexus3 server:

```bash
for repo in some-maven2 some-maven2-without-pom; do
./n3dr configRepository \
-u admin \
-p $(docker exec -it nexus3-n3dr-dest cat /nexus-data/admin.password) \
-n localhost:9000 \
--https=false \
--configRepoName "${repo}" \
--configRepoType maven2
done
```

- [Upload the artifacts to the other Nexus3 server](./snippets/n3dr/UPLOAD.md).
- [Validate](./snippets/n3dr/VALIDATE.md).
- [Cleanup](./snippets/nexus3/CLEANUP.md).
24 changes: 24 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@ require (
github.com/go-openapi/strfmt v0.21.7
github.com/go-openapi/swag v0.22.4
github.com/go-openapi/validate v0.22.1
github.com/go-sql-driver/mysql v1.7.1
github.com/hashicorp/go-retryablehttp v0.7.4
github.com/mholt/archiver v3.1.1+incompatible
github.com/mitchellh/go-homedir v1.1.0
github.com/ory/dockertest/v3 v3.10.0
github.com/samber/lo v1.38.1
github.com/sirupsen/logrus v1.9.3
github.com/spf13/cobra v1.7.0
Expand All @@ -24,12 +26,21 @@ require (
)

require (
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 // indirect
github.com/Microsoft/go-winio v0.6.0 // indirect
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect
github.com/andybalholm/brotli v1.0.5 // indirect
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
github.com/bodgit/plumbing v1.3.0 // indirect
github.com/bodgit/sevenzip v1.4.2 // indirect
github.com/bodgit/windows v1.0.1 // indirect
github.com/cenkalti/backoff/v4 v4.1.3 // indirect
github.com/containerd/continuity v0.3.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/docker/cli v20.10.17+incompatible // indirect
github.com/docker/docker v20.10.7+incompatible // indirect
github.com/docker/go-connections v0.4.0 // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 // indirect
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/go-logr/logr v1.2.4 // indirect
Expand All @@ -39,11 +50,14 @@ require (
github.com/go-openapi/jsonreference v0.20.2 // indirect
github.com/go-openapi/loads v0.21.2 // indirect
github.com/go-openapi/spec v0.20.9 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/imdario/mergo v0.3.12 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
Expand All @@ -53,13 +67,18 @@ require (
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mholt/archiver/v4 v4.0.0-alpha.8 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/moby/term v0.0.0-20201216013528-df9cb8a40635 // indirect
github.com/nwaples/rardecode v1.1.3 // indirect
github.com/nwaples/rardecode/v2 v2.0.0-beta.2 // indirect
github.com/oklog/ulid v1.3.1 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.0.2 // indirect
github.com/opencontainers/runc v1.1.5 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/pelletier/go-toml/v2 v2.0.8 // indirect
github.com/pierrec/lz4 v2.6.1+incompatible // indirect
github.com/pierrec/lz4/v4 v4.1.18 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/spf13/afero v1.9.5 // indirect
github.com/spf13/cast v1.5.1 // indirect
Expand All @@ -71,14 +90,19 @@ require (
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.1 // indirect
github.com/ulikunitz/xz v0.5.11 // indirect
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
go.mongodb.org/mongo-driver v1.12.0 // indirect
go.opentelemetry.io/otel v1.16.0 // indirect
go.opentelemetry.io/otel/metric v1.16.0 // indirect
go.opentelemetry.io/otel/trace v1.16.0 // indirect
go4.org v0.0.0-20230225012048-214862532bf5 // indirect
golang.org/x/mod v0.11.0 // indirect
golang.org/x/sys v0.9.0 // indirect
golang.org/x/text v0.10.0 // indirect
golang.org/x/tools v0.7.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
Expand Down
Loading

0 comments on commit da7a925

Please sign in to comment.