Daily Full Build Pipeline (2201.10.x) #91
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: Daily Full Build Pipeline (2201.10.x) | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: '30 18 * * *' # 00:00 in LK time (GMT+5:30) | |
env: | |
PATCH_LEVEL: 2201.10.x | |
jobs: | |
build-lang: | |
name: Build ballerina-lang | |
runs-on: ubuntu-latest | |
timeout-minutes: 150 | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
- name: Setup Python | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.x' | |
- name: Install Python Packages | |
run: | | |
pip install requests | |
pip install httplib2 | |
pip install colorama | |
pip install configobj | |
pip install requests | |
pip install PyGithub | |
pip install cryptography | |
- name: Set up JDK 17.0.7 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'temurin' | |
java-version: '17.0.7' | |
- name: Setup GraalVM | |
uses: graalvm/setup-graalvm@v1 | |
with: | |
java-version: '17.0.7' | |
distribution: 'graalvm' | |
components: 'native-image' | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
set-java-home: 'false' | |
- name: Build ballerina-lang | |
run: python -u dependabot/full_build_pipeline.py ./ --lang-branch $PATCH_LEVEL --build-level 0 | |
env: | |
packageUser: ${{ secrets.BALLERINA_BOT_USERNAME }} | |
packagePAT: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
devCentralToken: ${{ secrets.BALLERINA_DEV_CENTRAL_ACCESS_TOKEN }} | |
TEST_MODE_ACTIVE: true | |
- name: Notify Build Failure | |
if: ${{ failure() }} | |
shell: bash | |
run: | |
FILE="failed_modules.txt" | |
while read module; do | |
python3 dependabot/notify_full_build_failure.py $module $PATCH_LEVEL; | |
done < ${FILE} | |
env: | |
CHAT_ID: ${{ secrets.NOTIFICATIONS_CHAT_ID }} | |
CHAT_KEY: ${{ secrets.NOTIFICATIONS_CHAT_KEY }} | |
CHAT_TOKEN: ${{ secrets.NOTIFICATIONS_CHAT_TOKEN }} | |
ENV_USER_ENCRYPTION_KEY: ${{secrets.USER_ENCRYPTION_KEY}} | |
BALLERINA_BOT_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
- name: Get lang version | |
id: lang-version | |
run: | | |
VERSION=$((grep -w "version" | cut -d= -f2 | xargs) < ballerina-lang/gradle.properties) | |
SPEC_VERSION=$((grep -w "specVersion" | cut -d= -f2 | xargs) < ballerina-lang/gradle.properties) | |
echo "::set-output name=version::$VERSION" | |
echo "::set-output name=specVersion::$SPEC_VERSION" | |
- name: Archive Lang Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Ballerina Lang Artifacts | |
path: ~/.m2/ | |
outputs: | |
lang-version: ${{ steps.lang-version.outputs.version }} | |
spec-version: ${{ steps.lang-version.outputs.specVersion }} | |
build-stdlibs: | |
name: Build Standard Libraries & Tools | |
needs: build-lang | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
- name: Setup Python | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.x' | |
- name: Install Python Packages | |
run: | | |
pip install requests | |
pip install httplib2 | |
pip install colorama | |
pip install configobj | |
pip install requests | |
pip install PyGithub | |
pip install cryptography | |
- name: Set up JDK 17.0.7 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'temurin' | |
java-version: '17.0.7' | |
- name: Setup NodeJs | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 10.22.1 | |
- name: Download Ballerina Lang Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: Ballerina Lang Artifacts | |
path: ~/.m2/ | |
- name: Build Standard Libraries & Tools | |
run: | | |
python -u dependabot/full_build_pipeline.py ./ --lang-version ${{ needs.build-lang.outputs.lang-version }} \ | |
--build-released-versions --patch-level $PATCH_LEVEL --skip-build-distribution --continue-on-error --remove-after-build | |
env: | |
packageUser: ${{ secrets.BALLERINA_BOT_USERNAME }} | |
packagePAT: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
devCentralToken: ${{ secrets.BALLERINA_DEV_CENTRAL_ACCESS_TOKEN }} | |
CLIENT_ID: ${{ secrets.CLIENT_ID }} | |
CLIENT_SECRET: ${{ secrets.CLIENT_SECRET }} | |
REFRESH_TOKEN: ${{ secrets.REFRESH_TOKEN }} | |
TEST_MODE_ACTIVE: true | |
- name: Notify Build Failure | |
if: ${{ failure() }} | |
shell: bash | |
run: | |
FILE="failed_modules.txt" | |
while read module; do | |
python3 dependabot/notify_full_build_failure.py $module $PATCH_LEVEL; | |
done < ${FILE} | |
env: | |
CHAT_ID: ${{ secrets.NOTIFICATIONS_CHAT_ID }} | |
CHAT_KEY: ${{ secrets.NOTIFICATIONS_CHAT_KEY }} | |
CHAT_TOKEN: ${{ secrets.NOTIFICATIONS_CHAT_TOKEN }} | |
ENV_USER_ENCRYPTION_KEY: ${{secrets.USER_ENCRYPTION_KEY}} | |
BALLERINA_BOT_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
build-distribution: | |
name: Build ballerina-distribution | |
needs: build-lang | |
runs-on: ubuntu-latest | |
timeout-minutes: 150 | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
- name: Setup Python | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.x' | |
- name: Install Python Packages | |
run: | | |
pip install requests | |
pip install httplib2 | |
pip install colorama | |
pip install configobj | |
pip install requests | |
pip install PyGithub | |
pip install cryptography | |
- name: Set up JDK 17.0.7 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'temurin' | |
java-version: '17.0.7' | |
- name: Download Ballerina Lang Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: Ballerina Lang Artifacts | |
path: ~/.m2/ | |
- name: Build ballerina-distribution | |
run: | | |
python -u dependabot/full_build_pipeline.py ./ --lang-version ${{ needs.build-lang.outputs.lang-version }} \ | |
--patch-level $PATCH_LEVEL --only-build-distribution --continue-on-error | |
env: | |
packageUser: ${{ secrets.BALLERINA_BOT_USERNAME }} | |
packagePAT: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
devCentralToken: ${{ secrets.BALLERINA_DEV_CENTRAL_ACCESS_TOKEN }} | |
TEST_MODE_ACTIVE: true | |
- name: Get project version | |
id: project-version | |
run: | | |
SHORT_VERSION=$((grep -w "version" | cut -d= -f2 | cut -d- -f1 | xargs) < ballerina-distribution/gradle.properties) | |
DIST_VERSION=$((grep -w "version" | cut -d= -f2 | xargs) < ballerina-distribution/gradle.properties) | |
CODE_NAME=$((grep -w 'codeName' | cut -d= -f2 | xargs) < ballerina-distribution/gradle.properties) | |
RELEASE_VERSION=$DIST_VERSION-$CODE_NAME | |
echo "::set-output name=version::$RELEASE_VERSION" | |
echo "::set-output name=sVersion::$SHORT_VERSION" | |
- name: Archive Ballerina ZIP | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Ballerina ZIP | |
path: ballerina-distribution/ballerina/build/distributions/ballerina-*-swan-lake.zip | |
- name: Archive Ballerina Short Name ZIP | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Ballerina Short Name ZIP | |
path: ballerina-distribution/ballerina/build/distributions/ballerina-22*.zip | |
- name: Archive MacOS Installer ZIP | |
uses: actions/upload-artifact@v4 | |
with: | |
name: MacOS Installer ZIP | |
path: ballerina-distribution/ballerina/build/distributions/ballerina-*-macos.zip | |
- name: Archive MacOS-ARM Installer ZIP | |
uses: actions/upload-artifact@v4 | |
with: | |
name: MacOS-ARM Installer ZIP | |
path: ballerina-distribution/ballerina/build/distributions/ballerina-*-macos-arm.zip | |
- name: Archive Windows Installer ZIP | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Windows Installer ZIP | |
path: ballerina-distribution/ballerina/build/distributions/ballerina-*-windows.zip | |
- name: Create linux-deb | |
id: run_installers_deb | |
working-directory: ballerina-distribution/installers/linux-deb | |
run: ./build-ballerina-linux-deb-x64.sh -v ${{ steps.project-version.outputs.version }} -p ./../../ballerina/build/distributions | |
- name: Create linux-rpm | |
id: run_installers_rpm | |
working-directory: ballerina-distribution/installers/linux-rpm | |
run: ./build-ballerina-linux-rpm-x64.sh -v ${{ steps.project-version.outputs.version }} -p ./../../ballerina/build/distributions | |
- name: Archive Linux deb | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Linux Installer deb | |
path: ballerina-distribution/installers/linux-deb/target/ballerina-*-linux-x64.deb | |
- name: Archive Linux rpm | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Linux Installer rpm | |
path: ballerina-distribution/installers/linux-rpm/rpmbuild/RPMS/x86_64/ballerina-*-linux-x64.rpm | |
- name: Install Ballerina DEB | |
run: sudo dpkg -i ballerina-distribution/installers/linux-deb/target/ballerina-*-linux-x64.deb | |
- name: Update Installer Test Configs | |
run: | | |
DISPLAY_TEXT=${{ steps.project-version.outputs.sVersion }} | |
SWAN_LAKE_LATEST_VERSION="swan-lake-"+$DISPLAY_TEXT | |
SPEC_VERSION=${{ needs.build-lang.outputs.spec-version }} | |
perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=$DISPLAY_TEXT/" ballerina-distribution/ballerina-test-automation/gradle.properties | |
perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=$SWAN_LAKE_LATEST_VERSION/" ballerina-distribution/ballerina-test-automation/gradle.properties | |
perl -pi -e "s/^\s*swan-lake-latest-spec-version=.*/swan-lake-latest-spec-version=$SPEC_VERSION/" ballerina-distribution/ballerina-test-automation/gradle.properties | |
- name: Run Installer Tests | |
working-directory: ./ballerina-distribution/ballerina-test-automation/installer-test | |
run: ./../gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true | |
env: | |
TEST_MODE_ACTIVE: true | |
- name: Notify Build Failure | |
if: ${{ failure() }} | |
shell: bash | |
run: | |
FILE="failed_modules.txt" | |
while read module; do | |
python3 dependabot/notify_full_build_failure.py $module $PATCH_LEVEL; | |
done < ${FILE} | |
env: | |
CHAT_ID: ${{ secrets.NOTIFICATIONS_CHAT_ID }} | |
CHAT_KEY: ${{ secrets.NOTIFICATIONS_CHAT_KEY }} | |
CHAT_TOKEN: ${{ secrets.NOTIFICATIONS_CHAT_TOKEN }} | |
ENV_USER_ENCRYPTION_KEY: ${{secrets.USER_ENCRYPTION_KEY}} | |
BALLERINA_BOT_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} | |
outputs: | |
project-version: ${{ steps.project-version.outputs.version }} | |
short-version: ${{ steps.project-version.outputs.sVersion }} | |
ubuntu-rpm-installer-test: | |
needs: [build-lang, build-distribution] | |
name: Ubuntu rpm Installer | |
runs-on: ubuntu-latest | |
container: centos:latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v2 | |
- name: Set up JDK 17.0.7 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'temurin' | |
java-version: '17.0.7' | |
- name: Setup Files | |
run: | | |
cd /etc/yum.repos.d/ | |
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* | |
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* | |
- name: Install Git | |
run: | | |
yum install sudo -y | |
sudo dnf install git -y | |
- name: Download Ballerina Distribution | |
run: | | |
git clone https://github.com/ballerina-platform/ballerina-distribution.git | |
cd ballerina-distribution | |
git checkout $PATCH_LEVEL | |
- name: Download Ballerina rpm Installer | |
uses: actions/download-artifact@v4 | |
with: | |
name: Linux Installer rpm | |
- name: Install Ballerina RPM | |
run: rpm -ivh ballerina-*-linux-x64.rpm | |
- name: Update Installer Test Configs | |
run: | | |
DISPLAY_TEXT=${{ needs.build-distribution.outputs.short-version }} | |
SWAN_LAKE_LATEST_VERSION="swan-lake-"+$DISPLAY_TEXT | |
SPEC_VERSION=${{ needs.build-lang.outputs.spec-version }} | |
perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=$DISPLAY_TEXT/" ballerina-distribution/ballerina-test-automation/gradle.properties | |
perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=$SWAN_LAKE_LATEST_VERSION/" ballerina-distribution/ballerina-test-automation/gradle.properties | |
perl -pi -e "s/^\s*swan-lake-latest-spec-version=.*/swan-lake-latest-spec-version=$SPEC_VERSION/" ballerina-distribution/ballerina-test-automation/gradle.properties | |
- name: Run Installer Tests | |
working-directory: ./ballerina-distribution/ballerina-test-automation/installer-test | |
run: ./../gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true | |
env: | |
TEST_MODE_ACTIVE: true | |
macos-installer-build: | |
needs: [build-lang, build-distribution] | |
name: Build MacOS Installer | |
runs-on: macos-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v2 | |
- name: Set up JDK 17.0.7 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'temurin' | |
java-version: '17.0.7' | |
- name: Download Ballerina Distribution | |
run: | | |
git clone https://github.com/ballerina-platform/ballerina-distribution.git | |
cd ballerina-distribution | |
git checkout $PATCH_LEVEL | |
- name: Download MacOS Intaller Zip | |
uses: actions/download-artifact@v4 | |
with: | |
name: MacOS Installer ZIP | |
- name: Create macos-pkg | |
id: run_installers_pkg | |
working-directory: ballerina-distribution/installers/mac | |
run: ./build-ballerina-macos-x64.sh -v ${{ needs.build-distribution.outputs.project-version }} -p ./../../../ | |
- name: Archive MacOS pkg | |
uses: actions/upload-artifact@v4 | |
with: | |
name: MacOS Installer pkg | |
path: ballerina-distribution/installers/mac/target/pkg/ballerina-*-macos-x64.pkg | |
- name: Install Ballerina PKG | |
run: sudo installer -pkg ballerina-distribution/installers/mac/target/pkg/ballerina-*-macos-x64.pkg -target / | |
- name: Update Installer Test Configs | |
run: | | |
DISPLAY_TEXT=${{ needs.build-distribution.outputs.short-version }} | |
SWAN_LAKE_LATEST_VERSION="swan-lake-"+$DISPLAY_TEXT | |
SPEC_VERSION=${{ needs.build-lang.outputs.spec-version }} | |
perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=$DISPLAY_TEXT/" ballerina-distribution/ballerina-test-automation/gradle.properties | |
perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=$SWAN_LAKE_LATEST_VERSION/" ballerina-distribution/ballerina-test-automation/gradle.properties | |
perl -pi -e "s/^\s*swan-lake-latest-spec-version=.*/swan-lake-latest-spec-version=$SPEC_VERSION/" ballerina-distribution/ballerina-test-automation/gradle.properties | |
- name: Run Installer Tests | |
working-directory: ./ballerina-distribution/ballerina-test-automation/installer-test | |
run: ./../gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true | |
env: | |
TEST_MODE_ACTIVE: true | |
macos-arm-installer-build: | |
needs: [build-lang, build-distribution] | |
name: Build MacOS ARM Installer | |
runs-on: macos-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v2 | |
- name: Set up JDK 17.0.7 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'temurin' | |
java-version: '17.0.7' | |
- name: Download Ballerina Distribution | |
run: | | |
git clone https://github.com/ballerina-platform/ballerina-distribution.git | |
cd ballerina-distribution | |
git checkout $PATCH_LEVEL | |
- name: Download MacOS-ARM Intaller Zip | |
uses: actions/download-artifact@v4 | |
with: | |
name: MacOS-ARM Installer ZIP | |
- name: Create macos-pkg | |
id: run_installers_pkg | |
working-directory: ballerina-distribution/installers/mac | |
run: ./build-ballerina-macos-x64.sh -v ${{ needs.build-distribution.outputs.project-version }} -p ./../../../ -a arm | |
- name: Archive MacOS pkg | |
uses: actions/upload-artifact@v4 | |
with: | |
name: MacOS Installer pkg | |
path: ballerina-distribution/installers/mac/target/pkg/ballerina-*-macos-arm-x64.pkg | |
windows-installer-build: | |
needs: [build-lang, build-distribution] | |
name: Build Windows Installer | |
runs-on: windows-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v2 | |
- name: Set up JDK 17.0.7 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'temurin' | |
java-version: '17.0.7' | |
- 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: Download Ballerina Distribution | |
run: | | |
git clone https://github.com/ballerina-platform/ballerina-distribution.git | |
cd ballerina-distribution | |
git checkout $env:PATCH_LEVEL | |
- name: Download Windows Intaller Zip | |
uses: actions/download-artifact@v4 | |
with: | |
name: Windows Installer ZIP | |
- name: Create windows-msi | |
id: run_installers_msi | |
run: | | |
$env:Path += ";C:\Program Files (x86)\WiX Toolset v3.11\bin" | |
move ballerina-distribution\installers\windows .\ | |
ren windows w | |
cd w | |
.\build-ballerina-windows-x64.bat --version ${{ needs.build-distribution.outputs.project-version }} --path .\..\ | |
- name: Archive Windows msi | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Windows Installer msi | |
path: w\target\msi\ballerina-*-windows-x64.msi | |
- name: Install Ballerina msi | |
run: msiexec /i w\target\msi\ballerina-${{ needs.build-distribution.outputs.project-version }}-windows-x64.msi /quiet /qr | |
shell: cmd | |
- name: Update Installer Test Configs | |
run: | | |
set DISPLAY_TEXT=${{ needs.build-distribution.outputs.short-version }} | |
set SWAN_LAKE_LATEST_VERSION=swan-lake-%DISPLAY_TEXT% | |
set SPEC_VERSION=${{ needs.build-lang.outputs.spec-version }} | |
perl -pi -e "s/^\s*swan-lake-latest-version-display-text=.*/swan-lake-latest-version-display-text=%DISPLAY_TEXT%/" ballerina-distribution/ballerina-test-automation/gradle.properties | |
perl -pi -e "s/^\s*swan-lake-latest-version=.*/swan-lake-latest-version=%SWAN_LAKE_LATEST_VERSION%/" ballerina-distribution/ballerina-test-automation/gradle.properties | |
perl -pi -e "s/^\s*swan-lake-latest-spec-version=.*/swan-lake-latest-spec-version=%SPEC_VERSION%/" ballerina-distribution/ballerina-test-automation/gradle.properties | |
shell: cmd | |
- name: Run Installer Tests | |
working-directory: .\ballerina-distribution\ballerina-test-automation\installer-test | |
run: | | |
$env:Path += ";C:\Program Files\Ballerina\bin" | |
.\..\gradlew build --stacktrace -scan --console=plain --no-daemon -DballerinaInstalled=true | |
env: | |
TEST_MODE_ACTIVE: true | |
nballerina-build: | |
needs: build-distribution | |
name: Build nBallerina | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v2 | |
- name: Set up JDK 17.0.7 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'temurin' | |
java-version: '17.0.7' | |
- name: Install Python Packages | |
run: | | |
pip install requests | |
pip install retry | |
pip install PyGithub | |
pip install cryptography | |
pip install httplib2 | |
- name: Clone nBallerina repository | |
run: git clone https://github.com/ballerina-platform/nballerina.git | |
- name: Download Linux Deb Installer | |
uses: actions/download-artifact@v4 | |
with: | |
name: Linux Installer deb | |
- name: Install Ballerina DEB | |
run: sudo dpkg -i ballerina-*-linux-x64.deb | |
- name: Run compiler tests | |
working-directory: nballerina/compiler | |
run: bal test --disable-groups private | |
- name: Notify Build Failure | |
if: ${{ failure() }} | |
shell: bash | |
run: python3 dependabot/notify_full_build_failure.py nballerina $PATCH_LEVEL | |
env: | |
CHAT_ID: ${{ secrets.NOTIFICATIONS_CHAT_ID }} | |
CHAT_KEY: ${{ secrets.NOTIFICATIONS_CHAT_KEY }} | |
CHAT_TOKEN: ${{ secrets.NOTIFICATIONS_CHAT_TOKEN }} | |
ENV_USER_ENCRYPTION_KEY: ${{secrets.USER_ENCRYPTION_KEY}} | |
BALLERINA_BOT_TOKEN: ${{ secrets.BALLERINA_BOT_TOKEN }} |