Compare commits
	
		
			9 Commits
		
	
	
		
			254ce1189d
			...
			8ac67e7ac5
		
	
	| Author | SHA1 | Date | 
|---|---|---|
|  | 8ac67e7ac5 | |
|  | 144cd7368b | |
|  | 3aaef8f9e8 | |
|  | 2829bfa4ad | |
|  | d6e86b302e | |
|  | a54d6dd97f | |
|  | 19aac97f75 | |
|  | 2e71bc4898 | |
|  | ed2d248c6c | 
							
								
								
									
										15
									
								
								README.md
								
								
								
								
							
							
						
						
									
										15
									
								
								README.md
								
								
								
								
							|  | @ -29,9 +29,9 @@ This will: | ||||||
| 
 | 
 | ||||||
| # Usage | # Usage | ||||||
| 
 | 
 | ||||||
| Build and install the [Ubuntu 22.04 Base Box](https://github.com/rgl/ubuntu-vagrant). | Build and install the [Ubuntu 22.04 UEFI Base Box](https://github.com/rgl/ubuntu-vagrant). | ||||||
| 
 | 
 | ||||||
| Build and install the [Windows 2022 Base Box](https://github.com/rgl/windows-vagrant). | Build and install the [Windows 2022 UEFI Base Box](https://github.com/rgl/windows-vagrant). | ||||||
| 
 | 
 | ||||||
| Add the following entry to your `/etc/hosts` file: | Add the following entry to your `/etc/hosts` file: | ||||||
| 
 | 
 | ||||||
|  | @ -50,6 +50,15 @@ You can also login with one of the example accounts, e.g. `alice.doe` and passwo | ||||||
| **NB** nginx is setup with a self-signed certificate that you have to trust before being | **NB** nginx is setup with a self-signed certificate that you have to trust before being | ||||||
| able to access the local Nexus home page. | able to access the local Nexus home page. | ||||||
| 
 | 
 | ||||||
|  | ## Network Packet Capture | ||||||
|  | 
 | ||||||
|  | You can easily capture and see traffic from the host with the `wireshark.sh` | ||||||
|  | script, e.g., to capture the traffic from the `lo` interface: | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | ./wireshark.sh nexus lo | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
| # Notes | # Notes | ||||||
| 
 | 
 | ||||||
| ## Check for a component existence | ## Check for a component existence | ||||||
|  | @ -136,7 +145,7 @@ You can also access the database cli shell as: | ||||||
| sudo su -l                            # switch to the root user. | sudo su -l                            # switch to the root user. | ||||||
| systemctl stop nexus                  # make sure nexus is not running while you use the database. | systemctl stop nexus                  # make sure nexus is not running while you use the database. | ||||||
| su -s /bin/bash nexus                 # switch to the nexus user. | su -s /bin/bash nexus                 # switch to the nexus user. | ||||||
| nexus_home=/opt/nexus/nexus-3.75.1-01 # make sure you have the correct version here. | nexus_home=/opt/nexus/nexus-3.79.1-04 # make sure you have the correct version here. | ||||||
| nexus_data="$(realpath $nexus_home/../sonatype-work/nexus3)" | nexus_data="$(realpath $nexus_home/../sonatype-work/nexus3)" | ||||||
| function h2-shell { | function h2-shell { | ||||||
|   java \ |   java \ | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ Vagrant.configure(2) do |config| | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   config.vm.define :nexus do |config| |   config.vm.define :nexus do |config| | ||||||
|     config.vm.box = 'ubuntu-22.04-amd64' |     config.vm.box = 'ubuntu-22.04-uefi-amd64' | ||||||
|     config.vm.hostname = nexus_domain |     config.vm.hostname = nexus_domain | ||||||
|     config.vm.network 'private_network', ip: nexus_ip |     config.vm.network 'private_network', ip: nexus_ip | ||||||
|     config.vm.provider :libvirt do |lv, config| |     config.vm.provider :libvirt do |lv, config| | ||||||
|  | @ -48,7 +48,7 @@ Vagrant.configure(2) do |config| | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   config.vm.define :windows do |config| |   config.vm.define :windows do |config| | ||||||
|     config.vm.box = 'windows-2022-amd64' |     config.vm.box = 'windows-2022-uefi-amd64' | ||||||
|     config.vm.network 'private_network', ip: '192.168.56.4' |     config.vm.network 'private_network', ip: '192.168.56.4' | ||||||
|     config.vm.provider :libvirt do |lv, config| |     config.vm.provider :libvirt do |lv, config| | ||||||
|       config.vm.synced_folder '.', '/vagrant', type: 'smb', smb_username: ENV['USER'], smb_password: ENV['VAGRANT_SMB_PASSWORD'] |       config.vm.synced_folder '.', '/vagrant', type: 'smb', smb_username: ENV['USER'], smb_password: ENV['VAGRANT_SMB_PASSWORD'] | ||||||
|  |  | ||||||
|  | @ -1,34 +1,34 @@ | ||||||
| backports.tarfile==1.2.0 | backports.tarfile==1.2.0 | ||||||
| build==1.2.2.post1 | build==1.2.2.post1 | ||||||
| certifi==2024.8.30 | certifi==2025.4.26 | ||||||
| cffi==1.17.1 | cffi==1.17.1 | ||||||
| charset-normalizer==3.4.0 | charset-normalizer==3.4.2 | ||||||
| cryptography==44.0.0 | cryptography==45.0.3 | ||||||
| docutils==0.21.2 | docutils==0.21.2 | ||||||
|  | id==1.5.0 | ||||||
| idna==3.10 | idna==3.10 | ||||||
| importlib_metadata==8.5.0 | importlib_metadata==8.7.0 | ||||||
| jaraco.classes==3.4.0 | jaraco.classes==3.4.0 | ||||||
| jaraco.context==6.0.1 | jaraco.context==6.0.1 | ||||||
| jaraco.functools==4.1.0 | jaraco.functools==4.1.0 | ||||||
| jeepney==0.8.0 | jeepney==0.9.0 | ||||||
| keyring==25.5.0 | keyring==25.6.0 | ||||||
| markdown-it-py==3.0.0 | markdown-it-py==3.0.0 | ||||||
| mdurl==0.1.2 | mdurl==0.1.2 | ||||||
| more-itertools==10.5.0 | more-itertools==10.7.0 | ||||||
| nh3==0.2.19 | nh3==0.2.21 | ||||||
| packaging==24.2 | packaging==25.0 | ||||||
| pkginfo==1.12.0 |  | ||||||
| pycparser==2.22 | pycparser==2.22 | ||||||
| Pygments==2.18.0 | Pygments==2.19.1 | ||||||
| pyproject_hooks==1.2.0 | pyproject_hooks==1.2.0 | ||||||
| readme_renderer==44.0 | readme_renderer==44.0 | ||||||
| requests==2.32.3 | requests==2.32.3 | ||||||
| requests-toolbelt==1.0.0 | requests-toolbelt==1.0.0 | ||||||
| rfc3986==2.0.0 | rfc3986==2.0.0 | ||||||
| rich==13.9.4 | rich==14.0.0 | ||||||
| SecretStorage==3.3.3 | SecretStorage==3.3.3 | ||||||
| tomli==2.2.1 | tomli==2.2.1 | ||||||
| twine==6.0.1 | twine==6.1.0 | ||||||
| typing_extensions==4.12.2 | typing_extensions==4.14.0 | ||||||
| urllib3==2.2.3 | urllib3==2.4.0 | ||||||
| zipp==3.21.0 | zipp==3.22.0 | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ var RegistryClient = require('npm-registry-client'); | ||||||
| 
 | 
 | ||||||
| var client = new RegistryClient({}); | var client = new RegistryClient({}); | ||||||
| 
 | 
 | ||||||
| // see https://github.com/npm/npm-registry-client/blob/v8.5.0/lib/adduser.js
 | // see https://github.com/npm/npm-registry-client/blob/v8.6.0/lib/adduser.js
 | ||||||
| client.adduser( | client.adduser( | ||||||
|   process.env.NPM_REGISTRY, |   process.env.NPM_REGISTRY, | ||||||
|   { |   { | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ | ||||||
| set -euxo pipefail | set -euxo pipefail | ||||||
| 
 | 
 | ||||||
| # see https://github.com/moby/moby/releases | # see https://github.com/moby/moby/releases | ||||||
| docker_version="${1:-24.0.5}"; shift || true | docker_version="${1:-28.2.2}"; shift || true | ||||||
| registry_proxy_domain="${1:-$(hostname --fqdn)}"; shift || true | registry_proxy_domain="${1:-$(hostname --fqdn)}"; shift || true | ||||||
| # NB as-of docker 19.03.8, there is still no way to specify a registry mirror credentials, | # NB as-of docker 19.03.8, there is still no way to specify a registry mirror credentials, | ||||||
| #    as such, we cannot use our docker-group registry, instead we must use the docker-proxy | #    as such, we cannot use our docker-group registry, instead we must use the docker-proxy | ||||||
|  | @ -22,12 +22,12 @@ apt-get update | ||||||
| # install docker. | # install docker. | ||||||
| # see https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#install-using-the-repository | # see https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#install-using-the-repository | ||||||
| apt-get install -y apt-transport-https software-properties-common | apt-get install -y apt-transport-https software-properties-common | ||||||
| wget -qO- https://download.docker.com/linux/ubuntu/gpg | apt-key add - | wget -qO- https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/download.docker.com.gpg | ||||||
| add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/download.docker.com.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" >/etc/apt/sources.list.d/docker.list | ||||||
| apt-get update | apt-get update | ||||||
| apt-cache madison docker-ce | apt-cache madison docker-ce | ||||||
| docker_version="$(apt-cache madison docker-ce | awk "/$docker_version[~-]/{print \$3}")" | docker_package_version="$(apt-cache madison docker-ce | awk "/$docker_version/{print \$3}")" | ||||||
| apt-get install -y "docker-ce=$docker_version" "docker-ce-cli=$docker_version" containerd.io | apt-get install -y "docker-ce=$docker_package_version" "docker-ce-cli=$docker_package_version" containerd.io | ||||||
| 
 | 
 | ||||||
| # configure it. | # configure it. | ||||||
| systemctl stop docker | systemctl stop docker | ||||||
|  | @ -35,6 +35,9 @@ cat >/etc/docker/daemon.json <<'EOF' | ||||||
| { | { | ||||||
|     "experimental": false, |     "experimental": false, | ||||||
|     "debug": false, |     "debug": false, | ||||||
|  |     "features": { | ||||||
|  |         "buildkit": true | ||||||
|  |     }, | ||||||
|     "log-driver": "journald", |     "log-driver": "journald", | ||||||
|     "labels": [ |     "labels": [ | ||||||
|         "os=linux" |         "os=linux" | ||||||
|  | @ -63,3 +66,6 @@ usermod -aG docker vagrant | ||||||
| ctr version | ctr version | ||||||
| docker version | docker version | ||||||
| docker info | docker info | ||||||
|  | docker network ls | ||||||
|  | ip link | ||||||
|  | bridge link | ||||||
|  |  | ||||||
|  | @ -1,10 +1,14 @@ | ||||||
| #!/bin/bash | #!/bin/bash | ||||||
| set -euxo pipefail | set -euxo pipefail | ||||||
| 
 | 
 | ||||||
| # pin the microsoft apt repository above the distro. | # opt-out of telemetry. | ||||||
|  | echo 'export DOTNET_CLI_TELEMETRY_OPTOUT=1' >/etc/profile.d/opt-out-dotnet-cli-telemetry.sh | ||||||
|  | source /etc/profile.d/opt-out-dotnet-cli-telemetry.sh | ||||||
|  | 
 | ||||||
|  | # pin the microsoft apt repository packages above the distro ones. | ||||||
| # see apt-cache policy | # see apt-cache policy | ||||||
| # see apt-cache policy dotnet-sdk-6.0 | # see apt-cache policy dotnet-sdk-8.0 | ||||||
| # see apt-cache showpkg dotnet-sdk-6.0 | # see apt-cache showpkg dotnet-sdk-8.0 | ||||||
| # see http://manpages.ubuntu.com/manpages/jammy/en/man5/apt_preferences.5.html | # see http://manpages.ubuntu.com/manpages/jammy/en/man5/apt_preferences.5.html | ||||||
| cat >/etc/apt/preferences.d/packages.microsoft.com.pref <<'EOF' | cat >/etc/apt/preferences.d/packages.microsoft.com.pref <<'EOF' | ||||||
| Package: * | Package: * | ||||||
|  | @ -12,18 +16,14 @@ Pin: origin "packages.microsoft.com" | ||||||
| Pin-Priority: 999 | Pin-Priority: 999 | ||||||
| EOF | EOF | ||||||
| 
 | 
 | ||||||
| # opt-out of telemetry. |  | ||||||
| echo 'export DOTNET_CLI_TELEMETRY_OPTOUT=1' >/etc/profile.d/opt-out-dotnet-cli-telemetry.sh |  | ||||||
| source /etc/profile.d/opt-out-dotnet-cli-telemetry.sh |  | ||||||
| 
 |  | ||||||
| # install the dotnet core sdk. | # install the dotnet core sdk. | ||||||
| # see https://docs.microsoft.com/en-us/dotnet/core/install/linux-ubuntu | # see https://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu | ||||||
| wget -qO packages-microsoft-prod.deb "https://packages.microsoft.com/config/ubuntu/$(lsb_release -s -r)/packages-microsoft-prod.deb" | wget -qO packages-microsoft-prod.deb "https://packages.microsoft.com/config/ubuntu/$(lsb_release -s -r)/packages-microsoft-prod.deb" | ||||||
| dpkg -i packages-microsoft-prod.deb | dpkg -i packages-microsoft-prod.deb | ||||||
| rm packages-microsoft-prod.deb | rm packages-microsoft-prod.deb | ||||||
| apt-get install -y apt-transport-https | apt-get install -y apt-transport-https | ||||||
| apt-get update | apt-get update | ||||||
| apt-get install -y dotnet-sdk-6.0 | apt-get install -y dotnet-sdk-8.0 | ||||||
| 
 | 
 | ||||||
| # show versions. | # show versions. | ||||||
| dotnet --info | dotnet --info | ||||||
|  |  | ||||||
|  | @ -35,17 +35,17 @@ pushd /opt/nexus | ||||||
| # see https://help.sonatype.com/repomanager3/product-information/download/download-archives---repository-manager-3 | # see https://help.sonatype.com/repomanager3/product-information/download/download-archives---repository-manager-3 | ||||||
| # see https://help.sonatype.com/repomanager3/product-information/release-notes | # see https://help.sonatype.com/repomanager3/product-information/release-notes | ||||||
| # see https://help.sonatype.com/repomanager3 | # see https://help.sonatype.com/repomanager3 | ||||||
| nexus_version=3.75.1-01 | nexus_version=3.79.1-04 | ||||||
| nexus_home=/opt/nexus/nexus-$nexus_version | nexus_home=/opt/nexus/nexus-$nexus_version | ||||||
| nexus_tarball=nexus-$nexus_version-unix.tar.gz | nexus_tarball=nexus-$nexus_version-linux-x86_64.tar.gz | ||||||
| nexus_download_url=https://download.sonatype.com/nexus/3/$nexus_tarball | nexus_download_url=https://download.sonatype.com/nexus/3/$nexus_tarball | ||||||
| nexus_download_sha1=cfc9e7bdaeb1f1b9fb45aecc7a50821759c8b847 | nexus_download_sha256='048b5b588fcb337576f47e1cf8e89fb59273406b6b0789e90eb8f58726754115' | ||||||
| wget -q $nexus_download_url | wget -q $nexus_download_url | ||||||
| if [ "$(sha1sum $nexus_tarball | awk '{print $1}')" != "$nexus_download_sha1" ]; then | if [ "$(sha256sum $nexus_tarball | awk '{print $1}')" != "$nexus_download_sha256" ]; then | ||||||
|     echo "downloaded $nexus_download_url failed the checksum verification" |     echo "downloaded $nexus_download_url failed the checksum verification" | ||||||
|     exit 1 |     exit 1 | ||||||
| fi | fi | ||||||
| tar xf $nexus_tarball # NB this creates the $nexus_home (e.g. nexus-3.75.1-01) and sonatype-work directories. | tar xf $nexus_tarball # NB this creates the $nexus_home (e.g. nexus-3.79.1-04) and sonatype-work directories. | ||||||
| rm $nexus_tarball | rm $nexus_tarball | ||||||
| install -d -o nexus -g nexus -m 700 .java # java preferences are saved here (the default java.util.prefs.userRoot preference). | install -d -o nexus -g nexus -m 700 .java # java preferences are saved here (the default java.util.prefs.userRoot preference). | ||||||
| install -d -o nexus -g nexus -m 700 sonatype-work/nexus3/etc | install -d -o nexus -g nexus -m 700 sonatype-work/nexus3/etc | ||||||
|  | @ -110,7 +110,7 @@ apt-get install -y --no-install-recommends httpie | ||||||
| apt-get install -y --no-install-recommends jq | apt-get install -y --no-install-recommends jq | ||||||
| 
 | 
 | ||||||
| # wait for nexus to come up. | # wait for nexus to come up. | ||||||
| bash -c "while [[ \"\$(wget -qO- https://$nexus_domain/service/extdirect/poll/rapture_State_get | jq -r .data.data.status.value.edition)\" != 'OSS' ]]; do sleep 5; done" | bash -c "while [[ \"\$(wget -qO- https://$nexus_domain/service/extdirect/poll/rapture_State_get | jq -r .data.data.status.value.edition)\" != 'COMMUNITY' ]]; do sleep 5; done" | ||||||
| 
 | 
 | ||||||
| # print the version using the API. | # print the version using the API. | ||||||
| wget -qO- https://$nexus_domain/service/extdirect/poll/rapture_State_get | jq --raw-output .data.data.uiSettings.value.title | wget -qO- https://$nexus_domain/service/extdirect/poll/rapture_State_get | jq --raw-output .data.data.uiSettings.value.title | ||||||
|  | @ -167,6 +167,24 @@ bash /vagrant/provision/execute-provision.groovy-script.sh | ||||||
| api_auth="admin:admin" | api_auth="admin:admin" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | # accept the End User License Agreement (EULA). | ||||||
|  | # see https://links.sonatype.com/products/nxrm3/docs/ce-onboarding. | ||||||
|  | eula_disclaimer="$(http \ | ||||||
|  |     --check-status \ | ||||||
|  |     --auth "$api_auth" \ | ||||||
|  |     GET \ | ||||||
|  |     https://$nexus_domain/service/rest/v1/system/eula \ | ||||||
|  |     | jq -r .disclaimer)" | ||||||
|  | http \ | ||||||
|  |     --check-status \ | ||||||
|  |     --auth "$api_auth" \ | ||||||
|  |     --ignore-stdin \ | ||||||
|  |     POST \ | ||||||
|  |     https://$nexus_domain/service/rest/v1/system/eula \ | ||||||
|  |     accepted=true \ | ||||||
|  |     disclaimer="$eula_disclaimer" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| # create the adhoc-package raw repository. | # create the adhoc-package raw repository. | ||||||
| # NB this repository can host any type of artifact, so we disable strictContentTypeValidation. | # NB this repository can host any type of artifact, so we disable strictContentTypeValidation. | ||||||
| # see https://help.sonatype.com/display/NXRM3/Raw+Repositories+and+Maven+Sites#RawRepositoriesandMavenSites-UploadingFilestoHostedRawRepositories | # see https://help.sonatype.com/display/NXRM3/Raw+Repositories+and+Maven+Sites#RawRepositoriesandMavenSites-UploadingFilestoHostedRawRepositories | ||||||
|  |  | ||||||
|  | @ -17,7 +17,7 @@ binaries: binaries-download | ||||||
| 
 | 
 | ||||||
| binaries-download: | binaries-download: | ||||||
| 	mkdir -p binaries | 	mkdir -p binaries | ||||||
| 	wget -qO- https://download.sonatype.com/nexus/3/nexus-3.75.1-01-unix.tar.gz \
 | 	wget -qO- https://download.sonatype.com/nexus/3/nexus-3.79.1-04-unix.tar.gz \
 | ||||||
| 		| tar xzf - --strip-components 1 -C binaries | 		| tar xzf - --strip-components 1 -C binaries | ||||||
| 
 | 
 | ||||||
| clean: | clean: | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ | ||||||
|   <version>1.0-SNAPSHOT</version> |   <version>1.0-SNAPSHOT</version> | ||||||
| 
 | 
 | ||||||
|   <properties> |   <properties> | ||||||
|     <nx-version>3.75.1-01</nx-version> |     <nx-version>3.79.1-04</nx-version> | ||||||
|   </properties> |   </properties> | ||||||
|   <dependencies> |   <dependencies> | ||||||
|     <dependency> |     <dependency> | ||||||
|  |  | ||||||
|  | @ -6,9 +6,20 @@ partition_number="$(echo "$partition_device" | perl -ne '/(\d+)$/ && print $1')" | ||||||
| disk_device="$(echo "$partition_device" | perl -ne '/(.+?)\d+$/ && print $1')" | disk_device="$(echo "$partition_device" | perl -ne '/(.+?)\d+$/ && print $1')" | ||||||
| 
 | 
 | ||||||
| # resize the partition table. | # resize the partition table. | ||||||
|  | # Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an extra 50331648 blocks) or continue with the current setting? | ||||||
|  | # Fix/Ignore? Fix | ||||||
|  | # Partition number? 2 | ||||||
|  | # Warning: Partition /dev/sda2 is being used. Are you sure you want to continue? | ||||||
|  | # Yes/No? | ||||||
|  | # Yes | ||||||
|  | # End?  [8589MB]? | ||||||
|  | # 100% | ||||||
| parted ---pretend-input-tty "$disk_device" <<EOF | parted ---pretend-input-tty "$disk_device" <<EOF | ||||||
| resizepart $partition_number 100% | resizepart $partition_number 100% | ||||||
| yes | Fix | ||||||
|  | $partition_number | ||||||
|  | Yes | ||||||
|  | 100% | ||||||
| EOF | EOF | ||||||
| 
 | 
 | ||||||
| # resize the file system. | # resize the file system. | ||||||
|  |  | ||||||
|  | @ -61,17 +61,17 @@ EOF | ||||||
| cat >go.mod <<'EOF' | cat >go.mod <<'EOF' | ||||||
| module example.com/go-hello | module example.com/go-hello | ||||||
| 
 | 
 | ||||||
| go 1.20 | go 1.24.3 | ||||||
| EOF | EOF | ||||||
| cat >Dockerfile <<'EOF' | cat >Dockerfile <<'EOF' | ||||||
| FROM golang:1.20-bullseye as builder | FROM golang:1.24.3-bookworm as builder | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| COPY go.* main.go ./ | COPY go.* main.go ./ | ||||||
| RUN CGO_ENABLED=0 go build -ldflags="-s" | RUN CGO_ENABLED=0 go build -ldflags="-s" | ||||||
| 
 | 
 | ||||||
| # NB we use the buster-slim (instead of scratch) image so we | # NB we use the buster-slim (instead of scratch) image so we | ||||||
| #    can enter the container to execute bash etc. | #    can enter the container to execute bash etc. | ||||||
| FROM debian:bullseye-slim | FROM debian:bookworm-slim | ||||||
| COPY --from=builder /app/go-hello . | COPY --from=builder /app/go-hello . | ||||||
| WORKDIR / | WORKDIR / | ||||||
| EXPOSE 8000 | EXPOSE 8000 | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ cd tmp/use-maven-repository-from-gradle | ||||||
| 
 | 
 | ||||||
| # download and install gradle. | # download and install gradle. | ||||||
| # see https://gradle.org/releases/ | # see https://gradle.org/releases/ | ||||||
| gradle_version='8.2.1' | gradle_version='8.14.2' | ||||||
| if [ ! -f /opt/gradle/gradle-$gradle_version/bin/gradle ]; then | if [ ! -f /opt/gradle/gradle-$gradle_version/bin/gradle ]; then | ||||||
|     apt-get install -y unzip |     apt-get install -y unzip | ||||||
|     wget -qO/tmp/gradle-$gradle_version-bin.zip https://services.gradle.org/distributions/gradle-$gradle_version-bin.zip |     wget -qO/tmp/gradle-$gradle_version-bin.zip https://services.gradle.org/distributions/gradle-$gradle_version-bin.zip | ||||||
|  | @ -35,8 +35,8 @@ cat >settings.gradle <<'EOF' | ||||||
| rootProject.name = 'gradle-greeter' | rootProject.name = 'gradle-greeter' | ||||||
| EOF | EOF | ||||||
| cat >build.gradle <<'EOF' | cat >build.gradle <<'EOF' | ||||||
| // see https://docs.gradle.org/8.2.1/userguide/java_library_plugin.html | // see https://docs.gradle.org/8.14.2/userguide/java_library_plugin.html | ||||||
| // see https://docs.gradle.org/8.2.1/userguide/maven_plugin.html | // see https://docs.gradle.org/8.14.2/userguide/maven_plugin.html | ||||||
| 
 | 
 | ||||||
| plugins { | plugins { | ||||||
|     id 'java-library' |     id 'java-library' | ||||||
|  | @ -46,8 +46,10 @@ plugins { | ||||||
| group = 'com.example' | group = 'com.example' | ||||||
| version = '1.0.0' | version = '1.0.0' | ||||||
| 
 | 
 | ||||||
| sourceCompatibility = 1.8 | java { | ||||||
| targetCompatibility = 1.8 |     sourceCompatibility = JavaVersion.VERSION_17 | ||||||
|  |     targetCompatibility = JavaVersion.VERSION_17 | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| jar { | jar { | ||||||
|     manifest { |     manifest { | ||||||
|  | @ -67,7 +69,7 @@ publishing { | ||||||
| 
 | 
 | ||||||
|     repositories { |     repositories { | ||||||
|         maven { |         maven { | ||||||
|             url System.env.NEXUS_REPOSITORY_URL |             url = System.env.NEXUS_REPOSITORY_URL | ||||||
|             credentials { |             credentials { | ||||||
|                 username = System.env.NEXUS_REPOSITORY_USERNAME |                 username = System.env.NEXUS_REPOSITORY_USERNAME | ||||||
|                 password = System.env.NEXUS_REPOSITORY_PASSWORD |                 password = System.env.NEXUS_REPOSITORY_PASSWORD | ||||||
|  | @ -100,26 +102,27 @@ cat >settings.gradle <<'EOF' | ||||||
| rootProject.name = 'gradle-greeter-application' | rootProject.name = 'gradle-greeter-application' | ||||||
| EOF | EOF | ||||||
| cat >build.gradle <<EOF | cat >build.gradle <<EOF | ||||||
| // see https://docs.gradle.org/8.2.1/userguide/java_plugin.html | // see https://docs.gradle.org/8.14.2/userguide/java_plugin.html | ||||||
| // see https://docs.gradle.org/8.2.1/userguide/application_plugin.html | // see https://docs.gradle.org/8.14.2/userguide/application_plugin.html | ||||||
| // see http://imperceptiblethoughts.com/shadow/ | // see https://gradleup.com/shadow/ | ||||||
|  | // see https://github.com/GradleUp/shadow | ||||||
| 
 | 
 | ||||||
| plugins { | plugins { | ||||||
|     id 'application' |     id 'application' | ||||||
|     id 'com.github.johnrengelman.shadow' version '8.1.1' |     id 'com.gradleup.shadow' version '8.3.6' | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| group = 'com.example' | group = 'com.example' | ||||||
| version = '1.0.0' | version = '1.0.0' | ||||||
| 
 | 
 | ||||||
| mainClassName = 'Greet' |  | ||||||
| 
 |  | ||||||
| application { | application { | ||||||
|     mainClass = project.mainClassName |     mainClass = 'Greet' | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| sourceCompatibility = 17 | java { | ||||||
| targetCompatibility = 17 |     sourceCompatibility = JavaVersion.VERSION_17 | ||||||
|  |     targetCompatibility = JavaVersion.VERSION_17 | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| jar { | jar { | ||||||
|     manifest { |     manifest { | ||||||
|  | @ -132,7 +135,7 @@ jar { | ||||||
| 
 | 
 | ||||||
| repositories { | repositories { | ||||||
|     maven { |     maven { | ||||||
|         url 'https://$nexus_domain/repository/maven-public' |         url = 'https://$nexus_domain/repository/maven-public' | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ mkdir -p tmp/use-npm-repository && cd tmp/use-npm-repository | ||||||
| 
 | 
 | ||||||
| # install node LTS. | # install node LTS. | ||||||
| # see https://github.com/nodesource/distributions#debinstall | # see https://github.com/nodesource/distributions#debinstall | ||||||
| curl -sL --fail --show-error https://deb.nodesource.com/setup_18.x | bash | curl -sL --fail --show-error https://deb.nodesource.com/setup_22.x | bash | ||||||
| apt-get install -y nodejs | apt-get install -y nodejs | ||||||
| node --version | node --version | ||||||
| npm --version | npm --version | ||||||
|  |  | ||||||
|  | @ -68,7 +68,7 @@ dotnet nuget list source | ||||||
| cat >example-hello-world.csproj <<'EOF' | cat >example-hello-world.csproj <<'EOF' | ||||||
| <Project Sdk="Microsoft.NET.Sdk"> | <Project Sdk="Microsoft.NET.Sdk"> | ||||||
|   <PropertyGroup> |   <PropertyGroup> | ||||||
|     <TargetFramework>net6.0</TargetFramework> |     <TargetFramework>net8.0</TargetFramework> | ||||||
|     <Version>1.0.0</Version> |     <Version>1.0.0</Version> | ||||||
|     <Authors>Alice Doe</Authors> |     <Authors>Alice Doe</Authors> | ||||||
|     <Copyright>Copyleft Alice Doe</Copyright> |     <Copyright>Copyleft Alice Doe</Copyright> | ||||||
|  | @ -82,7 +82,7 @@ cat >example-hello-world.csproj <<'EOF' | ||||||
|     </NuspecProperties> |     </NuspecProperties> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="Serilog" Version="3.0.1" /> |     <PackageReference Include="Serilog" Version="4.3.0" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
| </Project> | </Project> | ||||||
| EOF | EOF | ||||||
|  | @ -127,7 +127,7 @@ cat >test.csproj <<'EOF' | ||||||
| <Project Sdk="Microsoft.NET.Sdk"> | <Project Sdk="Microsoft.NET.Sdk"> | ||||||
|   <PropertyGroup> |   <PropertyGroup> | ||||||
|     <OutputType>Exe</OutputType> |     <OutputType>Exe</OutputType> | ||||||
|     <TargetFramework>net6.0</TargetFramework> |     <TargetFramework>net8.0</TargetFramework> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
| </Project> | </Project> | ||||||
| EOF | EOF | ||||||
|  | @ -159,7 +159,7 @@ EOF | ||||||
| dotnet nuget list source | dotnet nuget list source | ||||||
| dotnet add package example-hello-world | dotnet add package example-hello-world | ||||||
| # see https://www.nuget.org/packages/Serilog.Sinks.Console/ | # see https://www.nuget.org/packages/Serilog.Sinks.Console/ | ||||||
| dotnet add package Serilog.Sinks.Console --version 4.1.0 | dotnet add package Serilog.Sinks.Console --version 6.0.0 | ||||||
| dotnet build -v=n -c=Release | dotnet build -v=n -c=Release | ||||||
| dotnet publish -v=n -c=Release --no-build --output dist | dotnet publish -v=n -c=Release --no-build --output dist | ||||||
| ./dist/test | ./dist/test | ||||||
|  |  | ||||||
|  | @ -29,7 +29,8 @@ Set-Location tmp/use-npm-repository | ||||||
| # see https://docs.npmjs.com/cli/adduser | # see https://docs.npmjs.com/cli/adduser | ||||||
| 
 | 
 | ||||||
| # install node LTS. | # install node LTS. | ||||||
| choco install -y nodejs-lts | # see https://community.chocolatey.org/packages/nodejs-lts | ||||||
|  | choco install -y nodejs-lts --version 22.16.0 | ||||||
| Import-Module C:\ProgramData\chocolatey\helpers\chocolateyInstaller.psm1 | Import-Module C:\ProgramData\chocolatey\helpers\chocolateyInstaller.psm1 | ||||||
| Update-SessionEnvironment | Update-SessionEnvironment | ||||||
| node --version | node --version | ||||||
|  |  | ||||||
|  | @ -0,0 +1,16 @@ | ||||||
|  | #!/bin/bash | ||||||
|  | set -euox pipefail | ||||||
|  | 
 | ||||||
|  | vm_name=${1:-nexus}; shift || true | ||||||
|  | interface_name=${1:-lo}; shift || true | ||||||
|  | 
 | ||||||
|  | mkdir -p shared | ||||||
|  | vagrant ssh-config $vm_name >shared/$vm_name-ssh-config.conf | ||||||
|  | exec wireshark \ | ||||||
|  |     -o "gui.window_title:$vm_name $interface_name" \ | ||||||
|  |     -k \ | ||||||
|  |     -d 'tcp.port==6001,http' \ | ||||||
|  |     -d 'tcp.port==6002,http' \ | ||||||
|  |     -d 'tcp.port==6003,http' \ | ||||||
|  |     -d 'tcp.port==8081,http' \ | ||||||
|  |     -i <(ssh -F shared/$vm_name-ssh-config.conf $vm_name "sudo tcpdump -s 0 -U -n -i $interface_name -w - not port 22") | ||||||
		Loading…
	
		Reference in New Issue