Build Matrix of Binaries #446
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: Build Matrix of Binaries | |
'on': | |
push: | |
tags: | |
- 'v[0-9]+.[0-9]+.[0-9]*' | |
branches: | |
- build-* | |
schedule: | |
- cron: "05 00 * * *" | |
workflow_dispatch: | |
inputs: | |
customTag: | |
description: "Development Tag" | |
required: true | |
default: "development-tag" | |
env: | |
TBN_FILENAME: "tari_suite" | |
TBN_BUNDLEID_BASE: "com.tarilabs.pkg" | |
toolchain: nightly-2023-06-04 | |
matrix-json-file: ".github/workflows/base_node_binaries.json" | |
CARGO_HTTP_MULTIPLEXING: false | |
CARGO_UNSTABLE_SPARSE_REGISTRY: true | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
matrix-prep: | |
runs-on: ubuntu-latest | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: false | |
- name: Set Matrix | |
id: set-matrix | |
run: | | |
# | |
# build all targets images | |
# matrix=$( jq -s -c .[] .github/workflows/base_node_binaries.json ) | |
# | |
# build only single target image | |
# matrix_selection=$( jq -c '.[] | select( ."name" == "windows-x64" )' ${{ env.matrix-json-file }} ) | |
# | |
# buid select target images - build_enabled | |
matrix_selection=$( jq -c '.[] | select( ."build_enabled" != false )' ${{ env.matrix-json-file }} ) | |
# | |
# Setup the json build matrix | |
matrix=$(echo ${matrix_selection} | jq -s -c '{"builds": .}') | |
echo $matrix | |
echo $matrix | jq . | |
echo "matrix=${matrix}" >> $GITHUB_OUTPUT | |
matrix-check: | |
runs-on: ubuntu-latest | |
needs: matrix-prep | |
steps: | |
- name: Install json2yaml | |
run: | | |
sudo npm install -g json2yaml | |
- name: Check matrix definition | |
run: | | |
matrix='${{ needs.matrix-prep.outputs.matrix }}' | |
echo $matrix | |
echo $matrix | jq . | |
echo $matrix | json2yaml | |
builds: | |
name: Building ${{ matrix.builds.name }} on ${{ matrix.builds.runs-on }} | |
needs: matrix-prep | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.matrix-prep.outputs.matrix) }} | |
runs-on: ${{ matrix.builds.runs-on }} | |
steps: | |
- name: Checkout source code | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Declare TestNet for tags | |
if: ${{ startsWith(github.ref, 'refs/tags/v') }} | |
shell: bash | |
run: | | |
source buildtools/multinet_envs.sh ${{github.ref_name}} | |
echo ${TARI_NETWORK} | |
echo ${TARI_NETWORK_DIR} | |
echo "TARI_NETWORK=${TARI_NETWORK}" >> $GITHUB_ENV | |
echo "TARI_NETWORK_DIR=${TARI_NETWORK_DIR}" >> $GITHUB_ENV | |
- name: Declare Global Variables 4 GHA ${{ github.event_name }} | |
id: vars | |
shell: bash | |
run: | | |
echo "VBRANCH=$(echo ${{ env.GITHUB_REF_NAME }})" >> $GITHUB_ENV | |
echo "VSHA_SHORT=$(git rev-parse --short HEAD)" >> $GITHUB_ENV | |
- name: Default Destination Folder | |
run: | | |
echo "S3DESTOVERRIDE=" >> $GITHUB_ENV | |
- name: Scheduled Destination Folder Override | |
if: ${{ github.event_name == 'schedule' && github.event.schedule == '05 00 01 * *' }} | |
run: | | |
echo "S3DESTOVERRIDE=daily/" >> $GITHUB_ENV | |
- name: Setup Rust toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
components: rustfmt, clippy | |
toolchain: ${{ matrix.builds.rust }} | |
targets: ${{ matrix.builds.target }} | |
- name: Install Linux dependencies - Ubuntu | |
if: ${{ startsWith(runner.os,'Linux') && matrix.builds.name != 'linux-arm64' }} | |
run: | | |
sudo apt-get update | |
sudo bash scripts/install_ubuntu_dependencies.sh | |
- name: Install macOS dependencies | |
if: startsWith(runner.os,'macOS') | |
run: brew install cmake coreutils automake autoconf | |
- name: Install Windows dependencies | |
# continue-on-error: true # WARNING: workaround | |
if: startsWith(runner.os,'Windows') | |
run: | | |
vcpkg.exe install sqlite3:x64-windows zlib:x64-windows | |
# Bug in choco - need to install each package individually | |
choco upgrade llvm -y | |
# psutils is out of date | |
# choco upgrade psutils -y | |
choco upgrade openssl -y | |
choco upgrade strawberryperl -y | |
- name: Debugging - Upload logs if dependences failures | |
if: failure() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.TBN_FILENAME }}-windows-dependences-logs | |
path: C:\ProgramData\chocolatey\logs\chocolatey.log | |
- name: Set environment variables - Nix | |
if: "!startsWith(runner.os,'Windows')" | |
run: | | |
echo "SHARUN=shasum --algorithm 256" >> $GITHUB_ENV | |
echo "CC=gcc" >> $GITHUB_ENV | |
echo "TBN_EXT=" >> $GITHUB_ENV | |
echo "SHELL_EXT=.sh" >> $GITHUB_ENV | |
echo "PLATFORM_SPECIFIC_DIR=linux" >> $GITHUB_ENV | |
echo "TBN_DIST=/dist" >> $GITHUB_ENV | |
- name: Set environment variables - macOS | |
if: startsWith(runner.os,'macOS') | |
run: | | |
echo "PLATFORM_SPECIFIC_DIR=osx" >> $GITHUB_ENV | |
echo "LIB_EXT=.dylib" >> $GITHUB_ENV | |
# Hardcoded sdk for MacOSX 11 on ARM64 | |
- name: Set environment variables - macOS - ARM64 (pin/sdk) | |
if: ${{ startsWith(runner.os,'macOS') && matrix.builds.name == 'macos-arm64' }} | |
run: | | |
xcrun --show-sdk-path | |
ls -la "/Library/Developer/CommandLineTools/SDKs/" | |
echo "RANDOMX_RS_CMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk" >> $GITHUB_ENV | |
rustup target add ${{ matrix.builds.target }} | |
- name: Set environment variables - Ubuntu | |
if: startsWith(runner.os,'Linux') | |
run: | | |
echo "LIB_EXT=.so" >> $GITHUB_ENV | |
- name: Set environment variables - Windows | |
if: startsWith(runner.os,'Windows') | |
shell: bash | |
run: | | |
# echo "SHARUN=pwsh C:\ProgramData\chocolatey\lib\psutils\tools\psutils-master\shasum.ps1 --algorithm 256" >> $GITHUB_ENV | |
mkdir -p "$GITHUB_WORKSPACE\psutils" | |
curl -v -o "$GITHUB_WORKSPACE\psutils\getopt.ps1" "https://raw.githubusercontent.com/lukesampson/psutils/master/getopt.ps1" | |
curl -v -o "$GITHUB_WORKSPACE\psutils\shasum.ps1" "https://raw.githubusercontent.com/lukesampson/psutils/master/shasum.ps1" | |
echo "SHARUN=pwsh $GITHUB_WORKSPACE\psutils\shasum.ps1 --algorithm 256" >> $GITHUB_ENV | |
echo "TBN_EXT=.exe" >> $GITHUB_ENV | |
echo "LIB_EXT=.dll" >> $GITHUB_ENV | |
echo "SHELL_EXT=.bat" >> $GITHUB_ENV | |
echo "TBN_DIST=\dist" >> $GITHUB_ENV | |
echo "PLATFORM_SPECIFIC_DIR=windows" >> $GITHUB_ENV | |
echo "SQLITE3_LIB_DIR=C:\vcpkg\installed\x64-windows\lib" >> $GITHUB_ENV | |
echo "OPENSSL_DIR=C:\Program Files\OpenSSL-Win64" >> $GITHUB_ENV | |
echo "LIBCLANG_PATH=C:\Program Files\LLVM\bin" >> $GITHUB_ENV | |
echo "C:\Strawberry\perl\bin" >> $GITHUB_PATH | |
# Don't use caches for binary builds. Start from a clean slate. | |
- name: Build rust binaries | |
env: | |
CARGO_UNSTABLE_SPARSE_REGISTRY: true | |
RUSTFLAGS: "-C target_cpu=${{ matrix.builds.target_cpu }}" | |
ROARING_ARCH: "${{ matrix.builds.target_cpu }}" | |
shell: bash | |
run: | | |
if [ "${{ matrix.builds.cross }}" != "true" ]; then | |
cargo build --release \ | |
--target ${{ matrix.builds.target }} \ | |
--features ${{ matrix.builds.features }} \ | |
${{ matrix.builds.target_bins }} \ | |
${{ matrix.builds.flags }} --locked | |
else | |
cargo install cross | |
cross build --release \ | |
--target ${{ matrix.builds.target }} \ | |
--features ${{ matrix.builds.features }} \ | |
${{ matrix.builds.target_bins }} \ | |
${{ matrix.builds.flags }} --locked | |
fi | |
- name: Copy binaries to folder for archiving | |
shell: bash | |
run: | | |
mkdir -p "$GITHUB_WORKSPACE${TBN_DIST}" | |
cd "$GITHUB_WORKSPACE${TBN_DIST}" | |
VERSION=$(awk -F ' = ' '$1 ~ /version/ { gsub(/["]/, "", $2); printf("%s",$2) }' "$GITHUB_WORKSPACE/applications/minotari_node/Cargo.toml") | |
echo "Branch: ${VBRANCH}" | |
echo "Sha: ${VSHA_SHORT}" | |
echo "VERSION=${VERSION}" >> $GITHUB_ENV | |
echo "VSHA_SHORT=${VSHA_SHORT}" >> $GITHUB_ENV | |
BINFILE="${TBN_FILENAME}-${VERSION}-${VSHA_SHORT}-${{ matrix.builds.name }}${TBN_EXT}" | |
echo "BINFILE=${BINFILE}" >> $GITHUB_ENV | |
echo "Copying files for ${BINFILE} to $(pwd)" | |
ls -la "$GITHUB_WORKSPACE/target/${{ matrix.builds.target }}/release/" | |
FILES=( | |
"minotari_node" | |
"minotari_console_wallet" | |
"minotari_miner" | |
"minotari_merge_mining_proxy" | |
) | |
for FILE in "${FILES[@]}"; do | |
if [ -f "$GITHUB_WORKSPACE/target/${{ matrix.builds.target }}/release/${FILE}${TBN_EXT}" ]; then | |
cp -v "$GITHUB_WORKSPACE/target/${{ matrix.builds.target }}/release/${FILE}${TBN_EXT}" . | |
fi | |
done | |
if [ -f "$GITHUB_WORKSPACE/applications/minotari_node/${PLATFORM_SPECIFIC_DIR}/runtime/start_tor${SHELL_EXT}" ]; then | |
cp -v "$GITHUB_WORKSPACE/applications/minotari_node/${PLATFORM_SPECIFIC_DIR}/runtime/start_tor${SHELL_EXT}" . | |
fi | |
- name: Build the macOS pkg | |
if: startsWith(runner.os,'macOS') | |
continue-on-error: true | |
env: | |
MACOS_KEYCHAIN_PASS: ${{ secrets.MACOS_KEYCHAIN_PASS }} | |
MACOS_APPLICATION_ID: ${{ secrets.MACOS_APPLICATION_ID }} | |
MACOS_APPLICATION_CERT: ${{ secrets.MACOS_APPLICATION_CERT }} | |
MACOS_APPLICATION_PASS: ${{ secrets.MACOS_APPLICATION_PASS }} | |
MACOS_INSTALLER_ID: ${{ secrets.MACOS_INSTALLER_ID }} | |
MACOS_INSTALLER_CERT: ${{ secrets.MACOS_INSTALLER_CERT }} | |
MACOS_INSTALLER_PASS: ${{ secrets.MACOS_INSTALLER_PASS }} | |
MACOS_NOTARIZE_USERNAME: ${{ secrets.MACOS_NOTARIZE_USERNAME }} | |
MACOS_NOTARIZE_PASSWORD: ${{ secrets.MACOS_NOTARIZE_PASSWORD }} | |
MACOS_ASC_PROVIDER: ${{ secrets.MACOS_ASC_PROVIDER }} | |
run: | | |
echo $MACOS_APPLICATION_CERT | base64 --decode > application.p12 | |
echo $MACOS_INSTALLER_CERT | base64 --decode > installer.p12 | |
security create-keychain -p $MACOS_KEYCHAIN_PASS build.keychain | |
security default-keychain -s build.keychain | |
security unlock-keychain -p $MACOS_KEYCHAIN_PASS build.keychain | |
security import application.p12 -k build.keychain -P $MACOS_APPLICATION_PASS -T /usr/bin/codesign | |
security import installer.p12 -k build.keychain -P $MACOS_INSTALLER_PASS -T /usr/bin/pkgbuild | |
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $MACOS_KEYCHAIN_PASS build.keychain | |
cd buildtools | |
export target_release="target/${{ matrix.builds.target }}/release" | |
./create_osx_install_zip.sh unused nozip | |
FILES=( | |
"minotari_node" | |
"minotari_console_wallet" | |
"minotari_miner" | |
"minotari_merge_mining_proxy" | |
) | |
for FILE in "${FILES[@]}"; do | |
codesign --options runtime --force --verify --verbose --timestamp --sign "Developer ID Application: $MACOS_APPLICATION_ID" "/tmp/tari_testnet/runtime/$FILE" | |
codesign --verify --deep --display --verbose=4 "/tmp/tari_testnet/runtime/$FILE" | |
cp -vf "/tmp/tari_testnet/runtime/$FILE" "$GITHUB_WORKSPACE${{ env.TBN_DIST }}" | |
done | |
distDirPKG=$(mktemp -d -t ${{ env.TBN_FILENAME }}) | |
echo "${distDirPKG}" | |
echo "distDirPKG=${distDirPKG}" >> $GITHUB_ENV | |
TBN_Temp=${{ env.TBN_FILENAME }} | |
TBN_BUNDLEID_VALID_NAME=$(echo "${TBN_Temp//_/-}") | |
# Strip apple-darwin | |
TBN_ARCH=$(echo "${${{ matrix.builds.target }}//-apple-darwin/}") | |
pkgbuild --root /tmp/tari_testnet \ | |
--identifier "${{ env.TBN_BUNDLEID_BASE }}.$TBN_BUNDLEID_VALID_NAME" \ | |
--version "$VERSION" \ | |
--install-location "/tmp/tari" \ | |
--scripts "/tmp/tari_testnet/scripts" \ | |
--sign "Developer ID Installer: $MACOS_INSTALLER_ID" \ | |
"${distDirPKG}/${{ env.TBN_FILENAME }}-${{ matrix.builds.name }}-${{ env.VERSION }}.pkg" | |
echo -e "Submitting to Apple...\n\n" | |
xcrun altool --notarize-app \ | |
--primary-bundle-id "${{ env.TBN_BUNDLEID_BASE }}.$TBN_BUNDLEID_VALID_NAME" \ | |
--username "$MACOS_NOTARIZE_USERNAME" --password "$MACOS_NOTARIZE_PASSWORD" \ | |
--asc-provider "$MACOS_ASC_PROVIDER" \ | |
--file "${distDirPKG}/${{ env.TBN_FILENAME }}-${{ matrix.builds.name }}-${{ env.VERSION }}.pkg" &> notarisation.result | |
requestUUID=`grep RequestUUID notarisation.result | cut -d" " -f 3` | |
echo $requestUUID | |
if [[ $requestUUID == "" ]]; then | |
echo "could not upload for notarization" | |
exit 1 | |
else | |
echo "Notarization RequestUUID: $requestUUID" | |
fi | |
echo -e "\n\nChecking result of notarisation..." | |
request_status="in progress" | |
while [[ "$request_status" == "in progress" ]]; do | |
echo -n "waiting... " | |
sleep 10 | |
request_status=$(xcrun altool --notarization-info $requestUUID --username "$MACOS_NOTARIZE_USERNAME" --password "$MACOS_NOTARIZE_PASSWORD" 2>&1) | |
echo "$request_status" | |
request_status=$(echo "$request_status" | awk -F ': ' '/Status:/ { print $2; }' ) | |
echo "$request_status" | |
done | |
echo "$request_status" | |
if [[ $request_status != "success" ]]; then | |
echo "## could not notarize - $request_status - ${{ env.TBN_FILENAME }}-${{ matrix.builds.name }}-${{ env.VERSION }}.pkg" | |
exit 1 | |
else | |
echo -e "\nStapling package...${{ env.TBN_FILENAME }}-${{ matrix.builds.name }}-${{ env.VERSION }}.pkg\n" | |
xcrun stapler staple -v "${distDirPKG}/${{ env.TBN_FILENAME }}-${{ matrix.builds.name }}-${{ env.VERSION }}.pkg" | |
fi | |
cd ${distDirPKG} | |
echo "Compute pkg shasum" | |
${SHARUN} "${{ env.TBN_FILENAME }}-${{ matrix.builds.name }}-${{ env.VERSION }}.pkg" \ | |
>> "${{ env.TBN_FILENAME }}-${{ matrix.builds.name }}-${{ env.VERSION }}.pkg.sha256" | |
cat "${{ env.TBN_FILENAME }}-${{ matrix.builds.name }}-${{ env.VERSION }}.pkg.sha256" | |
echo "Checksum verification for pkg is " | |
${SHARUN} --check "${{ env.TBN_FILENAME }}-${{ matrix.builds.name }}-${{ env.VERSION }}.pkg.sha256" | |
- name: Artifact upload for macOS pkg | |
if: startsWith(runner.os,'macOS') | |
continue-on-error: true | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.TBN_FILENAME }}-${{ matrix.builds.name }}-${{ env.VERSION }}.pkg | |
path: "${{ env.distDirPKG }}/${{ env.TBN_FILENAME }}-${{ matrix.builds.name }}-${{ env.VERSION }}*.pkg*" | |
# unlike inno script studio, iscc.exe doesn't run the [precompile] step generate_config.bat | |
- name: Build the Windows installer | |
shell: cmd | |
if: startsWith(runner.os,'Windows') | |
run: | | |
cd buildtools | |
call generate_config.bat | |
"%programfiles(x86)%\Inno Setup 6\iscc.exe" "/DMyAppVersion=${{ env.VERSION }}-${{ env.VSHA_SHORT }}-release" "/DTariSuitePath=${{ github.workspace }}${{ env.TBN_DIST }}" "windows_inno_installer.iss" | |
- name: Artifact upload for Windows installer | |
uses: actions/upload-artifact@v3 | |
if: startsWith(runner.os,'Windows') | |
with: | |
name: "${{ env.TBN_FILENAME }}_windows_installer" | |
path: "${{ github.workspace }}/buildtools/Output/*" | |
- name: Archive and Checksum Binaries | |
# if: "!startsWith(runner.os,'Windows')" # Disable checksum for Windows - workaround | |
shell: bash | |
run: | | |
echo "Archive ${{ env.BINFILE }} too ${{ env.BINFILE }}.zip" | |
cd "$GITHUB_WORKSPACE${{ env.TBN_DIST }}" | |
echo "Compute files shasum" | |
${SHARUN} * >> "${{ env.BINFILE }}.sha256" | |
cat "${{ env.BINFILE }}.sha256" | |
echo "Checksum verification for files is " | |
${SHARUN} --check "${{ env.BINFILE }}.sha256" | |
7z a "${{ env.BINFILE }}.zip" * | |
echo "Compute archive shasum" | |
${SHARUN} "${{ env.BINFILE }}.zip" >> "${{ env.BINFILE }}.zip.sha256" | |
cat "${{ env.BINFILE }}.zip.sha256" | |
echo "Checkum verification archive is " | |
${SHARUN} --check "${{ env.BINFILE }}.zip.sha256" | |
- name: Artifact upload for Archive | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.TBN_FILENAME }}_archive-${{ matrix.builds.name }} | |
path: "${{ github.workspace }}${{ env.TBN_DIST }}/${{ env.BINFILE }}.zip*" | |
- name: Prep Miner for upload | |
shell: bash | |
run: | | |
cd "${{ github.workspace }}${{ env.TBN_DIST }}" | |
cp -v "minotari_miner${{ env.TBN_EXT}}" \ | |
"minotari_miner-${{ matrix.builds.name }}${{ env.TBN_EXT}}" | |
echo "Compute miner shasum" | |
${SHARUN} "minotari_miner-${{ matrix.builds.name }}${{ env.TBN_EXT}}" \ | |
>> "minotari_miner-${{ matrix.builds.name }}${{ env.TBN_EXT}}.sha256" | |
cat "minotari_miner-${{ matrix.builds.name }}${{ env.TBN_EXT}}.sha256" | |
echo "Checksum verification for miner is " | |
${SHARUN} --check "minotari_miner-${{ matrix.builds.name }}${{ env.TBN_EXT}}.sha256" | |
- name: Artifact upload for Miner | |
uses: actions/upload-artifact@v3 | |
with: | |
name: minotari_miner-${{ matrix.builds.name }} | |
path: "${{ github.workspace }}${{ env.TBN_DIST }}/minotari_miner-${{ matrix.builds.name }}${{ env.TBN_EXT}}*" | |
- name: Prep diag-utils archive for upload | |
continue-on-error: true | |
shell: bash | |
run: | | |
mkdir "${{ github.workspace }}${{ env.TBN_DIST }}/diag-utils" | |
cd "${{ github.workspace }}${{ env.TBN_DIST }}/diag-utils" | |
# Find RandomX built tools for testing | |
find "$GITHUB_WORKSPACE/target/${{ matrix.builds.target }}/release/" \ | |
-name "randomx-*${{ env.TBN_EXT}}" -type f -perm -+x -exec cp -v {} . \; | |
echo "Compute diag utils shasum" | |
${SHARUN} * \ | |
>> "${{ env.TBN_FILENAME }}_archive-diag-utils-${{ matrix.builds.name }}.sha256" | |
cat "${{ env.TBN_FILENAME }}_archive-diag-utils-${{ matrix.builds.name }}.sha256" | |
echo "Checksum verification for diag utils is " | |
${SHARUN} --check "${{ env.TBN_FILENAME }}_archive-diag-utils-${{ matrix.builds.name }}.sha256" | |
7z a "${{ env.TBN_FILENAME }}_archive-diag-utils-${{ matrix.builds.name }}.zip" * | |
echo "Compute diag utils archive shasum" | |
${SHARUN} "${{ env.TBN_FILENAME }}_archive-diag-utils-${{ matrix.builds.name }}.zip" \ | |
>> "${{ env.TBN_FILENAME }}_archive-diag-utils-${{ matrix.builds.name }}.zip.sha256" | |
cat "${{ env.TBN_FILENAME }}_archive-diag-utils-${{ matrix.builds.name }}.zip.sha256" | |
echo "Checksum verification for diag utils archive is " | |
${SHARUN} --check "${{ env.TBN_FILENAME }}_archive-diag-utils-${{ matrix.builds.name }}.zip.sha256" | |
- name: Artifact upload for diag-utils | |
continue-on-error: true | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.TBN_FILENAME }}_archive-diag-utils-${{ matrix.builds.name }} | |
path: "${{ github.workspace }}${{ env.TBN_DIST }}/diag-utils/*.zip*" | |
- name: Artifact cleanup for diag-utils | |
continue-on-error: true | |
shell: bash | |
run: | | |
rm -vRf "${{ github.workspace }}${{ env.TBN_DIST }}/diag-utils/" | |
- name: Sync dist to S3 - Bash | |
continue-on-error: true # Don't break if s3 upload fails | |
if: ${{ env.AWS_SECRET_ACCESS_KEY != '' && matrix.builds.runs-on != 'self-hosted' }} | |
shell: bash | |
run: | | |
echo "Starting upload ... ${{ env.SOURCE }}" | |
if [ "$RUNNER_OS" == "Windows" ]; then | |
echo "No ls for 'D:' on Windows" | |
else | |
ls -al ${{ env.SOURCE }} | |
fi | |
aws s3 ${{ env.S3CMD }} --region ${{ secrets.AWS_REGION }} \ | |
"${{ env.SOURCE }}" \ | |
s3://${{ secrets.AWS_S3_BUCKET }}/${{ env.DEST_DIR }} \ | |
${{ env.S3OPTIONS }} | |
echo "Done - $?" | |
exit 0 | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
SOURCE: "${{ github.workspace }}${{ env.TBN_DIST }}" | |
DEST_DIR: "${{ env.S3DESTOVERRIDE }}${{ env.PLATFORM_SPECIFIC_DIR }}/${{ env.TARI_NETWORK_DIR }}/" | |
S3CMD: "cp" | |
S3OPTIONS: '--recursive --exclude "*" --include "*.zip*" --include "*.pkg*"' | |
# S3OPTIONS: '--recursive --exclude "*" --include "*.zip*"' | |
# S3OPTIONS: '--acl public-read' | |
- name: Copy tags to latest s3 - Bash | |
continue-on-error: true # Don't break if s3 upload fails | |
if: ${{ env.AWS_SECRET_ACCESS_KEY != '' && matrix.builds.runs-on != 'self-hosted' && startsWith(github.ref, 'refs/tags/v') }} | |
shell: bash | |
run: | | |
echo "Starting upload ... ${{ env.SOURCE }}" | |
if [ "$RUNNER_OS" == "Windows" ]; then | |
echo "No ls for 'D:' on Windows" | |
else | |
ls -al ${{ env.SOURCE }} | |
fi | |
aws s3 ${{ env.S3CMD }} --region ${{ secrets.AWS_REGION }} \ | |
"${{ env.SOURCE }}" \ | |
s3://${{ secrets.AWS_S3_BUCKET }}/current/${{ env.DEST_DIR }} \ | |
${{ env.S3OPTIONS }} | |
aws s3 rm --region ${{ secrets.AWS_REGION }} \ | |
s3://${{ secrets.AWS_S3_BUCKET }}/latest/${{ env.DEST_DIR }}/* | |
aws s3 ${{ env.S3CMD }} --region ${{ secrets.AWS_REGION }} \ | |
"${{ env.SOURCE }}" \ | |
s3://${{ secrets.AWS_S3_BUCKET }}/latest/${{ env.DEST_DIR }} \ | |
${{ env.S3OPTIONS }} | |
echo "Done - $?" | |
exit 0 | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
SOURCE: "${{ github.workspace }}${{ env.TBN_DIST }}" | |
DEST_DIR: "${{ env.S3DESTOVERRIDE }}${{ env.PLATFORM_SPECIFIC_DIR }}/${{ env.TARI_NETWORK_DIR }}/" | |
S3CMD: "cp" | |
S3OPTIONS: '--recursive --exclude "*" --include "*.zip*" --include "*.pkg*"' | |
# S3OPTIONS: '--acl public-read' | |
create-release: | |
runs-on: ubuntu-latest | |
needs: builds | |
if: ${{ startsWith(github.ref, 'refs/tags/v') }} | |
steps: | |
- name: Download binaries | |
uses: actions/download-artifact@v3 | |
- name: Create release | |
uses: ncipollo/release-action@v1 | |
with: | |
artifacts: "tari_*/**/*" | |
token: ${{ secrets.GITHUB_TOKEN }} | |
prerelease: true | |
draft: true | |
allowUpdates: true | |
updateOnlyUnreleased: true | |
replacesArtifacts: true |