diff --git a/.github/workflows/manual_npm_publish.yml b/.github/workflows/manual_npm_publish.yml index 6f90f02..15dca63 100644 --- a/.github/workflows/manual_npm_publish.yml +++ b/.github/workflows/manual_npm_publish.yml @@ -35,6 +35,6 @@ jobs: - name: Authenticate to git.vdb.to registry run: | npm config set -- '//git.vdb.to/api/packages/cerc-io/npm/:_authToken' "${{ secrets.GITEA_PUBLISH_TOKEN }}" - - name: lerna publish - run: | - lerna publish from-package --no-git-tag-version --yes + - name: npm publish + run: npm publish + diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..e238e86 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,37 @@ +name: Tests +on: + pull_request: + push: + branches: + - main + - release/** + +jobs: + sdk_tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Checkout laconicd + uses: actions/checkout@v3 + with: + path: "./laconicd/" + repository: cerc-io/laconicd + fetch-depth: 0 + ref: main + - name: Environment + run: ls -tlh && env + - name: build registry-cli container + run: docker build -t cerc/laconic-registry-cli:local-test --build-arg CERC_NPM_URL=https://git.vdb.to/api/packages/cerc-io/npm/ --build-arg CERC_NPM_AUTH_TOKEN="${{ secrets.GITEA_PUBLISH_TOKEN }}" . + - name: build containers scripts + working-directory: laconicd/tests/sdk_tests + run: ./build-laconicd-container.sh + - name: start laconicd container + working-directory: laconicd/tests/sdk_tests + run: docker compose up laconicd -d + + - name: Run registry-cli demo commands in registry-cli container + run : ls -tla + - name: stop containers + working-directory: laconicd/tests/sdk_tests + run: docker compose down + diff --git a/.gitignore b/.gitignore index 2b1f433..c36d7c2 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ dist/* out config.yml +*~ + +.idea \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3a8ee88 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,56 @@ +# Originally from: https://github.com/devcontainers/images/blob/main/src/javascript-node/.devcontainer/Dockerfile +# [Choice] Node.js version (use -bullseye variants on local arm64/Apple Silicon): 18, 16, 14, 18-bullseye, 16-bullseye, 14-bullseye, 18-buster, 16-buster, 14-buster +ARG VARIANT=16-bullseye +FROM node:${VARIANT} + +ARG USERNAME=node +ARG NPM_GLOBAL=/usr/local/share/npm-global + +# This container pulls npm packages from a local registry configured via these env vars +ARG CERC_NPM_URL +ARG CERC_NPM_AUTH_TOKEN + +# Add NPM global to PATH. +ENV PATH=${NPM_GLOBAL}/bin:${PATH} + +RUN \ + # Configure global npm install location, use group to adapt to UID/GID changes + if ! cat /etc/group | grep -e "^npm:" > /dev/null 2>&1; then groupadd -r npm; fi \ + && usermod -a -G npm ${USERNAME} \ + && umask 0002 \ + && mkdir -p ${NPM_GLOBAL} \ + && touch /usr/local/etc/npmrc \ + && chown ${USERNAME}:npm ${NPM_GLOBAL} /usr/local/etc/npmrc \ + && chmod g+s ${NPM_GLOBAL} \ + && npm config -g set prefix ${NPM_GLOBAL} \ + && su ${USERNAME} -c "npm config -g set prefix ${NPM_GLOBAL}" \ + # Install eslint + && su ${USERNAME} -c "umask 0002 && npm install -g eslint" \ + && npm cache clean --force > /dev/null 2>&1 + +# [Optional] Uncomment this section to install additional OS packages. +RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -y install --no-install-recommends jq + +# [Optional] Uncomment if you want to install an additional version of node using nvm +# ARG EXTRA_NODE_VERSION=10 +# RUN su node -c "source /usr/local/share/nvm/nvm.sh && nvm install ${EXTRA_NODE_VERSION}" + +# [Optional] Uncomment if you want to install more global node modules +# RUN su node -c "npm install -g " + +# Configure the local npm registry +RUN npm config set @lirewine:registry ${CERC_NPM_URL} \ + && npm config set @cerc-io:registry ${CERC_NPM_URL} \ + && npm config set -- ${CERC_NPM_URL}:_authToken ${CERC_NPM_AUTH_TOKEN} + +# TODO: the image at this point could be made a base image for several different CLI images +# that install different Node-based CLI commands + +# DEBUG, remove +RUN yarn info @cerc-io/laconic-registry-cli + +# Globally install the cli package +RUN yarn global add @cerc-io/laconic-registry-cli + +ENTRYPOINT ["laconic"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..7469649 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,29 @@ +services: + laconicd: + restart: unless-stopped + image: cerc-io/laconicd:local-test + command: ["sh", "/docker-entrypoint-scripts.d/create-fixturenet.sh"] + volumes: + - laconicd/init.sh:/docker-entrypoint-scripts.d/create-fixturenet.sh + healthcheck: + test: ["CMD", "curl", "-v", "http://127.0.0.1:6060"] + interval: 1s + timeout: 5s + retries: 30 + ports: + - "6060" + - "26657" + - "26656" + - "9473" + - "8545" + - "8546" + - "9090" + - "9091" + - "1317" + + cli-test-runner: + image: cerc/laconic-registry-cli:local-test + depends_on: + laconicd: + condition: service_healthy + command: tail -F /dev/null diff --git a/lerna.json b/lerna.json new file mode 100644 index 0000000..1cbb426 --- /dev/null +++ b/lerna.json @@ -0,0 +1,5 @@ +{ + "version": "2.9.0", + "useWorkspaces": true, + "npmClient": "yarn" +} diff --git a/yarn.lock b/yarn.lock index 5066ad9..1098c7b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@cerc-io/laconic-sdk@0.1.4": - version "0.1.4" - resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Flaconic-sdk/-/0.1.4/laconic-sdk-0.1.4.tgz#06159cb3c9c48325b53eba9bd642cf63420351d9" - integrity sha512-IsXUnz5S14zF+VPWydKy52PkCdyFqRJiMs9FCv8YEJVtUasXkU9xJLBmGaz7Nuo2MyNyKy2NHM7LoB1A75ZHAQ== +"@cerc-io/laconic-sdk@0.1.6": + version "0.1.6" + resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Flaconic-sdk/-/0.1.6/laconic-sdk-0.1.6.tgz#2c4e678800467e7c92c3198fe332401d2ab395ce" + integrity sha512-o7G/QpfmNTFkmKQEuCf8mdZc8AePRMQ9T5kLqW30aHi9vzwA5rI7I6dXmPLzGYwdMWUdeeQcePOQhwD2qccryw== dependencies: "@cosmjs/amino" "^0.28.1" "@cosmjs/crypto" "^0.28.1" @@ -25,7 +25,6 @@ ethers "^5.6.2" evmosjs "^0.2.5" graphql.js "^0.6.8" - is-url "^1.2.4" js-sha256 "^0.9.0" js-yaml "^3.14.1" jsonschema "^1.4.0" @@ -1131,11 +1130,6 @@ is-hex-prefixed@1.0.0: resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= -is-url@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" - integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== - js-sha256@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966"