Publish release #412
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Publish release | |
on: | |
workflow_dispatch: | |
inputs: | |
isPreRelease: | |
description: 'Tag created is a pre-release tag' | |
required: true | |
default: 'false' | |
preReleaseSuffix: | |
description: 'The text that will be suffixed to the Git tag. e.g., rc1' | |
required: false | |
default: '' | |
jobs: | |
publish-release: | |
name: Publish Release | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v2 | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v2 | |
with: | |
distribution: 'temurin' | |
java-version: '11' | |
- name: Set version env variable | |
id: version-set | |
run: | | |
SHORT_VERSION=$((grep -w 'version' | cut -d= -f2 | cut -d- -f1) < gradle.properties) | |
DIST_VERSION=$((grep -w 'version' | cut -d= -f2) < gradle.properties | rev | cut --complement -d- -f1 | rev) | |
CODE_NAME=$((grep -w 'codeName' | cut -d= -f2) < gradle.properties) | |
RELEASE_VERSION=$DIST_VERSION | |
TAGGED_VERSION=$RELEASE_VERSION | |
LONG_VERSION=$DIST_VERSION-$CODE_NAME | |
if [ -n "${{ github.event.inputs.preReleaseSuffix }}" ]; then | |
TAGGED_VERSION=$RELEASE_VERSION-${{ github.event.inputs.preReleaseSuffix }} | |
fi | |
echo VERSION=$RELEASE_VERSION >> $GITHUB_ENV | |
echo GIT_TAG=$TAGGED_VERSION >> $GITHUB_ENV | |
echo "::set-output name=version::$RELEASE_VERSION" | |
echo "::set-output name=sversion::$SHORT_VERSION" | |
echo "::set-output name=taggedVersion::$TAGGED_VERSION" | |
echo "::set-output name=longVersion::$LONG_VERSION" | |
- name: Pre release depenency version update | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
run: | | |
echo "Version: ${VERSION}" | |
echo "Tagged Version: ${GIT_TAG}" | |
git config user.name ${{ secrets.BALLERINA_BOT_USERNAME }} | |
git config user.email ${{ secrets.BALLERINA_BOT_EMAIL }} | |
git checkout -b release-${GIT_TAG} | |
- name: Generate UUID | |
run: | | |
UUID=$(uuidgen) | |
perl -pi -e "s/^\s*installerVersion=.*/installerVersion=$UUID/" gradle.properties | |
git config user.name ${{ secrets.BALLERINA_BOT_USERNAME }} | |
git config user.email ${{ secrets.BALLERINA_BOT_EMAIL }} | |
git add gradle.properties | |
git commit -m "Update UUID for installer" | |
- name: Grant execute permission for gradlew | |
run: chmod +x gradlew | |
- name: Publish artifact | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
packageUser: ${{ secrets.BALLERINA_BOT_USERNAME }} | |
packagePAT: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
devCentralToken: ${{ secrets.BALLERINA_DEV_CENTRAL_ACCESS_TOKEN }} | |
ballerinaBotWorkflow: $ {{ secrets.BALLERINA_BOT_WORKFLOW }} | |
run: | | |
./gradlew build -Pversion=${VERSION} | |
./gradlew release -Prelease.useAutomaticVersion=true -x test | |
- name: Checkout docker repo | |
uses: actions/checkout@v2 | |
with: | |
repository: ballerina-platform/module-ballerina-docker | |
path: module-ballerina-docker | |
- name: Copy zip artifact | |
run: cp ballerina/build/distributions/ballerina-22*.zip module-ballerina-docker/base/docker/ | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v1 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Login to DockerHub | |
uses: docker/login-action@v1 | |
with: | |
username: ${{ secrets.DOCKER_HUB_USER }} | |
password: ${{ secrets.DOCKER_HUB_TOKEN }} | |
- name: Build the docker image | |
id: docker_build | |
uses: docker/build-push-action@v2 | |
with: | |
context: module-ballerina-docker/base/docker/ | |
load: true | |
push: false | |
tags: ballerina/ballerina:release-test | |
build-args: | | |
BALLERINA_DIST=ballerina-${{ steps.version-set.outputs.sversion }}.zip | |
- name: Run Trivy vulnerability scanner | |
uses: aquasecurity/trivy-action@master | |
with: | |
image-ref: 'ballerina/ballerina:release-test' | |
skip-dirs: 'ballerina/runtime/examples' | |
format: 'table' | |
exit-code: '1' | |
timeout: "10m0s" | |
- name: Create release | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
with: | |
tag_name: "v${{ steps.version-set.outputs.taggedVersion }}" | |
release_name: ${{ steps.version-set.outputs.taggedVersion }} | |
draft: false | |
prerelease: ${{ github.event.inputs.isPreRelease }} | |
- name: Create linux-deb Installer | |
id: run_installers_deb | |
run: | | |
cd installers/linux-deb | |
./build-ballerina-linux-deb-x64.sh -v ${{ steps.version-set.outputs.longVersion }} -p ./../../ballerina/build/distributions | |
echo "Created linux-deb successfully" | |
- name: Create linux-rpm Installer | |
id: run_installers_rpm | |
run: | | |
cd installers/linux-rpm | |
./build-ballerina-linux-rpm-x64.sh -v ${{ steps.version-set.outputs.longVersion }} -p ./../../ballerina/build/distributions | |
echo "Created linux-rpm successfully" | |
- name: Generate Hashes | |
run: | | |
openssl dgst -sha256 -out ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb.sha256 installers/linux-deb/target/ballerina-*-linux-x64.deb | |
openssl dgst -sha256 -out ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm.sha256 installers/linux-rpm/rpmbuild/RPMS/x86_64/ballerina-*-linux-x64.rpm | |
openssl dgst -sha256 -out ballerina-${{ steps.version-set.outputs.longVersion }}.zip.sha256 ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}.zip | |
openssl dgst -sha256 -out ballerina-${{ steps.version-set.outputs.sversion }}.zip.sha256 ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.sversion }}.zip | |
- name: Upload zip artifacts | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}.zip | |
asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}.zip | |
asset_content_type: application/octet-stream | |
- name: Upload zip without tool artifacts | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_name: ballerina-${{ steps.version-set.outputs.sversion }}.zip | |
asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.sversion }}.zip | |
asset_content_type: application/octet-stream | |
- name: Upload Linux deb Installer | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb | |
asset_path: installers/linux-deb/target/ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb | |
asset_content_type: application/octet-stream | |
- name: Upload Linux rpm Installer | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm | |
asset_path: installers/linux-rpm/rpmbuild/RPMS/x86_64/ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm | |
asset_content_type: application/octet-stream | |
- name: Upload MacOS zip artifacts | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-macos.zip | |
asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-macos.zip | |
asset_content_type: application/octet-stream | |
- name: Upload MacOS-ARM zip artifacts | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-macos-arm.zip | |
asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-macos-arm.zip | |
asset_content_type: application/octet-stream | |
- name: Upload Windows zip artifacts | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-windows.zip | |
asset_path: ballerina/build/distributions/ballerina-${{ steps.version-set.outputs.longVersion }}-windows.zip | |
asset_content_type: application/octet-stream | |
- name: Upload Linux deb Hashes | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb.sha256 | |
asset_path: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.deb.sha256 | |
asset_content_type: application/octet-stream | |
- name: Upload Linux rpm Hashes | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm.sha256 | |
asset_path: ballerina-${{ steps.version-set.outputs.longVersion }}-linux-x64.rpm.sha256 | |
asset_content_type: application/octet-stream | |
- name: Upload Ballerina zip Hashes | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_name: ballerina-${{ steps.version-set.outputs.longVersion }}.zip.sha256 | |
asset_path: ballerina-${{ steps.version-set.outputs.longVersion }}.zip.sha256 | |
asset_content_type: application/octet-stream | |
- name: Upload ballerina Short Name zip Hashes | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_name: ballerina-${{ steps.version-set.outputs.sversion }}.zip.sha256 | |
asset_path: ballerina-${{ steps.version-set.outputs.sversion }}.zip.sha256 | |
asset_content_type: application/octet-stream | |
- name: Post release PR | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
run: | | |
curl -fsSL https://github.com/github/hub/raw/master/script/get | bash -s 2.14.1 | |
bin/hub pull-request -m "[Automated] Sync master after "$VERSION" release" | |
outputs: | |
project-version: ${{ steps.version-set.outputs.longVersion }} | |
upload-asset-url: ${{ steps.create_release.outputs.upload_url }} | |
release-version: ${{ steps.version-set.outputs.taggedVersion }} | |
macos-installer-build: | |
name: MacOS Installer Build | |
needs: publish-release | |
runs-on: macos-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v2 | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v2 | |
with: | |
distribution: 'temurin' | |
java-version: '11' | |
- name: Download MacOS Intaller Zip | |
run: | | |
wget https://github.com/ballerina-platform/ballerina-distribution/releases/download/v${{ needs.publish-release.outputs.release-version }}/ballerina-${{ needs.publish-release.outputs.project-version }}-macos.zip | |
- name: Create macos-pkg Installer | |
id: run_installers_pkg | |
run: | | |
cd installers/mac | |
./build-ballerina-macos-x64.sh -v ${{ needs.publish-release.outputs.project-version }} -p ./../../ | |
echo "Created macos-pkg successfully" | |
- name: Generate Hashes | |
run: | | |
openssl dgst -sha256 -out ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg.sha256 installers/mac/target/pkg/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg | |
- name: Upload MacOS pkg Hashes | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
with: | |
upload_url: ${{ needs.publish-release.outputs.upload-asset-url }} | |
asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg.sha256 | |
asset_path: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg.sha256 | |
asset_content_type: application/octet-stream | |
- name: Upload MacOS pkg Installer | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
with: | |
upload_url: ${{ needs.publish-release.outputs.upload-asset-url }} | |
asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg | |
asset_path: installers/mac/target/pkg/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-x64.pkg | |
asset_content_type: application/octet-stream | |
- name: Download MacOS-ARM Intaller Zip | |
run: | | |
wget https://github.com/ballerina-platform/ballerina-distribution/releases/download/v${{ needs.publish-release.outputs.release-version }}/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm.zip | |
- name: Create macos-arm-pkg Installer | |
id: run_installers_arm_pkg | |
run: | | |
cd installers/mac | |
./build-ballerina-macos-x64.sh -v ${{ needs.publish-release.outputs.project-version }} -p ./../../ -a arm | |
echo "Created macos-arm-pkg successfully" | |
- name: Generate Hashes | |
run: | | |
openssl dgst -sha256 -out ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg.sha256 installers/mac/target/pkg/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg | |
- name: Upload MacOS-ARM pkg Hashes | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
with: | |
upload_url: ${{ needs.publish-release.outputs.upload-asset-url }} | |
asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg.sha256 | |
asset_path: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg.sha256 | |
asset_content_type: application/octet-stream | |
- name: Upload MacOS-ARM pkg Installer | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
with: | |
upload_url: ${{ needs.publish-release.outputs.upload-asset-url }} | |
asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg | |
asset_path: installers/mac/target/pkg/ballerina-${{ needs.publish-release.outputs.project-version }}-macos-arm-x64.pkg | |
asset_content_type: application/octet-stream | |
windows-installer-build: | |
name: Windows Installer Build | |
needs: publish-release | |
runs-on: windows-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v2 | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v2 | |
with: | |
distribution: 'temurin' | |
java-version: '11' | |
- uses: actions/setup-dotnet@v1 | |
with: | |
dotnet-version: '2.1.x' | |
- name: Install GUID Generator | |
run: dotnet tool install -g dotnet-guid --version 0.5.2 | |
- name: Install Wget | |
run: choco install wget --no-progress | |
- name: Download Windows Intaller Zip | |
run: | | |
wget https://github.com/ballerina-platform/ballerina-distribution/releases/download/v${{ needs.publish-release.outputs.release-version }}/ballerina-${{ needs.publish-release.outputs.project-version }}-windows.zip | |
- name: Create windows-msi Installer | |
id: run_installers_msi | |
run: | | |
$env:Path += ";C:\Program Files (x86)\WiX Toolset v3.11\bin" | |
move installers\windows .\ | |
ren windows w | |
cd w | |
.\build-ballerina-windows-x64.bat --version ${{ needs.publish-release.outputs.project-version }} --path .\..\ | |
echo "Created windows-msi successfully" | |
- name: Generate Hashes | |
run: | | |
openssl dgst -sha256 -out ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi.sha256 w\target\msi\ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi | |
- name: Upload Windows msi Hashes | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
with: | |
upload_url: ${{ needs.publish-release.outputs.upload-asset-url }} | |
asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi.sha256 | |
asset_path: ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi.sha256 | |
asset_content_type: application/octet-stream | |
- name: Upload Windows msi Installer | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
with: | |
upload_url: ${{ needs.publish-release.outputs.upload-asset-url }} | |
asset_name: ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi | |
asset_path: w\target\msi\ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi | |
asset_content_type: application/octet-stream | |
- name: Install Ballerina msi | |
run: msiexec /i w\target\msi\ballerina-${{ needs.publish-release.outputs.project-version }}-windows-x64.msi /quiet /qr | |
shell: cmd | |
- name: Run Installer Tests | |
working-directory: .\ballerina-test-automation\installer-test | |
run: | | |
$env:Path += ";C:\Program Files\Ballerina\bin" | |
.\..\gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true |