Skip to content

test-network issue

test-network issue #14

Workflow file for this run

name: test-network issue
on:
# Specifying to only run on when a labeld pull request is merged to the master branch.
pull_request:
branches: [ "master" ]
# Adding this so that I can test my jobs and run workflows manually from the Actions tab in the repository (if use now it will skip over the workflow as there is no labeled PR)
workflow_dispatch:
# Defining my registry and image as variables for ease of use
env:
REGISTRY: ghcr.io
IMAGE_NAME: san-est/go-ethereum-devops
jobs:
deploy-hardhat:
# If statement to only run when the PR has a label.
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
id-token: write
# I checkout the repository
steps:
- uses: actions/checkout@v4
# Login to ghcr.io
- name: Login to registry
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# This pulls the image that we created in the docker-image.yml workflow from step.1
- name: Pull image
run: docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
# I run a container of the go-ethereum-devops image that is build with the first workflow so that I can deploy
# hardhat to it and copy over the files from the initialized hardhat project we have in the current github repo
# in the hardhat folder
- name: Running image container
run: |
echo "Workspace path: /workspace/hardhat"
docker run -d --name go-ethereum -p 8545:8545 -p 30303:30303 ghcr.io/san-est/go-ethereum-devops:latest \
--networkid 5777 --nodiscover --http --http.addr 0.0.0.0 --http.port 8545 \
--http.api personal,db,eth,net,web3 --allow-insecure-unlock --dev
# Here I copy over files from the current git repo over to the container
- name: Copy over hardhat files to running container
run: |
docker exec go-ethereum mkdir -p /workspace/hardhat
docker cp ${{ github.workspace }}/hardhat go-ethereum:/workspace/
docker exec go-ethereum ls /workspace/hardhat
docker exec go-ethereum ls -l /workspace/hardhat
#steps were added so i can troublshoot and see if the folder is mounted properly
# I isntall node.js and npm to the container
- name: Installing Node.js and npm
run: |
docker exec go-ethereum apk add --no-cache nodejs npm
# I install a local version of hardhat as I tried to do it with a remote installation but its not supported
- name: Install local version of hardhat
run: docker exec go-ethereum sh -c "cd /workspace/hardhat && npm install hardhat"
# I check if hardhat is installed
- name: Verify if Hardhat is installed
run: |
docker exec go-ethereum npx hardhat --version
# Deployment of sample contracts
- name: Deploy hardhat sample project
run: |
docker exec go-ethereum sh -c "cd /workspace/hardhat && npx hardhat ignition deploy ./ignition/modules/Lock.js --network devnet"
# Testing contracts as per step No.4 of the task
- name: Testing contracts
run: |
docker exec go-ethereum sh -c "cd /workspace/hardhat && npx hardhat test"
# The following steps build a new image with the installed local version of hardhat and its contracts applied
# and then uploads it to the ghcr.io registry
# the new image can be found here: ghcr.io/san-est/go-eth-hardhat:latest
- name: Build a new docker image
run: |
docker commit go-ethereum go-eth-hardhat:latest
docker tag go-eth-hardhat:latest ${{ env.REGISTRY }}/${{ github.repository_owner }}/go-eth-hardhat:latest
- name: Push new image to ghcr.io
run: docker push ${{ env.REGISTRY }}/${{ github.repository_owner }}/go-eth-hardhat:latest