Skip to content

Merge pull request #167 from ipfs-shipyard/dependabot/github_actions/… #69

Merge pull request #167 from ipfs-shipyard/dependabot/github_actions/…

Merge pull request #167 from ipfs-shipyard/dependabot/github_actions/… #69

Workflow file for this run

---
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