diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 090e80cf..66bb50e1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -50,14 +50,14 @@ jobs: # Define the platforms we want for krew (must match oadp.yaml) declare -a platforms=( - "linux-amd64" - "linux-arm64" - "linux-ppc64le" - "linux-s390x" - "darwin-amd64" - "darwin-arm64" - "windows-amd64" - "windows-arm64" + "linux_amd64" + "linux_arm64" + "linux_ppc64le" + "linux_s390x" + "darwin_amd64" + "darwin_arm64" + "windows_amd64" + "windows_arm64" ) # Create archives only for krew platforms @@ -68,9 +68,9 @@ jobs: if [[ -f "$binary" ]]; then echo "Creating archive for $platform..." cp "$binary" kubectl-oadp.exe - tar -czf "kubectl-oadp-${platform}.tar.gz" kubectl-oadp.exe LICENSE + tar -czf "kubectl-oadp_${{ github.ref_name }}_${platform}.tar.gz" kubectl-oadp.exe LICENSE rm kubectl-oadp.exe - echo "✅ Created kubectl-oadp-${platform}.tar.gz" + echo "✅ Created kubectl-oadp_${{ github.ref_name }}_${platform}.tar.gz" else echo "❌ Binary not found: $binary" exit 1 @@ -81,9 +81,9 @@ jobs: if [[ -f "$binary" ]]; then echo "Creating archive for $platform..." cp "$binary" kubectl-oadp - tar -czf "kubectl-oadp-${platform}.tar.gz" kubectl-oadp LICENSE + tar -czf "kubectl-oadp_${{ github.ref_name }}_${platform}.tar.gz" kubectl-oadp LICENSE rm kubectl-oadp - echo "✅ Created kubectl-oadp-${platform}.tar.gz" + echo "✅ Created kubectl-oadp_${{ github.ref_name }}_${platform}.tar.gz" else echo "❌ Binary not found: $binary" exit 1 @@ -111,12 +111,12 @@ jobs: # Set environment variables for template substitution export VERSION="${{ github.ref_name }}" - export LINUX_AMD64_SHA=$(grep "kubectl-oadp-linux-amd64.tar.gz" checksums.txt | cut -d' ' -f1) - export LINUX_ARM64_SHA=$(grep "kubectl-oadp-linux-arm64.tar.gz" checksums.txt | cut -d' ' -f1) - export DARWIN_AMD64_SHA=$(grep "kubectl-oadp-darwin-amd64.tar.gz" checksums.txt | cut -d' ' -f1) - export DARWIN_ARM64_SHA=$(grep "kubectl-oadp-darwin-arm64.tar.gz" checksums.txt | cut -d' ' -f1) - export WINDOWS_AMD64_SHA=$(grep "kubectl-oadp-windows-amd64.tar.gz" checksums.txt | cut -d' ' -f1) - export WINDOWS_ARM64_SHA=$(grep "kubectl-oadp-windows-arm64.tar.gz" checksums.txt | cut -d' ' -f1) + export LINUX_AMD64_SHA=$(grep "kubectl-oadp_${{ github.ref_name }}_linux_amd64.tar.gz" checksums.txt | cut -d' ' -f1) + export LINUX_ARM64_SHA=$(grep "kubectl-oadp_${{ github.ref_name }}_linux_arm64.tar.gz" checksums.txt | cut -d' ' -f1) + export DARWIN_AMD64_SHA=$(grep "kubectl-oadp_${{ github.ref_name }}_darwin_amd64.tar.gz" checksums.txt | cut -d' ' -f1) + export DARWIN_ARM64_SHA=$(grep "kubectl-oadp_${{ github.ref_name }}_darwin_arm64.tar.gz" checksums.txt | cut -d' ' -f1) + export WINDOWS_AMD64_SHA=$(grep "kubectl-oadp_${{ github.ref_name }}_windows_amd64.tar.gz" checksums.txt | cut -d' ' -f1) + export WINDOWS_ARM64_SHA=$(grep "kubectl-oadp_${{ github.ref_name }}_windows_arm64.tar.gz" checksums.txt | cut -d' ' -f1) # Validate all checksums were found if [[ -z "$LINUX_AMD64_SHA" || -z "$LINUX_ARM64_SHA" || -z "$DARWIN_AMD64_SHA" || -z "$DARWIN_ARM64_SHA" || -z "$WINDOWS_AMD64_SHA" || -z "$WINDOWS_ARM64_SHA" ]]; then diff --git a/Dockerfile.download b/Dockerfile.download index 2040c5c0..66f1c502 100644 --- a/Dockerfile.download +++ b/Dockerfile.download @@ -14,7 +14,7 @@ COPY . . RUN make release-build && \ CGO_ENABLED=0 go build -o download-server ./cmd/downloads/server.go && \ mkdir -p /archives && \ - for binary in kubectl-oadp-*; do \ + for binary in kubectl-oadp_*; do \ archive_name=$(echo "$binary" | sed 's/\.exe$//' ).tar.gz; \ tar -czf "/archives/$archive_name" "$binary"; \ echo "Created /archives/$archive_name"; \ diff --git a/Makefile b/Makefile index 213e944f..7b0db5b8 100644 --- a/Makefile +++ b/Makefile @@ -387,7 +387,7 @@ release-build: ## Build binaries for all platforms echo "Building for $$GOOS/$$GOARCH..."; \ GOOS=$$GOOS GOARCH=$$GOARCH go build -o $$binary_name .; \ echo "✅ Built $$binary_name for $$GOOS/$$GOARCH"; \ - mv $$binary_name $(BINARY_NAME)-$$GOOS-$$GOARCH$${binary_name#$(BINARY_NAME)}; \ + mv $$binary_name $(BINARY_NAME)_${VERSION}_$$GOOS_$$GOARCH$${binary_name#$(BINARY_NAME)}; \ done @echo "✅ All release binaries built successfully!" @@ -406,9 +406,9 @@ release-archives: release-build ## Create tar.gz archives for all platforms (inc else \ binary_name="$(BINARY_NAME)"; \ fi; \ - archive_name="$(BINARY_NAME)-$$GOOS-$$GOARCH.tar.gz"; \ + archive_name="$(BINARY_NAME)_${VERSION}_$$GOOS_$$GOARCH.tar.gz"; \ echo "Creating $$archive_name..."; \ - tar czf $$archive_name LICENSE $(BINARY_NAME)-$$GOOS-$$GOARCH$${binary_name#$(BINARY_NAME)}; \ + tar czf $$archive_name LICENSE $(BINARY_NAME)_${VERSION}_$$GOOS_$$GOARCH$${binary_name#$(BINARY_NAME)}; \ sha256sum $$archive_name > $$archive_name.sha256; \ echo "✅ Created $$archive_name with LICENSE"; \ done @@ -443,7 +443,7 @@ content = re.sub(r'download/v1\.0\.0/', f'download/{version}/', content); \ \ for goos, goarch in platforms: \ binary_suffix = '.exe' if goos == 'windows' else ''; \ - sha_file = f'kubectl-oadp-{goos}-{goarch}.tar.gz.sha256'; \ + sha_file = f'kubectl-oadp_${VERSION}_{goos}_{goarch}.tar.gz.sha256'; \ if os.path.exists(sha_file): \ with open(sha_file, 'r') as sf: \ sha256 = sf.read().split()[0]; \ @@ -464,7 +464,7 @@ print(f'✅ Krew manifest generated: oadp-{version}.yaml'); \ for platform in $(PLATFORMS); do \ GOOS=$$(echo $$platform | cut -d'/' -f1); \ GOARCH=$$(echo $$platform | cut -d'/' -f2); \ - sha_file="kubectl-oadp-$$GOOS-$$GOARCH.tar.gz.sha256"; \ + sha_file="kubectl-oadp_${VERSION}_$$GOOS_$$GOARCH.tar.gz.sha256"; \ if [ -f "$$sha_file" ]; then \ sha256=$$(cat $$sha_file | cut -d' ' -f1); \ echo " ✅ $$GOOS/$$GOARCH: $$sha256"; \ diff --git a/cmd/downloads/server.go b/cmd/downloads/server.go index a8642994..47ac9be1 100644 --- a/cmd/downloads/server.go +++ b/cmd/downloads/server.go @@ -57,10 +57,9 @@ func listBinaries(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "") fmt.Fprintf(w, "

Installation:

") - fmt.Fprintf(w, "
tar -xzf kubectl-oadp-<platform>.tar.gz\n")
+	fmt.Fprintf(w, "
tar -xzf kubectl-oadp_*.tar.gz\n")
 	fmt.Fprintf(w, "chmod +x kubectl-oadp\n")
 	fmt.Fprintf(w, "sudo mv kubectl-oadp /usr/local/bin/
") - fmt.Fprintf(w, "") } func downloadBinary(w http.ResponseWriter, r *http.Request) { diff --git a/oadp.yaml b/oadp.yaml index 37c4a2f0..180488bd 100644 --- a/oadp.yaml +++ b/oadp.yaml @@ -30,7 +30,7 @@ spec: matchLabels: os: linux arch: amd64 - uri: https://github.com/migtools/oadp-cli/releases/download/${VERSION}/kubectl-oadp-linux-amd64.tar.gz + uri: https://github.com/migtools/oadp-cli/releases/download/${VERSION}/kubectl-oadp_${VERSION}_linux_amd64.tar.gz sha256: "${LINUX_AMD64_SHA}" files: - from: kubectl-oadp @@ -42,7 +42,7 @@ spec: matchLabels: os: linux arch: arm64 - uri: https://github.com/migtools/oadp-cli/releases/download/${VERSION}/kubectl-oadp-linux-arm64.tar.gz + uri: https://github.com/migtools/oadp-cli/releases/download/${VERSION}/kubectl-oadp_${VERSION}_linux_arm64.tar.gz sha256: "${LINUX_ARM64_SHA}" files: - from: kubectl-oadp @@ -54,7 +54,7 @@ spec: matchLabels: os: linux arch: ppc64le - uri: https://github.com/migtools/oadp-cli/releases/download/${VERSION}/kubectl-oadp-linux-ppc64le.tar.gz + uri: https://github.com/migtools/oadp-cli/releases/download/${VERSION}/kubectl-oadp_${VERSION}_linux_ppc64le.tar.gz sha256: "${LINUX_PPC64LE_SHA}" files: - from: kubectl-oadp @@ -66,7 +66,7 @@ spec: matchLabels: os: linux arch: s390x - uri: https://github.com/migtools/oadp-cli/releases/download/${VERSION}/kubectl-oadp-linux-s390x.tar.gz + uri: https://github.com/migtools/oadp-cli/releases/download/${VERSION}/kubectl-oadp_${VERSION}_linux_s390x.tar.gz sha256: "${LINUX_S390X_SHA}" files: - from: kubectl-oadp @@ -78,7 +78,7 @@ spec: matchLabels: os: darwin arch: amd64 - uri: https://github.com/migtools/oadp-cli/releases/download/${VERSION}/kubectl-oadp-darwin-amd64.tar.gz + uri: https://github.com/migtools/oadp-cli/releases/download/${VERSION}/kubectl-oadp_${VERSION}_darwin_amd64.tar.gz sha256: "${DARWIN_AMD64_SHA}" files: - from: kubectl-oadp @@ -90,7 +90,7 @@ spec: matchLabels: os: darwin arch: arm64 - uri: https://github.com/migtools/oadp-cli/releases/download/${VERSION}/kubectl-oadp-darwin-arm64.tar.gz + uri: https://github.com/migtools/oadp-cli/releases/download/${VERSION}/kubectl-oadp_${VERSION}_darwin_arm64.tar.gz sha256: "${DARWIN_ARM64_SHA}" files: - from: kubectl-oadp @@ -102,7 +102,7 @@ spec: matchLabels: os: windows arch: amd64 - uri: https://github.com/migtools/oadp-cli/releases/download/${VERSION}/kubectl-oadp-windows-amd64.tar.gz + uri: https://github.com/migtools/oadp-cli/releases/download/${VERSION}/kubectl-oadp_${VERSION}_windows_amd64.tar.gz sha256: "${WINDOWS_AMD64_SHA}" files: - from: kubectl-oadp.exe @@ -114,7 +114,7 @@ spec: matchLabels: os: windows arch: arm64 - uri: https://github.com/migtools/oadp-cli/releases/download/${VERSION}/kubectl-oadp-windows-arm64.tar.gz + uri: https://github.com/migtools/oadp-cli/releases/download/${VERSION}/kubectl-oadp_${VERSION}_windows_arm64.tar.gz sha256: "${WINDOWS_ARM64_SHA}" files: - from: kubectl-oadp.exe