diff --git a/contract/Makefile b/contract/Makefile index 8330e0a..9f40e1f 100644 --- a/contract/Makefile +++ b/contract/Makefile @@ -64,7 +64,7 @@ instance-q: SCRIPT=start-offer-up.js PERMIT=start-offer-up-permit.json start-contract: $(SCRIPT) $(PERMIT) install-bundles - scripts/propose-start-contract.sh + ./scripts/propose-start-contract.sh install-bundles: bundles/bundle-list ./scripts/install-bundles.sh diff --git a/contract/package.json b/contract/package.json index 5d4fa00..74d0f5e 100644 --- a/contract/package.json +++ b/contract/package.json @@ -5,12 +5,12 @@ "description": "Offer Up Contract", "type": "module", "scripts": { - "start:docker": "docker compose up -d", - "docker:logs": "docker compose logs --tail 200 -f", - "docker:bash": "docker compose exec agd bash", - "docker:make": "docker compose exec agd make -C /workspace/contract", + "start:docker": ". ./scripts/run-chain.sh", + "docker:logs": "docker logs --tail 200 -f ${AGDC_NAME:-agdc}", + "docker:bash": "docker exec -it ${AGDC_NAME:-agdc} bash", + "docker:make": "docker exec ${AGDC_NAME:-agdc} make -C ${WS_OFFER_UP:-/ws-offerup}/contract", "make:help": "make list", - "start": "./scripts/wait-for-chain.sh && yarn docker:make clean start-contract", + "start": "./scripts/wait-for-chain.sh && yarn docker:make clean mint100 start-contract", "build": "agoric run scripts/build-contract-deployer.js", "test": "ava --verbose", "lint": "tsc && eslint '**/*.js'", diff --git a/contract/scripts/build-proposal.sh b/contract/scripts/build-proposal.sh index 68bdcad..c2d7958 100755 --- a/contract/scripts/build-proposal.sh +++ b/contract/scripts/build-proposal.sh @@ -1,7 +1,7 @@ #!/bin/sh # NOTE: intended to run _inside_ the agd container -cd /workspace/contract +cd ${WS_OFFER_UP:-/ws-offerup}/contract mkdir -p bundles (agoric run ./scripts/build-contract-deployer.js )>/tmp/,run.log diff --git a/contract/scripts/install-bundles.sh b/contract/scripts/install-bundles.sh index 0aa4dd6..05dd683 100755 --- a/contract/scripts/install-bundles.sh +++ b/contract/scripts/install-bundles.sh @@ -5,7 +5,7 @@ set -ueo pipefail . /usr/src/upgrade-test-scripts/env_setup.sh -cd /workspace/contract +cd ${WS_OFFER_UP:-/ws-offerup}/contract # wait for blocks to start being produced # avoid collision with run-chain.sh who is also migrating keys diff --git a/contract/scripts/propose-start-contract.sh b/contract/scripts/propose-start-contract.sh index ba09396..de55144 100755 --- a/contract/scripts/propose-start-contract.sh +++ b/contract/scripts/propose-start-contract.sh @@ -1,7 +1,7 @@ #!/bin/bash set -xueo pipefail -cd /workspace/contract +cd ${WS_OFFER_UP:-/ws-offerup}/contract SCRIPT=start-offer-up.js PERMIT=start-offer-up-permit.json diff --git a/contract/scripts/run-chain.sh b/contract/scripts/run-chain.sh index 019cfa9..02bc547 100755 --- a/contract/scripts/run-chain.sh +++ b/contract/scripts/run-chain.sh @@ -1,14 +1,62 @@ #!/bin/bash +set -e # Exit on error -. /usr/src/upgrade-test-scripts/env_setup.sh +# Set default container name if not provided +: ${AGDC_NAME:="agdc"} -# Start the chain in the background -/usr/src/upgrade-test-scripts/start_agd.sh & +# Check if container already exists and is running +if [ "$(docker ps -q -f name=$AGDC_NAME)" ]; then + echo "Container '$AGDC_NAME' is already running. Please stop it first using 'docker stop $AGDC_NAME' if you want to start a new instance." + exit 1 +fi -# wait for blocks to start being produced -waitForBlock 1 +# Check if container exists but is stopped +if [ "$(docker ps -aq -f status=exited -f name=$AGDC_NAME)" ]; then + echo "Found stopped container '$AGDC_NAME'. Do you want to remove it before starting a new one? (y/N)" + read -r response + if [[ "$response" =~ ^[Yy]$ ]]; then + echo "Removing stopped container '$AGDC_NAME'..." + docker rm $AGDC_NAME + else + echo "Aborting to preserve existing container. You can set/update AGDC_NAME environment variable to avoid any potential conflicts." + exit 1 + fi +fi -make -C /workspace/contract mint100 +# Set paths only if environment variables are not already set +: ${DAPP_ED_CERT_PATH:="$(pwd)/../dapp-ed-cert"} +: ${DAPP_CHAIN_TIMER_PATH:="$(pwd)/../dapp-chain-timer"} +: ${SECOND_INVITE_PATH:="$(pwd)/../dapp-second-invite"} +: ${DAPP_OFFER_UP_PATH:="$(pwd)/../dapp-offer-up"} +: ${DAPP_AGORIC_BASICS_PATH:="$(pwd)/../dapp-agoric-basics"} -# bring back chain process to foreground -wait +# Set workspace names with default values +: ${WS_EDCERT:="/ws-edcert"} +: ${WS_CHAIN_TIMER:="/ws-chainTimer"} +: ${WS_SECOND_INVITE:="/ws-secondInvite"} +: ${WS_OFFER_UP:="/ws-offerup"} +: ${WS_AGORIC_BASICS:="/ws-agoricBasics"} + +# Start new container with the chain startup commands +# Define docker parameters +agd_image="ghcr.io/agoric/agoric-3-proposals:latest" +linux_only="--platform linux/amd64" +ports="-p 26656:26656 -p 26657:26657 -p 1317:1317" +env="-e DEST=1 -e DEBUG=\"SwingSet:ls,SwingSet:vat\"" +volumes="" +[ -d "$DAPP_ED_CERT_PATH" ] && volumes+=" -v $DAPP_ED_CERT_PATH:$WS_EDCERT" +[ -d "$DAPP_CHAIN_TIMER_PATH" ] && volumes+=" -v $DAPP_CHAIN_TIMER_PATH:$WS_CHAIN_TIMER" +[ -d "$SECOND_INVITE_PATH" ] && volumes+=" -v $SECOND_INVITE_PATH:$WS_SECOND_INVITE" +[ -d "$DAPP_OFFER_UP_PATH" ] && volumes+=" -v $DAPP_OFFER_UP_PATH:$WS_OFFER_UP" +[ -d "$DAPP_AGORIC_BASICS_PATH" ] && volumes+=" -v $DAPP_AGORIC_BASICS_PATH:$WS_AGORIC_BASICS" +start_agd="bash -c '. /usr/src/upgrade-test-scripts/env_setup.sh && \ + /usr/src/upgrade-test-scripts/start_agd.sh & \ + waitForBlock 1 && \ + wait'" + +docker run -d --name $AGDC_NAME $linux_only $ports $env $volumes $agd_image $start_agd || { + echo "Failed to start docker container. Please check if Docker is running and you have necessary permissions." + exit 1 +} + +echo "Container '$AGDC_NAME' started successfully." diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index ad10773..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -services: - agd: - # cf. https://github.com/Agoric/agoric-3-proposals - image: ghcr.io/agoric/agoric-3-proposals:latest - platform: linux/amd64 - ports: - - 26656:26656 - - 26657:26657 - - 1317:1317 - environment: - DEST: 1 - DEBUG: "SwingSet:ls,SwingSet:vat" - volumes: - - .:/workspace - entrypoint: /workspace/contract/scripts/run-chain.sh diff --git a/package.json b/package.json index bdca6fd..323540f 100644 --- a/package.json +++ b/package.json @@ -39,10 +39,11 @@ "@babel/highlight": "7.22.5" }, "scripts": { - "start:docker": "cd contract && docker compose up -d", - "docker:logs": "cd contract; docker compose logs --tail 200 -f", - "docker:bash": "cd contract; docker compose exec agd bash", - "docker:make": "cd contract; docker compose exec agd make -C /workspace/contract", + "start:docker": "./contract/scripts/run-chain.sh", + "stop:docker": "cd contract && docker stop ${AGDC_NAME:-agdc} && docker rm ${AGDC_NAME:-agdc}", + "docker:logs": "cd contract && docker logs -f --tail 200 ${AGDC_NAME:-agdc}", + "docker:bash": "cd contract && docker exec -it ${AGDC_NAME:-agdc} bash", + "docker:make": "cd contract && docker exec ${AGDC_NAME:-agdc} make -C ${WS_OFFER_UP:-/ws-offerup}/contract", "make:help": "make -C contract list", "start:contract": "cd contract && yarn start", "start:ui": "cd ui && yarn dev",