Skip to content

Nova Deploy Workflow #26

Nova Deploy Workflow

Nova Deploy Workflow #26

name: Nova Deply Workflow (with SDK build)
on:
workflow_dispatch:
inputs:
TARGET_COMMIT:
description: "Target Commit Hash for the SDK"
required: false
default: "7d32ae0bb7e93552618923fb272a5c1cc67c2c60"
environment:
type: choice
description: "Select the environment to deploy to"
options:
- nova
required: false
default: nova
deployment:
type: boolean
description: "Deploy after build?"
required: false
default: false
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.IOTALEDGER_DOCKER_USERNAME }}
password: ${{ secrets.IOTALEDGER_DOCKER_PASSWORD }}
- name: Get the short commit hash
run: |
COMMIT_HASH=$(git rev-parse --short HEAD)
echo "VERSION=$COMMIT_HASH" >> $GITHUB_ENV
- name: Set up Environment Variable
run: echo "DEPLOY_ENV=${{ github.event.inputs.environment }}" >> $GITHUB_ENV
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: "16"
- name: Install System Dependencies
run: |
sudo apt-get update
sudo apt-get install -y python2 gcc-multilib g++-multilib build-essential libssl-dev rpm libsecret-1-dev software-properties-common apt-transport-https libudev-dev libusb-1.0-0-dev llvm-dev libclang-dev clang yarn
echo 'LIBCLANG_PATH=/usr/lib/llvm-14/lib' >> $GITHUB_ENV
echo 'DEBUG=electron-builder' >> $GITHUB_ENV
echo 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/snap:/root/.cargo/bin' >> $GITHUB_ENV
- name: Install Rust and wasm-bindgen-cli
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source $HOME/.cargo/env
cargo install wasm-bindgen-cli
rustup target add wasm32-unknown-unknown
- name: Global Git Configuration
run: git config --global --add safe.directory ${{ github.workspace }}
- name: Yarn Add crypto-browserify
run: yarn add crypto-browserify
- name: Setup SDK
run: |
git clone -b 2.0 https://github.com/iotaledger/iota-sdk
cd iota-sdk
echo "Checking out nova-sdk commit ${{ github.event.inputs.TARGET_COMMIT }}"
git checkout ${{ github.event.inputs.TARGET_COMMIT }}
- name: Build Node.js Bindings
run: |
cd iota-sdk/bindings/nodejs
echo "Renaming nodejs sdk (sdk-nova)"
sed -i.bak '2s/.*/ \"name\": \"@iota\/sdk-nova\",/' package.json
rm package.json.bak
echo "Building nodejs bindings"
source $HOME/.cargo/env
yarn
yarn build
- name: Build WASM Bindings
run: |
cd iota-sdk/bindings/wasm
echo "Renaming wasm sdk (sdk-wasm-nova)"
sed -i.bak '2s/.*/ \"name\": \"@iota\/sdk-wasm-nova\",/' package.json
rm package.json.bak
echo "Building wasm bindings"
source $HOME/.cargo/env
yarn
yarn build
- name: Build and push API Docker image
uses: docker/build-push-action@v2
with:
context: ./
file: ./api/Dockerfile
push: true
tags: iotaledger/explorer-api:${{ env.VERSION }}
no-cache: true
- name: Build and push Client Docker image
uses: docker/build-push-action@v2
with:
context: ./
file: ./client/Dockerfile
push: true
tags: iotaledger/explorer-client:${{ env.VERSION }}
no-cache: true
- name: Add SSH key
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.UPDATER_SSH_PRIVATE_KEY }}
- name: Deploy to Server
if: ${{ github.event.inputs.deployment }}
run: |
ssh -o StrictHostKeyChecking=no updater@${{ secrets.EXPLORER_NOVA_GATEWAY }} "${{ env.DEPLOY_ENV }} ${{ env.VERSION }}"