-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Creates an app container for Cuiloa, for use in deployments of Penumbra preview (and soon testnet). Includes CI pipeline to build container automatically on every change to main.
- Loading branch information
Showing
6 changed files
with
3,091 additions
and
1 deletion.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# ignore everything by default | ||
** | ||
# allow JS files | ||
!*.ts | ||
!*.js | ||
!*.json | ||
!pnpm-lock.yaml | ||
|
||
# nextjs files | ||
!prisma/ | ||
!public/ | ||
!src/ |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
--- | ||
name: Build container image | ||
on: | ||
workflow_call: | ||
workflow_dispatch: | ||
# Support triggering builds from penumbra-zone/penumbra CI. | ||
repository_dispatch: | ||
push: | ||
branches: | ||
- main | ||
tags: | ||
- '**' | ||
jobs: | ||
galileo: | ||
runs-on: buildjet-16vcpu-ubuntu-2004 | ||
permissions: | ||
contents: read | ||
packages: write | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v3 | ||
|
||
- name: Log in to the Docker Hub container registry (for pulls) | ||
uses: docker/login-action@v2 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
|
||
- name: Log in to the GitHub container registry (for pushes) | ||
uses: docker/login-action@v2 | ||
with: | ||
registry: ghcr.io | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Extract metadata (tags, labels) for Docker | ||
id: meta | ||
uses: docker/metadata-action@v4 | ||
with: | ||
images: ghcr.io/penumbra-zone/cuiloa | ||
|
||
- name: Build and push Docker image | ||
uses: docker/build-push-action@v3 | ||
with: | ||
context: . | ||
platforms: linux/amd64 | ||
file: Containerfile | ||
push: true | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
FROM docker.io/library/node:20-alpine | ||
LABEL maintainer="[email protected]" | ||
ARG PNPM_VERSION="8.10.1" | ||
|
||
# Create docroot as normal user. | ||
RUN mkdir -p /home/node/app/ && chown -R node:node /home/node/app | ||
WORKDIR /home/node/app | ||
RUN npm install -g pnpm@${PNPM_VERSION} | ||
COPY --chown=node:node . . | ||
USER node | ||
|
||
# Install project. | ||
RUN pnpm install | ||
RUN pnpm build | ||
|
||
# Run. | ||
EXPOSE 3000 | ||
CMD [ "pnpm", "start" ] |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
/* | ||
This file defines the database schema for the PostgresQL ("psql") event sink | ||
implementation in CometBFT. The operator must create a database and install | ||
this schema before using the database to index events. | ||
*/ | ||
|
||
-- The blocks table records metadata about each block. | ||
-- The block record does not include its events or transactions (see tx_results). | ||
CREATE TABLE blocks ( | ||
rowid BIGSERIAL PRIMARY KEY, | ||
|
||
height BIGINT NOT NULL, | ||
chain_id VARCHAR NOT NULL, | ||
|
||
-- When this block header was logged into the sink, in UTC. | ||
created_at TIMESTAMPTZ NOT NULL, | ||
|
||
UNIQUE (height, chain_id) | ||
); | ||
|
||
-- Index blocks by height and chain, since we need to resolve block IDs when | ||
-- indexing transaction records and transaction events. | ||
CREATE INDEX idx_blocks_height_chain ON blocks(height, chain_id); | ||
|
||
-- The tx_results table records metadata about transaction results. Note that | ||
-- the events from a transaction are stored separately. | ||
CREATE TABLE tx_results ( | ||
rowid BIGSERIAL PRIMARY KEY, | ||
|
||
-- The block to which this transaction belongs. | ||
block_id BIGINT NOT NULL REFERENCES blocks(rowid), | ||
-- The sequential index of the transaction within the block. | ||
index INTEGER NOT NULL, | ||
-- When this result record was logged into the sink, in UTC. | ||
created_at TIMESTAMPTZ NOT NULL, | ||
-- The hex-encoded hash of the transaction. | ||
tx_hash VARCHAR NOT NULL, | ||
-- The protobuf wire encoding of the TxResult message. | ||
tx_result BYTEA NOT NULL, | ||
|
||
UNIQUE (block_id, index) | ||
); | ||
|
||
-- The events table records events. All events (both block and transaction) are | ||
-- associated with a block ID; transaction events also have a transaction ID. | ||
CREATE TABLE events ( | ||
rowid BIGSERIAL PRIMARY KEY, | ||
|
||
-- The block and transaction this event belongs to. | ||
-- If tx_id is NULL, this is a block event. | ||
block_id BIGINT NOT NULL REFERENCES blocks(rowid), | ||
tx_id BIGINT NULL REFERENCES tx_results(rowid), | ||
|
||
-- The application-defined type label for the event. | ||
type VARCHAR NOT NULL | ||
); | ||
|
||
-- The attributes table records event attributes. | ||
CREATE TABLE attributes ( | ||
event_id BIGINT NOT NULL REFERENCES events(rowid), | ||
key VARCHAR NOT NULL, -- bare key | ||
composite_key VARCHAR NOT NULL, -- composed type.key | ||
value VARCHAR NULL, | ||
|
||
UNIQUE (event_id, key) | ||
); | ||
|
||
-- A joined view of events and their attributes. Events that do not have any | ||
-- attributes are represented as a single row with empty key and value fields. | ||
CREATE VIEW event_attributes AS | ||
SELECT block_id, tx_id, type, key, composite_key, value | ||
FROM events LEFT JOIN attributes ON (events.rowid = attributes.event_id); | ||
|
||
-- A joined view of all block events (those having tx_id NULL). | ||
CREATE VIEW block_events AS | ||
SELECT blocks.rowid as block_id, height, chain_id, type, key, composite_key, value | ||
FROM blocks JOIN event_attributes ON (blocks.rowid = event_attributes.block_id) | ||
WHERE event_attributes.tx_id IS NULL; | ||
|
||
-- A joined view of all transaction events. | ||
CREATE VIEW tx_events AS | ||
SELECT height, index, chain_id, type, key, composite_key, value, tx_results.created_at | ||
FROM blocks JOIN tx_results ON (blocks.rowid = tx_results.block_id) | ||
JOIN event_attributes ON (tx_results.rowid = event_attributes.tx_id) | ||
WHERE event_attributes.tx_id IS NOT NULL; |
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
Oops, something went wrong.