Build Docker And Deploy Seed #373
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: Build Docker And Deploy Seed | |
on: | |
push: | |
branches: | |
- main | |
workflow_dispatch: | |
release: | |
types: [ published ] | |
jobs: | |
build-rooch-docker: | |
name: build rooch docker | |
runs-on: self-hosted | |
# runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v1 | |
with: | |
submodules: recursive | |
- name: Docker meta | |
id: docker_meta | |
uses: crazy-max/ghaction-docker-meta@v1 | |
with: | |
# images: rooch/rooch,ghcr.io/rooch-network/rooch | |
images: ghcr.io/rooch-network/rooch | |
tag-sha: true # add git short SHA as Docker tag | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
with: | |
driver: docker | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v1 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GIT_PACKAGE_TOKEN }} | |
- name: Build and push | |
uses: docker/build-push-action@v2 | |
with: | |
context: . | |
file: docker/Dockerfile | |
push: true | |
tags: ${{ steps.docker_meta.outputs.tags }} | |
labels: ${{ steps.docker_meta.outputs.labels }} | |
- name: Deploy to GCP VM | |
env: | |
PRIVATE_KEY: ${{ secrets.GCP_SSH_PRIVATE_KEY }} | |
HOST: ${{ secrets.GCP_VM_HOST }} | |
USER: ${{ secrets.GCP_VM_USER }} | |
DEV_MNEMONIC_PHRASE: ${{secrets.DEV_MNEMONIC_PHRASE}} | |
IMAGE_TAG: ${{ steps.docker_meta.outputs.version }} | |
# run: | | |
# echo "$PRIVATE_KEY" > private_key.pem | |
# chmod 600 private_key.pem | |
# ssh -o StrictHostKeyChecking=no -i private_key.pem $USER@$HOST "echo "Start cleaning the data. with echo image_tag: $IMAGE_TAG" && docker run --rm -v /root:/root ghcr.io/rooch-network/rooch:$(echo $IMAGE_TAG) server clean -n dev && rm -rf ~/.rooch && docker run --rm -v /root:/root ghcr.io/rooch-network/rooch:$(echo $IMAGE_TAG) init -m "$(echo $DEV_MNEMONIC_PHRASE)" --skip-password" | |
run: | | |
echo "$PRIVATE_KEY" > private_key.pem | |
chmod 600 private_key.pem | |
ssh -o StrictHostKeyChecking=no -i private_key.pem $USER@$HOST bash -c "'sleep 30' && docker ps | grep rooch | awk '{print \$1}' | xargs -r docker stop && docker ps -a | grep rooch | awk '{print \$1}' | xargs -r docker rm -f && docker pull 'ghcr.io/rooch-network/rooch:${{ steps.docker_meta.outputs.version }}' && docker run -d -v /root:/root -p 50051:50051 'ghcr.io/rooch-network/rooch:${{ steps.docker_meta.outputs.version }}' server start -n dev --eth-rpc-url https://goerli.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161" | |
ssh -o StrictHostKeyChecking=no -i private_key.pem $USER@$HOST bash -c " | |
KEYWORD='rooch' | |
# get the container id | |
CONTAINER_ID=$(docker ps -a | grep $KEYWORD | awk '{print $1}') | |
if [ -z '$CONTAINER_ID' ]; then | |
echo 'No container found related to the keyword $KEYWORD' | |
exit 1 | |
fi | |
# get container status | |
STATUS=$(docker inspect --format '{{.State.Status}}' echo $CONTAINER_ID) | |
if [ '$STATUS' != 'running' ]; then | |
echo 'Container $CONTAINER_ID is not running,trying to clean data and restart' | |
echo 'Start cleaning the data. with echo image_tag: $IMAGE_TAG' | |
docker run --rm -v '/root:/root ghcr.io/rooch-network/rooch:$IMAGE_TAG' server clean -n dev | |
rm -rf ~/.rooch | |
docker run --rm -v '/root:/root ghcr.io/rooch-network/rooch:$IMAGE_TAG' init -m '$(echo $DEV_MNEMONIC_PHRASE)' --skip-password | |
docker start $CONTAINER_ID | |
if [ $? -eq 0 ]; then | |
echo 'Container $CONTAINER_ID Successfully restarted.' | |
echo 'Redeploy the examples' | |
for dir in /root/rooch/examples/*/; do | |
dir=${dir%*/} | |
name_addr=$(basename $dir) | |
echo $name_addr | |
docker --rm run -v '/root:/root ghcr.io/rooch-network/rooch:$IMAGE_TAG' move build -p '$dir' --named-addresses rooch_examples=default,$name_addr=default | |
docker --rm run -v '/root:/root ghcr.io/rooch-network/rooch:$IMAGE_TAG' move publish -p '$dir' --named-addresses rooch_examples=default,$name_addr=default | |
done | |
else | |
echo 'Container $CONTAINER_ID Startup failed, please check the reason.' | |
fi | |
else | |
echo 'Container $CONTAINER_ID is running' | |
fi | |
" |