name: Build Release
on:
push:
branches: [ main ]
workflow_dispatch:
env:
EXE_NAME: quickraw
jobs:
Build_Win:
runs-on: windows-2019
steps:
- name: Check out repo
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Compile
run: cargo build -r --all-features --bin quickraw
- name: Upload traget bin
uses: actions/upload-artifact@v3
with:
name: win.build
path: target/release/${{ env.EXE_NAME }}.exe
Build_MacOS:
runs-on: macos-11
steps:
- name: Check out repo
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Compile
run: |
rustup target add aarch64-apple-darwin
cargo build -r --all-features --bin quickraw
cargo build -r --all-features --bin quickraw --target aarch64-apple-darwin
lipo -create -output ./${{ env.EXE_NAME }} ./target/release/${{ env.EXE_NAME }} ./target/aarch64-apple-darwin/release/${{ env.EXE_NAME }}
strip ./${{ env.EXE_NAME }}
zip -9 ${{ env.EXE_NAME }}.zip ./${{ env.EXE_NAME }}
- name: Codesign for macos build
env:
MACOS_CERT: ${{ secrets.MACOS_CERT }}
MACOS_CERT_PWD: ${{ secrets.MACOS_CERT_PWD }}
KEY_PWD: ${{ secrets.APPLEID_APP_PWD }}
APPLEID_APP_PWD: ${{ secrets.APPLEID_APP_PWD }}
WWDRTEAMID: ${{ secrets.WWDRTEAMID }}
APPLE_ID: ${{ secrets.APPLE_ID }}
if: ${{ env.APPLE_ID != '' }}
run: |
echo "$MACOS_CERT" | base64 -d > certificate.p12
security create-keychain -p "$KEY_PWD" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "$KEY_PWD" build.keychain
security import certificate.p12 -k build.keychain -P "$MACOS_CERT_PWD" -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEY_PWD" build.keychain
codesign --options runtime --force --deep --sign "$WWDRTEAMID" ./${{ env.EXE_NAME }}
zip -9 ${{ env.EXE_NAME }}.zip ./${{ env.EXE_NAME }}
xcrun notarytool store-credentials "OLG" --apple-id "$APPLE_ID" --team-id "$WWDRTEAMID" --password "$APPLEID_APP_PWD"
xcrun notarytool submit ${{ env.EXE_NAME }}.zip --keychain-profile "OLG" --wait
- name: Upload traget bin
uses: actions/upload-artifact@v3
with:
name: macos.build
path: ./${{ env.EXE_NAME }}.zip
Build_Linux:
runs-on: ubuntu-20.04
steps:
- name: Check out repo
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Compile
run: |
cargo build -r --all-features --bin quickraw
cd target/release
strip ./${{ env.EXE_NAME }}
zip -9 ${{ env.EXE_NAME }}.zip ./${{ env.EXE_NAME }}
- name: Upload traget bin
uses: actions/upload-artifact@v3
with:
name: linux.build
path: target/release/${{ env.EXE_NAME }}.zip
Release:
needs: [Build_Win, Build_MacOS, Build_Linux]
runs-on: ubuntu-20.04
permissions: write-all
steps:
- name: Check out repo
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Remove local nightly tag
run: git tag -d nightly || true
- name: Set variables
id: vars
run: |
echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
echo "::set-output name=tag::$(git describe --tags HEAD)"
- name: Download previous builds
uses: actions/download-artifact@v2
- name: Extract artifacts
run: |
7z x *.build
mv win.build/* ./${{ env.EXE_NAME }}-win.exe
mv macos.build/* ./${{ env.EXE_NAME }}-macos.zip
mv linux.build/* ./${{ env.EXE_NAME }}-linux.zip
- name: Get packages file name
id: names
run: |
echo "::set-output name=win_build::${{ env.EXE_NAME }}-win.exe"
echo "::set-output name=macos_build::${{ env.EXE_NAME }}-macos.zip"
echo "::set-output name=linux_build::${{ env.EXE_NAME }}-linux.zip"
- name: Remove nightly tag
uses: dev-drprasad/delete-tag-and-release@v0.2.0
with:
delete_release: true
tag_name: nightly
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create nightly prerelease
id: nightly_prerelease
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: nightly
release_name: Nightly builds - ${{ steps.vars.outputs.sha_short }}
prerelease: true
draft: false
body: Automated builds for nightly prerelease via Github Actions
- name: Upload linux nightly build
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.nightly_prerelease.outputs.upload_url }}
asset_path: ${{ steps.names.outputs.linux_build }}
asset_name: ${{ steps.names.outputs.linux_build }}
asset_content_type: application/zip
- name: Upload win nightly build
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.nightly_prerelease.outputs.upload_url }}
asset_path: ${{ steps.names.outputs.win_build }}
asset_name: ${{ steps.names.outputs.win_build }}
asset_content_type: application/octet-stream
- name: Upload macos nightly build
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.nightly_prerelease.outputs.upload_url }}
asset_path: ${{ steps.names.outputs.macos_build }}
asset_name: ${{ steps.names.outputs.macos_build }}
asset_content_type: application/zip