Remove crypto submodule replace with header file #540
This file contains hidden or 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 and Prerelease | |
on: | |
push: | |
branches: [ "master" ] | |
pull_request: | |
branches: [ "master" ] | |
env: | |
BUILD_TYPE: Release | |
jobs: | |
get-info: | |
runs-on: ubuntu-24.04 | |
outputs: | |
date: ${{ steps.vars.outputs.date }} | |
shorthash: ${{ steps.vars.outputs.shorthash }} | |
fullhash: ${{ steps.vars.outputs.fullhash }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get date and git hash | |
id: vars | |
run: | | |
echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_ENV | |
echo "shorthash=$(git rev-parse --short HEAD)" >> $GITHUB_ENV | |
echo "fullhash=$(git rev-parse HEAD)" >> $GITHUB_ENV | |
echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT | |
echo "shorthash=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT | |
echo "fullhash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT | |
clang-format: | |
runs-on: ubuntu-24.04 | |
continue-on-error: true | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install | |
run: | | |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - | |
sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-19 main' | |
sudo apt update | |
sudo apt install clang-format-19 | |
- name: Build | |
env: | |
COMMIT_RANGE: ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }} | |
run: ./.ci/clang-format.sh | |
build-windows: | |
runs-on: windows-latest | |
needs: get-info | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Qt | |
uses: jurplel/install-qt-action@v4 | |
with: | |
version: 6.9.0 | |
host: windows | |
target: desktop | |
arch: win64_msvc2022_64 | |
archives: qtbase qttools | |
modules: qtmultimedia | |
- name: Configure CMake | |
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DFORCE_UAC=ON | |
- name: Build | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} | |
- name: Move Files and Resources | |
run: "mkdir upload\n\t move build/Release/BB_Launcher.exe upload\n" | |
- name: Deploy and Package | |
run: | | |
windeployqt --no-compiler-runtime --no-system-d3d-compiler --no-system-dxc-compiler --dir upload upload/BB_Launcher.exe | |
Compress-Archive -Path upload/* -DestinationPath BB_Launcher-win64-qt-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }}.zip | |
- name: Upload Windows Qt artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: BB_Launcher-win64-qt-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }} | |
path: upload/ | |
build-windows-noUAC: | |
runs-on: windows-latest | |
needs: get-info | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Qt | |
uses: jurplel/install-qt-action@v4 | |
with: | |
version: 6.9.0 | |
host: windows | |
target: desktop | |
arch: win64_msvc2022_64 | |
archives: qtbase qttools | |
modules: qtmultimedia | |
- name: Configure CMake | |
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DFORCE_UAC=OFF | |
- name: Build | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} | |
- name: Move Files and Resources | |
run: "mkdir upload\n\t move build/Release/BB_Launcher.exe upload\n" | |
- name: Deploy and Package | |
run: | | |
windeployqt --no-compiler-runtime --no-system-d3d-compiler --no-system-dxc-compiler --dir upload upload/BB_Launcher.exe | |
Compress-Archive -Path upload/* -DestinationPath BB_Launcher-win64-qt-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }}.zip | |
- name: Upload Windows Qt artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: BB_Launcher-win64-qt-noUAC-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }} | |
path: upload/ | |
build-macos: | |
runs-on: macos-15 | |
needs: get-info | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup latest Xcode | |
uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: latest | |
- name: Setup Qt | |
uses: jurplel/install-qt-action@v4 | |
with: | |
version: 6.9.0 | |
host: mac | |
target: desktop | |
arch: clang_64 | |
archives: qtbase qttools | |
modules: qtmultimedia | |
- name: Configure CMake | |
run: cmake --fresh -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_OSX_ARCHITECTURES=x86_64 | |
- name: Build | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} | |
- name: Package and Upload macOS Qt artifact | |
run: | | |
mkdir upload | |
mv ${{github.workspace}}/build/BB_Launcher.app upload | |
macdeployqt upload/BB_Launcher.app | |
tar cf BB_Launcher-macos-qt.tar.gz -C upload . | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: BB_Launcher-macos-qt-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }} | |
path: BB_Launcher-macos-qt.tar.gz | |
build-linux: | |
runs-on: ubuntu-24.04 | |
needs: get-info | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install dependencies | |
run: sudo apt-get update && sudo apt install -y libx11-dev libxext-dev libwayland-dev libdecor-0-dev libxkbcommon-dev libglfw3-dev libgles2-mesa-dev libfuse2 clang build-essential qt6-base-dev qt6-tools-dev qt6-multimedia-dev libasound2-dev libpulse-dev libopenal-dev libudev-dev | |
- name: Configure CMake | |
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} | |
- name: Build | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} | |
- name: Run AppImage packaging script | |
run: ./.github/linux-appimage-qt.sh | |
- name: Package and Upload Linux Qt artifact | |
run: | | |
tar cf BB_Launcher-qt.tar.gz -C ${{github.workspace}}/build BB_Launcher | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: BB_Launcher-linux-qt-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }} | |
path: BB_Launcher-qt.AppImage | |
pre-release: | |
if: github.ref == 'refs/heads/master' && github.repository == 'rainmakerv3/BB_Launcher' && github.event_name == 'push' | |
needs: [get-info, build-windows, build-windows-noUAC, build-linux, build-macos] | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Download all artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: ./artifacts | |
- name: Compress individual directories (without parent directory) | |
run: | | |
cd ./artifacts | |
for dir in */; do | |
if [ -d "$dir" ]; then | |
dir_name=${dir%/} | |
echo "Creating zip for $dir_name" | |
(cd "$dir_name" && zip -r "../${dir_name}.zip" .) | |
fi | |
done | |
- name: Get latest release information | |
id: get_latest_release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
api_url="https://api.github.com/repos/${{ github.repository }}" | |
latest_release_info=$(curl -H "Authorization: token $GITHUB_TOKEN" "$api_url/releases/latest") | |
echo "last_release_tag=$(echo "$latest_release_info" | jq -r '.tag_name')" >> $GITHUB_ENV | |
- name: Create Pre-Release on GitHub | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
id: create_release | |
uses: ncipollo/release-action@v1 | |
with: | |
name: "Pre-release-BBLauncher-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }}" | |
tag: "Pre-release-BBLauncher-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }}" | |
draft: false | |
prerelease: true | |
body: "- Mac builds now out of BETA since there have been no reported issues\n- Prerelease builds are meant for testing, releases are better for general use\n- Full Changelog: https://github.com/rainmakerv3/BB_Launcher/commits/master/" | |
artifacts: ./artifacts/*.zip | |
- name: Publish to Release Repository | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
ARTIFACTS_DIR=./artifacts | |
REPO_WINDOWS="BBLauncher/BBLauncher-binaries-Windows" | |
REPO_LINUX="BBLauncher/BBLauncher-binaries-Linux" | |
for file in "$ARTIFACTS_DIR"/*.zip; do | |
filename=$(basename "$file") | |
REPO="" | |
# Determine repository based on file name | |
if [[ "$filename" == *"win64"* ]]; then | |
REPO=$REPO_WINDOWS | |
elif [[ "$filename" == *"linux"* ]] || [[ "$filename" == *"ubuntu64"* ]]; then | |
REPO=$REPO_LINUX | |
elif [[ "$filename" == *"macos"* ]]; then | |
REPO=$REPO_MAC | |
fi | |
# If REPO is empty, skip file | |
if [[ -z "$REPO" ]]; then | |
echo "No matching repository for $filename" | |
continue | |
fi | |
# Check if release already exists and get ID | |
release_id=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \ | |
"https://api.github.com/repos/$REPO/releases/tags/Pre-release-BBLauncher-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }}" | jq -r '.id') | |
if [[ "$release_id" == "null" ]]; then | |
echo "Creating release in $REPO for $filename" | |
release_id=$(curl -s -X POST -H "Authorization: token $GITHUB_TOKEN" \ | |
-H "Accept: application/vnd.github.v3+json" \ | |
-d '{ | |
"tag_name": "Pre-release-BBLauncher-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }}", | |
"name": "Pre-release-BBLauncher-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }}", | |
"draft": false, | |
"prerelease": true, | |
"body": "Commit: [${{ needs.get-info.outputs.fullhash }}](https://github.com/raimakerv3/BB_Launcher/commit/${{ needs.get-info.outputs.fullhash }})" | |
}' "https://api.github.com/repos/$REPO/releases" | jq -r '.id') | |
else | |
echo "Release already exists in $REPO with ID $release_id" | |
fi | |
# Artifact upload | |
echo "Uploading $filename to release $release_id in $REPO" | |
upload_url="https://uploads.github.com/repos/$REPO/releases/$release_id/assets?name=$filename" | |
curl -X POST -H "Authorization: token $GITHUB_TOKEN" -H "Content-Type: application/octet-stream" --data-binary @"$file" "$upload_url" | |
done | |
- name: Get current pre-release information | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
api_url="https://api.github.com/repos/${{ github.repository }}/releases" | |
# Get all releases (sorted by date) | |
releases=$(curl -H "Authorization: token $GITHUB_TOKEN" "$api_url") | |
# Capture the most recent pre-release (assuming the first one is the latest) | |
current_release=$(echo "$releases" | jq -c '.[] | select(.prerelease == true) | .published_at' | sort -r | head -n 1) | |
# Remove extra quotes from captured date | |
current_release=$(echo $current_release | tr -d '"') | |
# Export the current published_at to be available for the next step | |
echo "CURRENT_PUBLISHED_AT=$current_release" >> $GITHUB_ENV | |
- name: Delete old pre-releases and tags | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
api_url="https://api.github.com/repos/${{ github.repository }}/releases" | |
# Get current pre-releases | |
releases=$(curl -H "Authorization: token $GITHUB_TOKEN" "$api_url") | |
# Remove extra quotes from captured date | |
CURRENT_PUBLISHED_AT=$(echo $CURRENT_PUBLISHED_AT | tr -d '"') | |
# Convert CURRENT_PUBLISHED_AT para timestamp Unix | |
current_published_ts=$(date -d "$CURRENT_PUBLISHED_AT" +%s) | |
# Identify pre-releases | |
echo "$releases" | jq -c '.[] | select(.prerelease == true)' | while read -r release; do | |
release_date=$(echo "$release" | jq -r '.published_at') | |
release_id=$(echo "$release" | jq -r '.id') | |
release_tag=$(echo "$release" | jq -r '.tag_name') | |
# Remove extra quotes from captured date | |
release_date=$(echo $release_date | tr -d '"') | |
# Convert release_date para timestamp Unix | |
release_date_ts=$(date -d "$release_date" +%s) | |
# Compare timestamps and delete old pre-releases | |
if [[ "$release_date_ts" -lt "$current_published_ts" ]]; then | |
echo "Deleting old pre-release: $release_id from $release_date with tag: $release_tag" | |
# Delete the pre-release | |
curl -X DELETE -H "Authorization: token $GITHUB_TOKEN" "$api_url/$release_id" | |
# Delete the tag | |
curl -X DELETE -H "Authorization: token $GITHUB_TOKEN" "https://api.github.com/repos/${{ github.repository }}/git/refs/tags/$release_tag" | |
else | |
echo "Skipping pre-release: $release_id (newer or same date)" | |
fi | |
done |