Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add CI Support #1

Merged
merged 48 commits into from
Dec 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
5607b3c
first build test
ozcodes Nov 4, 2024
432ae47
install just
ozcodes Nov 4, 2024
7bb40c1
try using brew
ozcodes Nov 4, 2024
ebc034a
use just all
ozcodes Nov 4, 2024
b81731b
install ninja
ozcodes Nov 5, 2024
787da16
add cargo update
ozcodes Nov 5, 2024
83a06e9
print dir and upload artifact
ozcodes Nov 5, 2024
b924dd7
use relative path
ozcodes Nov 5, 2024
c4b327c
separated actions
ozcodes Nov 5, 2024
692e734
code sign llvm-objcopy
ozcodes Nov 6, 2024
e46bdb2
sign multiple files
ozcodes Nov 17, 2024
a034d34
fix secrets
ozcodes Nov 17, 2024
44622a4
add linux support
ozcodes Nov 17, 2024
a041388
install just
ozcodes Nov 17, 2024
b89ecac
run linux only for testing
ozcodes Nov 17, 2024
7e7b23a
try with sudo
ozcodes Nov 17, 2024
125037d
apt update
ozcodes Nov 17, 2024
19b7282
install just with dedicated action
ozcodes Nov 17, 2024
0c064bd
install ninja
ozcodes Nov 17, 2024
d45da73
fix if
ozcodes Nov 17, 2024
2800c8c
update cargo
ozcodes Nov 17, 2024
075bb4e
fix path
ozcodes Nov 17, 2024
4ae9ef6
fix loop and sign script path
ozcodes Nov 17, 2024
623984d
sign rust lib
ozcodes Nov 17, 2024
016c5fa
temporary remove sign.sh
ozcodes Nov 17, 2024
620e52d
restore sign.sh
ozcodes Nov 17, 2024
9a662ba
no quotation marks
ozcodes Nov 17, 2024
4975539
run both macos and linux
ozcodes Nov 17, 2024
6e81e4d
[skip ci] remove comment
ozcodes Nov 17, 2024
27611ed
create a release with artifacts
ozcodes Nov 18, 2024
b4a573f
disable binaries signing for macos temporary
ozcodes Nov 19, 2024
6a859cd
restore signing and remove zip file from root dir
ozcodes Nov 27, 2024
0a0cfcd
disable signing temporary
ozcodes Nov 28, 2024
f331c71
restore signing and add rust-lld
ozcodes Nov 28, 2024
bfd494a
don't sign rustc
ozcodes Dec 3, 2024
445ae4b
sign other rust bins
ozcodes Dec 3, 2024
40d8f2f
remove test branch
ozcodes Dec 3, 2024
603d947
fix rust-lld filename
ozcodes Dec 3, 2024
3e8246f
test build
ozcodes Dec 3, 2024
7e86db6
remove test branch
ozcodes Dec 3, 2024
e76ca45
sign only when running ci and disable signing for now
ozcodes Dec 4, 2024
b373727
use cargo 1.75
ozcodes Dec 4, 2024
bdfe783
add macos intel build
ozcodes Dec 4, 2024
bfd15df
add mac intel to release
ozcodes Dec 4, 2024
cf70013
add toolchain for v1.75
ozcodes Dec 4, 2024
213a8cf
cahnge default toolchain
ozcodes Dec 4, 2024
ddf9b24
use version 1.75 and fix default toolchain
ozcodes Dec 4, 2024
993c1ff
use macos-13 for intel
ozcodes Dec 5, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 126 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
name: Build Tools

on:
push:
branches:
- main
- oz/ci
tags: ['*']
workflow_dispatch:

jobs:
build-mac-arm:
runs-on: macos-latest
env:
TAG: ${{ github.ref_name }}
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
brew install just ninja
rustup install 1.75
rustup toolchain install 1.75
rustup default 1.75-aarch64-apple-darwin
- name: Clone
run: just clone
- name: Prepare
run: just prepare
- name: Build rust, cargo and newlib
run: just build-all
- name: Package
env:
APPLE_CODESIGN_IDENTITY: ${{ secrets.APPLE_CODESIGN_IDENTITY }}
APPLE_CRED: ${{ secrets.APPLE_CRED }}
APPLE_P12_BASE64: ${{ secrets.APPLE_P12_BASE64 }}
APPLE_P12_PASSWORD: ${{ secrets.APPLE_P12_PASSWORD }}
APPLE_TEAMID: ${{ secrets.APPLE_TEAMID }}
APPLE_TEMPKEYCHAIN_PASSWORD: ${{ secrets.APPLE_TEMPKEYCHAIN_PASSWORD }}
run: just package
- uses: actions/upload-artifact@v4
with:
name: platform-tools-osx-aarch64.tar.bz2
path: out/platform-tools-osx-aarch64.tar.bz2

build-mac-intel:
runs-on: macos-13
env:
TAG: ${{ github.ref_name }}
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
brew install just ninja
rustup install 1.75
rustup toolchain install 1.75
rustup default 1.75-x86_64-apple-darwin
- name: Clone
run: just clone
- name: Prepare
run: just prepare
- name: Build rust, cargo and newlib
run: just build-all
- name: Package
env:
APPLE_CODESIGN_IDENTITY: ${{ secrets.APPLE_CODESIGN_IDENTITY }}
APPLE_CRED: ${{ secrets.APPLE_CRED }}
APPLE_P12_BASE64: ${{ secrets.APPLE_P12_BASE64 }}
APPLE_P12_PASSWORD: ${{ secrets.APPLE_P12_PASSWORD }}
APPLE_TEAMID: ${{ secrets.APPLE_TEAMID }}
APPLE_TEMPKEYCHAIN_PASSWORD: ${{ secrets.APPLE_TEMPKEYCHAIN_PASSWORD }}
run: just package
- uses: actions/upload-artifact@v4
with:
name: platform-tools-osx-x86_64.tar.bz2
path: out/platform-tools-osx-x86_64.tar.bz2

build-linux:
runs-on: ubuntu-latest
env:
TAG: ${{ github.ref_name }}
steps:
- uses: actions/checkout@v4
- name: Install just
uses: taiki-e/install-action@just
- name: Install dependencies
run: |
sudo apt update; sudo apt install ninja-build
rustup install 1.75
rustup toolchain install 1.75
rustup default 1.75-x86_64-unknown-linux-gnu
- name: Clone
run: just clone
- name: Prepare
run: just prepare
- name: Build rust, cargo and newlib
run: just build-all
- name: Package
run: just package
- uses: actions/upload-artifact@v4
with:
name: platform-tools-linux-x86_64.tar.bz2
path: out/platform-tools-linux-x86_64.tar.bz2

release:
runs-on: ubuntu-latest
needs: [build-linux, build-mac-arm, build-mac-intel]
if: startsWith(github.event.ref, 'refs/tags/') # only on new tag creation
env:
TAG: ${{ github.ref_name }}
steps:
- uses: actions/checkout@v4
- name: Download artifact
uses: actions/download-artifact@v4
- name: Create a release
env:
GH_TOKEN: ${{ github.token }}
run: |
release_exist=$(gh release view $TAG 2>&1 || exit 0)
if [ "$release_exist" = "release not found" ]; then
gh release create $TAG platform-tools-osx-aarch64.tar.bz2/platform-tools-osx-aarch64.tar.bz2 --title "Release $TAG" --generate-notes --latest
gh release upload $TAG platform-tools-osx-x86_64.tar.bz2/platform-tools-osx-x86_64.tar.bz2
gh release upload $TAG platform-tools-linux-x86_64.tar.bz2/platform-tools-linux-x86_64.tar.bz2
else
gh release upload $TAG platform-tools-osx-aarch64.tar.bz2/platform-tools-osx-aarch64.tar.bz2
gh release upload $TAG platform-tools-osx-x86_64.tar.bz2/platform-tools-osx-x86_64.tar.bz2
gh release upload $TAG platform-tools-linux-x86_64.tar.bz2/platform-tools-linux-x86_64.tar.bz2
fi
4 changes: 2 additions & 2 deletions justfile
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,11 @@ build-cargo:
# AG: this fails for me with macport and libiconv
# AG: I have to disable libiconv, run this manually
# AG: and then re-enable it
cd {{ out_dir }}/cargo && env OPENSSL_STATIC=1 cargo build --release
cd {{ out_dir }}/cargo && env OPENSSL_STATIC=1 cargo +1.75 build --release

[linux]
build-cargo:
cd {{ out_dir }}/cargo && env OPENSSL_STATIC=1 OPENSSL_LIB_DIR=/usr/lib/x86_64-linux-gnu OPENSSL_INCLUDE_DIR=/usr/include/openssl cargo build --release
cd {{ out_dir }}/cargo && env OPENSSL_STATIC=1 OPENSSL_LIB_DIR=/usr/lib/x86_64-linux-gnu OPENSSL_INCLUDE_DIR=/usr/include/openssl cargo +1.75 build --release


[linux,macos]
Expand Down
20 changes: 20 additions & 0 deletions scripts/package.sh
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,26 @@ if [[ "${HOST_TRIPLE}" != "x86_64-pc-windows-msvc" ]] ; then
#cp -R rust/build/${HOST_TRIPLE}/llvm/lib/python* deploy/llvm/lib/
fi

# Sign macOS binaries - Disabled
# if [[ $HOST_TRIPLE == *apple-darwin* ]] && [[ ! -z "$APPLE_CODESIGN_IDENTITY" ]]; then
# LLVM_BIN="./deploy/llvm/bin"
# RUST_BIN="./deploy/rust/bin"
# RUST_LIB="./deploy/rust/lib"
# RUST_LIB_BIN="$RUST_LIB/rustlib/aarch64-apple-darwin/bin"

# ../scripts/sign.sh \
# "$LLVM_BIN/llvm-objdump" \
# "$LLVM_BIN/llvm-ar" \
# "$LLVM_BIN/llvm-readobj" \
# "$LLVM_BIN/llvm-objcopy" \
# "$RUST_BIN/rustdoc" \
# "$RUST_BIN/cargo" \
# "$RUST_LIB/librustc_driver-b4e91886a4c059a0.dylib" \
# "$RUST_LIB/libstd-6eff127b55c063c2.dylib" \
# "$RUST_LIB_BIN/rust-lld"
# # "$RUST_BIN/rustc" # Not signing 'rustc' duo to failing cargo build
# fi

# Check the Rust binaries
while IFS= read -r f
do
Expand Down
31 changes: 31 additions & 0 deletions scripts/sign.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/usr/bin/env bash
set -ex

FILES_TO_SIGN=$@

for FILE_PATH in $FILES_TO_SIGN; do
FILE_NAME=$(basename $FILE_PATH)
APPLE_TEMPKEYCHAIN_NAME=$(echo $FILE_NAME | tr -cd 'a-zA-Z')$(($RANDOM)) # use a random name

echo "File path: $FILE_PATH"
echo "File name: $FILE_NAME"
echo "Apple temp keychain name: $APPLE_TEMPKEYCHAIN_NAME"

# create keychain
printf "$APPLE_P12_BASE64" | base64 -d > dev.p12
security create-keychain -p "$APPLE_TEMPKEYCHAIN_PASSWORD" "$APPLE_TEMPKEYCHAIN_NAME"
security list-keychains -d user -s "$APPLE_TEMPKEYCHAIN_NAME" $(security list-keychains -d user | tr -d '"')
security set-keychain-settings "$APPLE_TEMPKEYCHAIN_NAME"
security import dev.p12 -k "$APPLE_TEMPKEYCHAIN_NAME" -P "$APPLE_P12_PASSWORD" -T "/usr/bin/codesign"
security set-key-partition-list -S apple-tool:,apple: -s -k "$APPLE_TEMPKEYCHAIN_PASSWORD" -D "$APPLE_CODESIGN_IDENTITY" -t private "$APPLE_TEMPKEYCHAIN_NAME"
security default-keychain -d user -s "$APPLE_TEMPKEYCHAIN_NAME"
security unlock-keychain -p "$APPLE_TEMPKEYCHAIN_PASSWORD" "$APPLE_TEMPKEYCHAIN_NAME"

# sign the binary
codesign -o runtime --force --timestamp -s "$APPLE_CODESIGN_IDENTITY" -v $FILE_PATH

# notarize binary
ditto -c -k $FILE_PATH $FILE_NAME.zip # notarization require zip files
xcrun notarytool store-credentials --apple-id [email protected] --password "$APPLE_CRED" --team-id "$APPLE_TEAMID" altool
xcrun notarytool submit $FILE_NAME.zip --keychain-profile altool --wait
done
Loading