blob: 620027f2e88d369a4229220abc60635f4bf3e885 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
$gpgKeyId = "********"
# ********************************************************
# Set version and release candidate number
$version = "1.7.0"
$rcNumber = "rc1"
# ********************************************************
$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path
$projectPath = (Get-Item (Split-Path -Parent $scriptPath)).Parent.FullName
$distPath = "$projectPath\dist"
# Clean up the 'dist' directory
Write-Host "Cleaning up the 'dist' directory..."
Remove-Item -Recurse -Force $distPath\* -ErrorAction SilentlyContinue
New-Item -ItemType Directory -Path $distPath -Force
# Clean up the 'web-app/dist' directory
Write-Host "Cleaning up the 'web-app/dist' directory..."
$webAppDistPath = "$projectPath\web-app\dist"
Remove-Item -Recurse -Force $webAppDistPath\* -ErrorAction SilentlyContinue
New-Item -ItemType Directory -Path $webAppDistPath -Force
Push-Location -Path $projectPath
Write-Host "Installing dependencies and packaging web-app..."
Push-Location -Path "web-app"
yarn install
yarn package
Pop-Location
Write-Host "Building project with Maven..."
mvn clean package -Prelease -DskipTests
mvn clean install -DskipTests
Write-Host "Building collector..."
Push-Location -Path "collector"
mvn clean package -Pcluster -DskipTests
Pop-Location
# package release artifacts
Write-Host "Archiving source code..."
git archive --format=tar.gz --output="dist/apache-hertzbeat-$version-incubating-src.tar.gz" --prefix=apache-hertzbeat-$version-incubating-src/ release-$version-$rcNumber
# sign release artifacts
Write-Host "Signing release artifacts..."
Push-Location -Path "dist"
Get-ChildItem *.tar.gz | ForEach-Object {
$fileName = $_.Name
Write-Host "Signing $fileName..."
gpg -u $gpgKeyId --armor --output "$fileName.asc" --detach-sig "$fileName"
Write-Host "Generating SHA512 for $fileName..."
$hash = Get-FileHash -Path "$fileName" -Algorithm SHA512
$hashString = $hash.Hash
"$hashString $fileName" | Out-File "$fileName.sha512" -Append -NoNewline
}
Pop-Location
# verify signatures
Write-Host "Verifying signatures..."
Push-Location -Path "dist"
Get-ChildItem *.tar.gz | ForEach-Object {
$fileName = $_.Name
Write-Host "Verifying $fileName..."
gpg --verify "$fileName.asc" "$fileName"
Write-Host "Checking SHA512 for $fileName..."
$hash = Get-FileHash -Path "$fileName" -Algorithm SHA512
if ($hash.Hash -eq $null) {
Write-Host "Hash mismatch for $fileName"
} else {
Write-Host "Hash verified for $fileName"
}
}
Pop-Location