-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci: publish to cloudsmith and cocoapods
- Loading branch information
1 parent
1ecd35b
commit 4ed873e
Showing
3 changed files
with
182 additions
and
109 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,20 +1,26 @@ | ||
name: Publish Package | ||
|
||
on: | ||
push: | ||
workflow_dispatch: | ||
inputs: | ||
beta: | ||
description: Publish a beta version (npmjs) | ||
default: false | ||
required: true | ||
type: boolean | ||
android: | ||
description: Publish an android version (maven) | ||
default: true | ||
required: true | ||
type: boolean | ||
rust: | ||
description: Publish a rust version (crates.io) | ||
default: true | ||
required: true | ||
type: boolean | ||
android: | ||
description: Publish an android version (maven) | ||
swift: | ||
description: Publish a swift version (cocoapods) | ||
default: true | ||
required: true | ||
type: boolean | ||
|
@@ -25,126 +31,193 @@ on: | |
type: boolean | ||
|
||
jobs: | ||
build-wasm: | ||
environment: npm-publish | ||
if: ${{ inputs.wasm }} | ||
runs-on: ubuntu-latest | ||
# build-wasm: | ||
# environment: npm-publish | ||
# if: ${{ inputs.wasm }} | ||
# runs-on: ubuntu-latest | ||
|
||
# steps: | ||
# - name: Checkout repo | ||
# uses: actions/checkout@v4 | ||
|
||
# - name: Checkout action | ||
# uses: actions/checkout@v4 | ||
# with: | ||
# repository: Devolutions/actions | ||
# path: actions | ||
# ref: v2 | ||
# token: ${{ secrets.DEVOLUTIONSBOT_WRITE_TOKEN }} | ||
|
||
# - name: Setup wasm | ||
# run: | | ||
# curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh | ||
# wasm-pack --version | ||
|
||
# - name: Build | ||
# run: sh build.sh | ||
# working-directory: wrappers/wasm | ||
|
||
# - name: Upload artifact | ||
# uses: actions/upload-artifact@v4 | ||
# with: | ||
# name: wasm | ||
# path: dist/bundler | ||
|
||
# - name: Setup .npmrc config file | ||
# uses: ./actions/npmrc-setup | ||
# with: | ||
# github_token: ${{ secrets.DEVOLUTIONSBOT_WRITE_TOKEN }} | ||
|
||
# - name: Publish | ||
# run: npm publish --tag ${{ inputs.beta && 'beta' || 'latest' }} | ||
# working-directory: dist/bundler | ||
|
||
# - run: rm $HOME/.npmrc | ||
|
||
# - name: Configure NPM | ||
# run: npm config set "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" | ||
|
||
# - name: Publish | ||
# run: npm publish --tag ${{ inputs.beta && 'beta' || 'latest' }} | ||
# working-directory: dist/bundler | ||
|
||
# - name: Update Artifactory Cache | ||
# run: gh workflow run update-artifactory-cache.yml --repo Devolutions/scheduled-tasks --field package_name="slauth" | ||
# env: | ||
# GH_TOKEN: ${{ secrets.DEVOLUTIONSBOT_WRITE_TOKEN }} | ||
|
||
# build-android: | ||
# environment: cloudsmith-publish | ||
# if: ${{ inputs.android }} | ||
# runs-on: ubuntu-latest | ||
|
||
# steps: | ||
# - name: Checkout repo | ||
# uses: actions/checkout@v4 | ||
|
||
# - name: Set up JDK 1.8 | ||
# uses: actions/setup-java@v4 | ||
# with: | ||
# java-version: 8 | ||
# distribution: adopt | ||
|
||
# - name: Setup Android | ||
# run: | | ||
# wget https://dl.google.com/android/repository/android-ndk-r23b-linux.zip | ||
# unzip android-ndk-r23b-linux.zip | ||
# export ANDROID_NDK_HOME=$GITHUB_WORKSPACE/android-ndk-r23b | ||
# echo "ANDROID_NDK_HOME=$ANDROID_NDK_HOME" >> $GITHUB_ENV | ||
# echo "$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH | ||
# echo "$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android" >> $GITHUB_ENV::LIBRARY_PATH | ||
# echo "$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android" >> $GITHUB_ENV::LD_LIBRARY_PATH | ||
# rustup target add aarch64-linux-android | ||
# rustup target add x86_64-linux-android | ||
# rustup target add x86_64-unknown-linux-gnu | ||
|
||
# - name: Build | ||
# run: sh wrappers/android/build.sh | ||
|
||
# - name: Create local.properties | ||
# run: echo "sdk.dir=$ANDROID_HOME" > local.properties | ||
|
||
# - name: Allow gradlew to run | ||
# run: chmod +x gradlew | ||
|
||
# - name: Package .aar | ||
# run: ./gradlew clean assembleRelease | ||
# env: | ||
# CLOUDSMITH_API_KEY: ${{ secrets.CLOUDSMITH_API_KEY }} | ||
# CLOUDSMITH_USERNAME: bot-devolutions | ||
|
||
# - run: ./gradlew publish | ||
# env: | ||
# CLOUDSMITH_API_KEY: ${{ secrets.CLOUDSMITH_API_KEY }} | ||
# CLOUDSMITH_USERNAME: bot-devolutions | ||
|
||
# - name: Upload .aar artifact | ||
# uses: actions/upload-artifact@v4 | ||
# with: | ||
# name: android | ||
# path: wrappers/android/build/outputs/aar/slauth-release.aar | ||
|
||
# build-rust: | ||
# environment: crates-publish | ||
# if: ${{ inputs.rust }} | ||
# runs-on: ubuntu-latest | ||
|
||
# steps: | ||
# - uses: actions/checkout@v4 | ||
|
||
# - name: Publish | ||
# run: cargo publish | ||
# env: | ||
# CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} | ||
|
||
build-swift: | ||
environment: cocoapods-publish | ||
runs-on: macos-latest | ||
|
||
steps: | ||
- name: Checkout repo | ||
uses: actions/checkout@v4 | ||
|
||
- name: Checkout action | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: Devolutions/actions | ||
path: actions | ||
ref: v2 | ||
token: ${{ secrets.DEVOLUTIONSBOT_WRITE_TOKEN }} | ||
|
||
- name: Setup wasm | ||
- name: Setup rust | ||
run: | | ||
curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh | ||
wasm-pack --version | ||
- name: Build | ||
run: sh build.sh | ||
working-directory: wrappers/wasm | ||
|
||
- name: Upload artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: wasm | ||
path: dist/bundler | ||
|
||
- name: Setup .npmrc config file | ||
uses: ./actions/npmrc-setup | ||
with: | ||
github_token: ${{ secrets.DEVOLUTIONSBOT_WRITE_TOKEN }} | ||
|
||
- name: Publish | ||
run: npm publish --tag ${{ inputs.beta && 'beta' || 'latest' }} | ||
working-directory: dist/bundler | ||
|
||
- run: rm $HOME/.npmrc | ||
rustup target add aarch64-apple-ios | ||
rustup target add x86_64-apple-ios | ||
cargo install cargo-lipo | ||
- name: Configure NPM | ||
run: npm config set "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" | ||
- name: Build iOS libraries | ||
run: sh wrappers/swift/build.sh | ||
|
||
- name: Publish | ||
run: npm publish --tag ${{ inputs.beta && 'beta' || 'latest' }} | ||
working-directory: dist/bundler | ||
|
||
- name: Update Artifactory Cache | ||
run: gh workflow run update-artifactory-cache.yml --repo Devolutions/scheduled-tasks --field package_name="slauth" | ||
env: | ||
GH_TOKEN: ${{ secrets.DEVOLUTIONSBOT_WRITE_TOKEN }} | ||
|
||
build-android: | ||
environment: cloudsmith-publish | ||
if: ${{ inputs.android }} | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout repo | ||
uses: actions/checkout@v4 | ||
- name: Setup CocoaPods Trunk Token | ||
run: | | ||
echo -e "machine trunk.cocoapods.org\n login [email protected]\n password ${{ secrets.COCOAPODS_TRUNK_TOKEN }}" > ~/.netrc | ||
chmod 0600 ~/.netrc | ||
- name: Set up JDK 1.8 | ||
uses: actions/setup-java@v4 | ||
with: | ||
java-version: 8 | ||
distribution: adopt | ||
- run: cat ~/.netrc | ||
|
||
- name: Setup Android | ||
- name: Verify CocoaPods Trunk Token | ||
run: | | ||
wget https://dl.google.com/android/repository/android-ndk-r23b-linux.zip | ||
unzip android-ndk-r23b-linux.zip | ||
export ANDROID_NDK_HOME=$GITHUB_WORKSPACE/android-ndk-r23b | ||
echo "ANDROID_NDK_HOME=$ANDROID_NDK_HOME" >> $GITHUB_ENV | ||
echo "$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH | ||
echo "$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android" >> $GITHUB_ENV::LIBRARY_PATH | ||
echo "$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android" >> $GITHUB_ENV::LD_LIBRARY_PATH | ||
rustup target add aarch64-linux-android | ||
rustup target add x86_64-linux-android | ||
rustup target add x86_64-unknown-linux-gnu | ||
- name: Build | ||
pod trunk me || echo "Invalid token" | ||
- name: Setup version | ||
id: version | ||
run: | | ||
cd wrappers/android | ||
sh build.sh | ||
VERSION=$(grep -E "^\s*s\.version\s*=\s*['\"][0-9]+\.[0-9]+\.[0-9]+['\"]" Slauth.podspec | awk -F"[\"\']" '{print $2}') | ||
echo "version=$VERSION" >> $GITHUB_OUTPUT | ||
- name: Create local.properties | ||
- name: Push to a new branch | ||
run: | | ||
echo "sdk.dir=$ANDROID_HOME" > local.properties | ||
git checkout --orphan release/cocoapods-v${{ steps.version.outputs.version }} | ||
git rm -rf . | ||
git checkout devops/cloudsmith-cocoapods -- LICENSE wrappers/swift/classes slauth.h Slauth.podspec | ||
- run: chmod +x gradlew | ||
git add LICENSE wrappers/swift/classes/** slauth.h Slauth.podspec | ||
find target/universal/release -name "*.a" -exec git add {} \; | ||
find target/x86_64-apple-ios/release -name "*.a" -exec git add {} \; | ||
find target/aarch64-apple-ios/release -name "*.a" -exec git add {} \; | ||
- name: Package .aar | ||
run: ./gradlew clean assembleRelease | ||
env: | ||
CLOUDSMITH_API_KEY: ${{ secrets.CLOUDSMITH_API_KEY }} | ||
CLOUDSMITH_USERNAME: bot-devolutions | ||
git commit -m "Set up CocoaPods release branch" | ||
git push origin release/cocoapods-v${{ steps.version.outputs.version }} | ||
- run: ./gradlew publish | ||
git tag '${{ steps.version.outputs.version }}' | ||
git push --tags | ||
env: | ||
CLOUDSMITH_API_KEY: ${{ secrets.CLOUDSMITH_API_KEY }} | ||
CLOUDSMITH_USERNAME: bot-devolutions | ||
GITHUB_TOKEN: ${{ github.token }} | ||
|
||
- name: Upload .aar artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: android | ||
path: wrappers/android/build/outputs/aar/slauth-release.aar | ||
# - name: Update Podspec | ||
# run: sed -i '' "s|:branch => '.*'|:branch => 'release/cocoapods-v${{ steps.version.outputs.branch_name }}'|" Slauth.podspec | ||
|
||
build-rust: | ||
environment: crates-publish | ||
if: ${{ inputs.rust }} | ||
runs-on: ubuntu-latest | ||
- name: Validate podspec | ||
run: pod spec lint --skip-import-validation --use-libraries --allow-warnings | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
# - name: Publish to CocoaPods | ||
# run: pod trunk push Slauth.podspec --skip-import-validation --use-libraries --allow-warnings | ||
# env: | ||
# COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }} | ||
|
||
- name: Publish | ||
run: cargo publish | ||
env: | ||
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} | ||
- name: Delete branch | ||
run: | | ||
git switch master | ||
git branch -D release/cocoapods-v${{ steps.version.outputs.version }} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,19 @@ | ||
Pod::Spec.new do |s| | ||
s.name = 'Slauth' | ||
s.version = '0.7.6' | ||
s.summary = 'A Swift wrapper aroud Slauth Rust crate' | ||
s.summary = 'A Swift wrapper around Slauth Rust crate' | ||
s.description = <<-DESC | ||
TODO: Add long description of the pod here. | ||
DESC | ||
|
||
s.homepage = 'https://github.com/Devolutions/Slauth.git' | ||
s.license = { :type => 'MIT', :file => './LICENSE' } | ||
s.author = { 'Devolutions' => '[email protected]' } | ||
s.source = { :git => 'https://github.com/Devolutions/Slauth.git', :tag => s.version.to_s } | ||
s.source = { :git => 'https://github.com/Devolutions/Slauth.git', :tag => '0.0.0' } | ||
|
||
s.swift_version = '5.0' | ||
s.ios.deployment_target = '11.0' | ||
s.ios.deployment_target = '17.0' | ||
|
||
s.source_files = 'wrappers/swift/classes/**/*', 'slauth.h' | ||
s.vendored_libraries = 'target/universal/release/*.a', 'target/x86_64-apple-io/release/*.a', 'target/aarch64-apple-ios/release/*.a' | ||
s.vendored_libraries = 'target/universal/release/*.a', 'target/x86_64-apple-io/release/*.a', 'target/aarch64-apple-ios/release/*.a' | ||
end |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
cargo lipo --release | ||
mv target/universal/release/libslauth.a target/universal/release/libslauth_universal.a | ||
mv target/x86_64-apple-ios/release/libslauth.a target/x86_64-apple-ios/release/libslauth_x86.a | ||
mv target/aarch64-apple-ios/release/libslauth.a target/aarch64-apple-ios/release/libslauth_arm64.a | ||
mv target/aarch64-apple-ios/release/libslauth.a target/aarch64-apple-ios/release/libslauth_arm64.a |