Skip to content

Build and Create Pre-Release #31

Build and Create Pre-Release

Build and Create Pre-Release #31

name: Build and Create Pre-Release
on:
workflow_dispatch:
inputs:
addCommit:
description: 'Dev build?'
required: false
type: boolean
sendSlackMessage:
description: 'Send Slack Message?'
required: false
type: boolean
message:
description: "What changed (for slack message)"
required: true
jobs:
build-and-release:
runs-on: macos-13
steps:
- name: "Install Homebrew"
run: /bin/bash -c "NONINTERACTIVE=1 $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- name: "Install Dependencies"
run: |
/usr/local/bin/brew install --overwrite python@3.11 || echo "Ignore errors on this 1"
/usr/local/bin/brew link --overwrite python@3.11 || echo "Ignore errors on this 2"
/usr/local/bin/brew install --overwrite dpkg rpm upx zip make wget jq || echo "Ignore errors on this 3"
/usr/local/bin/brew link --overwrite python@3.11 || echo "Ignore errors on this 4"
/usr/local/bin/brew install python-gdbm@3.11 || echo "Ignore errors on this 5"
/usr/local/bin/brew install python-tk@3.11 || echo "Ignore errors on this 6"
- name: "Install golang"
run: |
wget https://go.dev/dl/go1.21.0.darwin-amd64.pkg
sudo installer -store -pkg go1.21.0.darwin-amd64.pkg -target /
- name: "Install Packages.pkg for making macos PKG files"
run: wget https://docker-laptop.s3.eu-west-1.amazonaws.com/Packages.pkg && sudo installer -pkg Packages.pkg -target /
- name: "Git checkout"
uses: actions/checkout@v3
- name: "Compile"
env:
ADDCOMMIT: ${{ inputs.addCommit }}
run: |
buildcmd="build-prerelease"
[ "${ADDCOMMIT}" = "false" ] && buildcmd="build-official"
export PATH=$PATH:/usr/local/bin:/usr/local/go/bin
cd ~/work/aerolab/aerolab/src && make cleanall && make ${buildcmd}
- name: "Create linux packages"
env:
ADDCOMMIT: ${{ inputs.addCommit }}
run: |
buildcmd="build-prerelease"
[ "${ADDCOMMIT}" = "false" ] && buildcmd="build-official"
export PATH=$PATH:/usr/local/bin:/usr/local/go/bin
cd ~/work/aerolab/aerolab/src && make pkg-linux
- name: "Create windows zips"
env:
ADDCOMMIT: ${{ inputs.addCommit }}
run: |
buildcmd="build-prerelease"
[ "${ADDCOMMIT}" = "false" ] && buildcmd="build-official"
export PATH=$PATH:/usr/local/bin:/usr/local/go/bin
cd ~/work/aerolab/aerolab/src && make pkg-windows-zip
- name: "Print aerolab version"
run: cd ~/work/aerolab/aerolab/src && ../bin/aerolab-macos-amd64 version
- name: "Prepare keychain for signing MacOS"
env:
keypw: ${{ secrets.APPLEPW }}
INSTALLERP12: ${{ secrets.INSTALLERP12 }}
APPLICATIONP12: ${{ secrets.APPLICATIONP12 }}
run: |
set -e
security create-keychain -p mysecretpassword build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p mysecretpassword build.keychain
security set-keychain-settings build.keychain
security unlock-keychain -p mysecretpassword build.keychain
echo "$APPLICATIONP12" | base64 -d > app.p12
echo "$INSTALLERP12" | base64 -d > install.p12
security import app.p12 -k build.keychain -P $keypw -A
security import install.p12 -k build.keychain -P $keypw -A
security set-key-partition-list -S apple-tool:,apple: -s -k mysecretpassword build.keychain
- name: "Sign and build MacOS"
env:
xaerolab_appleid: ${{ secrets.APPLEUSER }}
xaerolab_applepw: ${{ secrets.APPLEPW }}
xaerolab_signer: ${{ secrets.APPLESIGNER }}
xaerolab_installsigner: ${{ secrets.APPLEINSTALLSIGNER }}
xaerolab_teamid: ${{ secrets.APPLETEAMID }}
run: |
set -e
export aerolab_appleid="${xaerolab_appleid}"
export aerolab_applepw="${xaerolab_applepw}"
export aerolab_signer="${xaerolab_signer}"
export aerolab_installsigner="${xaerolab_installsigner}"
export aerolab_teamid="${xaerolab_teamid}"
export PATH=$PATH:/usr/local/bin:/usr/local/go/bin && cd ~/work/aerolab/aerolab/src && make macos-build-all && make macos-notarize-all
- name: "Create a new pre-release"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ADDCOMMIT: ${{ inputs.addCommit }}
run: |
set -e
echo "${ADDCOMMIT}"
cd ~/work/aerolab/aerolab/bin/packages
COMMIT=$(git rev-parse --short HEAD)
VER=$(cat ../../VERSION.md)
BRANCH=$(git rev-parse --abbrev-ref HEAD)
TAG=${VER}-${COMMIT}
[ "${ADDCOMMIT}" = "false" ] && TAG=${VER}
FULLCOMMIT=$(git rev-parse HEAD)
gh release create -R github.com/aerospike/aerolab --notes-file ../../RELEASE.md --prerelease --target ${FULLCOMMIT} --title "AeroLab - v${TAG}" ${TAG} aerolab-linux-amd64-${VER}.deb aerolab-linux-amd64-${VER}.rpm aerolab-linux-amd64-${VER}.zip aerolab-linux-arm64-${VER}.deb aerolab-linux-arm64-${VER}.rpm aerolab-linux-arm64-${VER}.zip aerolab-macos-${VER}.pkg aerolab-macos-amd64-${VER}.zip aerolab-macos-arm64-${VER}.zip aerolab-windows-amd64-${VER}.zip aerolab-windows-arm64-${VER}.zip
- name: "Delete previous pre-release"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -e
COUNT=$(gh release list -R github.com/aerospike/aerolab -L 100 |grep Pre-release |awk '{print $(NF-1)}' |wc -l)
if [ $COUNT -lt 2 ]
then
echo "Found only one pre-release, not removing"
exit 0
else
PREV=$(gh release list -R github.com/aerospike/aerolab -L 100 |grep Pre-release |awk '{print $(NF-1)}' |tail -1)
echo "Removing $PREV"
gh release delete $PREV -R github.com/aerospike/aerolab --yes --cleanup-tag
fi
- name: "Send slack notification"
env:
SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }}
SLACK_TOKEN: ${{ secrets.SLACK_TOKEN }}
ADDCOMMIT: ${{ inputs.addCommit }}
MESSAGE: ${{ inputs.message }}
SENDSLACK: ${{ inputs.sendSlackMessage }}
run: |
if [ "${SENDSLACK}" = "true" ]
then
echo "${ADDCOMMIT}"
cd ~/work/aerolab/aerolab
COMMIT=$(git rev-parse --short HEAD)
VER=$(cat VERSION.md)
if [ "${ADDCOMMIT}" = "true" ]
then
TAG=${VER}-${COMMIT}
curl -d "text=A new dev build is available at https://github.com/aerospike/aerolab/releases/tag/${TAG} Changes: ${MESSAGE}" -d "channel=${SLACK_CHANNEL}" -H "Authorization: Bearer ${SLACK_TOKEN}" -X POST https://slack.com/api/chat.postMessage || exit 0
else
TAG=${VER}
curl -d "text=A new pre-release is available at https://github.com/aerospike/aerolab/releases/tag/${TAG} Changes: ${MESSAGE}" -d "channel=${SLACK_CHANNEL}" -H "Authorization: Bearer ${SLACK_TOKEN}" -X POST https://slack.com/api/chat.postMessage || exit 0
fi
fi