Merge pull request #167 from ipfs-shipyard/dependabot/github_actions/… #69
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: Release | |
on: | |
push: | |
branches: | |
- master | |
jobs: | |
release_and_publish: | |
name: Create release and publish | |
runs-on: macos-latest | |
timeout-minutes: 60 | |
strategy: | |
matrix: | |
golang: | |
- 1.18 | |
steps: | |
- name: Checkout changes | |
uses: actions/checkout@v3 | |
- name: Install Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: ${{ matrix.golang }} | |
- name: Set GOPATH in env | |
run: | | |
echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV | |
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH | |
mkdir -p $(go env GOPATH)/src/github.com/ipfs-shipyard | |
ln -s $PWD $(go env GOPATH)/src/github.com/ipfs-shipyard/gomobile-ipfs | |
shell: bash | |
- name: Set GOPATH in env | |
run: | | |
echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV | |
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH | |
mkdir -p $(go env GOPATH)/src/github.com/ipfs-shipyard | |
ln -s $PWD $(go env GOPATH)/src/github.com/ipfs-shipyard/gomobile-ipfs | |
shell: bash | |
- name: Restore Go mod cache | |
id: cache | |
uses: actions/cache@v3 | |
with: | |
path: ~/go/pkg/mod | |
key: ${{ runner.os }}-go-${{ matrix.golang }}-${{ hashFiles('go/go.sum') }} | |
- name: Install Go mod | |
if: steps.cache.outputs.cache-hit != 'true' | |
working-directory: go | |
run: GO111MODULE=on go mod vendor | |
# - name: Install Java | |
# uses: actions/setup-java@v1 | |
# with: | |
# java-version: 1.8 | |
# - name: Set TARGET_SDK in env | |
# run: | | |
# pip3 install -r utils/manifest_get/requirements.txt | |
# export GET_BIN=utils/manifest_get/manifest_get.py | |
# export GET_KEY=global.android.target_sdk_version | |
# echo "TARGET_SDK=$($GET_BIN $GET_KEY)" >> $GITHUB_ENV | |
# - name: Install Android SDK | |
# run: SDK_MAN=$HOME/Library/Android/sdk/tools/bin/sdkmanager; | |
# BTOOLS=$($SDK_MAN --list | grep "build-tools;$TARGET_SDK"); | |
# BTOOL=$(echo $BTOOLS | tail -n1 | cut -d'|' -f1 | tr -d ' '); | |
# PLATFORMS=$($SDK_MAN --list | grep "platforms;android-$TARGET_SDK"); | |
# PLATFORM=$(echo $PLATFORMS | tail -n1 | cut -d'|' -f1 | tr -d ' '); | |
# $SDK_MAN --install "$BTOOL" platform-tools "$PLATFORM" ndk-bundle | |
# > /dev/null | |
- name: Update Cocoapods | |
run: | | |
gem update cocoapods cocoapods-trunk | |
pod setup | |
# - name: Generate Android/iOS Bridge docs | |
# run: | | |
# gem install jazzy | |
# rm -rf docs/android docs/ios | |
# cd packages && make docgen.ios | |
- name: Create semantic-release config file | |
run: | | |
printf "module.exports = { | |
plugins: [ | |
'@semantic-release/commit-analyzer', | |
'@semantic-release/release-notes-generator', | |
'@semantic-release/github', | |
['@semantic-release/changelog', { | |
'changelogFile': 'CHANGELOG.md', | |
'changelogTitle': '# Global Changelog', | |
}], | |
['@semantic-release/git', { | |
'assets': ['CHANGELOG.md', 'docs'], | |
'message': 'docs: add docs and changelog generated by CI' | |
}], | |
], | |
};" > .releaserc.js | |
- name: Create github release and push docs | |
id: semantic | |
uses: cycjimmy/semantic-release-action@v2 | |
with: | |
extra_plugins: | | |
@semantic-release/changelog | |
@semantic-release/git | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
GIT_AUTHOR_NAME: GitHub Action | |
GIT_AUTHOR_EMAIL: [email protected] | |
GIT_COMMITTER_NAME: GitHub Action | |
GIT_COMMITTER_EMAIL: [email protected] | |
# - name: Create Android keystore | |
# if: steps.semantic.outputs.new_release_published == 'true' | |
# working-directory: android | |
# env: | |
# ANDROID_KEYSTORE: ${{ secrets.ANDROID_KEYSTORE }} | |
# run: echo "$ANDROID_KEYSTORE" | openssl base64 -A -d>gomobile-ipfs.pfx | |
- name: Setup iOS provisioning profile | |
if: steps.semantic.outputs.new_release_published == 'true' | |
env: | |
IOS_PROFILE: ${{ secrets.IOS_PROFILE }} | |
IOS_PROFILE_UUID: ${{ secrets.IOS_PROFILE_UUID }} | |
run: | | |
mkdir -p $HOME/Library/MobileDevice/Provisioning\ Profiles | |
cd $HOME/Library/MobileDevice/Provisioning\ Profiles | |
echo "$IOS_PROFILE" | openssl base64 -A -d \ | |
> "$IOS_PROFILE_UUID.mobileprovision" | |
- name: Setup macOS keychain | |
if: steps.semantic.outputs.new_release_published == 'true' | |
working-directory: /tmp | |
env: | |
IOS_KEYSTORE: ${{ secrets.IOS_KEYSTORE }} | |
IOS_KEYPASS: ${{ secrets.IOS_KEYPASS }} | |
IOS_CERTIFICATE: ${{ secrets.IOS_CERTIFICATE }} | |
KEYCHAIN_PASS: ${{ secrets.KEYCHAIN_PASS }} | |
run: | | |
security create-keychain -p "$KEYCHAIN_PASS" build.keychain | |
security default-keychain -s build.keychain | |
security unlock-keychain -p "$KEYCHAIN_PASS" build.keychain | |
security set-keychain-settings build.keychain | |
echo "$IOS_KEYSTORE" | openssl base64 -A -d > Gomobile-IPFS.p12 | |
echo "$IOS_CERTIFICATE" | openssl base64 -A -d > Gomobile-IPFS.cer | |
security import Gomobile-IPFS.p12 \ | |
-t priv -f pkcs12 -P "$IOS_KEYPASS" -T /usr/bin/codesign | |
security import Gomobile-IPFS.cer \ | |
-t cert -T /usr/bin/codesign | |
security set-key-partition-list \ | |
-S apple-tool:,apple:,codesign: \ | |
-s -k "$KEYCHAIN_PASS" build.keychain | |
- name: Build iOS artifacts | |
if: steps.semantic.outputs.new_release_published == 'true' | |
env: | |
GOMOBILE_IPFS_VERSION: ${{ steps.semantic.outputs.new_release_version }} # yamllint disable-line rule:line-length | |
run: make build_bridge.ios | |
- name: Add iOS artifacts to release | |
uses: softprops/action-gh-release@v1 | |
with: | |
tag_name: v${{ steps.semantic.outputs.new_release_version }} | |
# yamllint disable rule:line-length | |
files: | | |
build/ios/cocoapods/core/${{ steps.semantic.outputs.new_release_version }}/Gomobile-IPFS-Core-v${{ steps.semantic.outputs.new_release_version }}.pod.zip | |
build/ios/cocoapods/core/${{ steps.semantic.outputs.new_release_version }}/Gomobile-IPFS-Core.podspec | |
build/ios/cocoapods/bridge/${{ steps.semantic.outputs.new_release_version }}/Gomobile-IPFS-Bridge-v${{ steps.semantic.outputs.new_release_version }}.pod.zip | |
build/ios/cocoapods/bridge/${{ steps.semantic.outputs.new_release_version }}/Gomobile-IPFS-Bridge.podspec | |
# yamllint enable rule:line-length | |
- name: Publish iOS packages | |
if: steps.semantic.outputs.new_release_published == 'true' | |
env: | |
# ANDROID_KEYPASS: ${{ secrets.ANDROID_KEYPASS }} | |
COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }} | |
GOMOBILE_IPFS_VERSION: >- | |
${{ steps.semantic.outputs.new_release_version }} | |
run: make publish.ios |