-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Jc/add docker build workflow #191
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
name: "[Nethermind] Taiko Preconf AVS - Docker build and push" | ||
|
||
on: | ||
workflow_dispatch: | ||
push: | ||
branches: [master] | ||
tags: | ||
- "taiko-preconf-avs-v*" | ||
paths: | ||
- "Node/**" | ||
- "p2pNode/p2pNetwork/**" | ||
|
||
env: | ||
DOCKER_REGISTRY: docker.io | ||
DOCKER_USERNAME: nethswitchboard | ||
DOCKER_REPOSITORY_DEV: taiko-preconf-avs-dev | ||
|
||
jobs: | ||
build: | ||
name: Build and push docker image | ||
runs-on: ubuntu-latest | ||
if: github.repository == 'NethermindEth/Taiko-Preconf-AVS' | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set up QEMU | ||
uses: docker/setup-qemu-action@v3 | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
|
||
- uses: docker/login-action@v3 | ||
with: | ||
registry: ${{ env.DOCKER_REGISTRY }} | ||
username: ${{ env.DOCKER_USERNAME }} | ||
password: ${{ secrets.DOCKER_PASSWORD }} | ||
|
||
- name: Docker meta | ||
id: meta | ||
uses: docker/metadata-action@v5 | ||
with: | ||
images: ${{ env.DOCKER_REGISTRY }}/${{ env.DOCKER_REPOSITORY_DEV }} | ||
tags: | | ||
type=raw,value=latest | ||
type=ref,event=branch | ||
type=ref,event=pr | ||
type=ref,event=tag | ||
type=sha | ||
|
||
- name: Build and push by digest | ||
id: build | ||
uses: docker/build-push-action@v5 | ||
with: | ||
platforms: linux/amd64,linux/arm64 | ||
context: . | ||
file: Dockerfile | ||
push: true | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} | ||
|
||
- name: Summary | ||
run: | | ||
echo "## Docker build completed :green_circle:" >> $GITHUB_STEP_SUMMARY | ||
echo "### Tags" >> $GITHUB_STEP_SUMMARY | ||
echo "${{ steps.meta.outputs.tags }}" | while IFS= read -r TAG; do | ||
echo "- $TAG" >> $GITHUB_STEP_SUMMARY | ||
done | ||
echo "### Notes" >> $GITHUB_STEP_SUMMARY |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
name: "[Nethermind] Taiko Preconf AVS Protocol- Docker build and push" | ||
|
||
on: | ||
workflow_dispatch: | ||
push: | ||
branches: [master] | ||
tags: | ||
- "taiko-preconf-avs-protocol-v*" | ||
paths: | ||
- "SmartContracts/**" | ||
|
||
env: | ||
DOCKER_REGISTRY: docker.io | ||
DOCKER_USERNAME: nethswitchboard | ||
DOCKER_REPOSITORY_DEV: taiko-preconf-avs-protocol-dev | ||
|
||
jobs: | ||
build: | ||
name: Build and push docker image | ||
runs-on: ubuntu-latest | ||
if: github.repository == 'NethermindEth/Taiko-Preconf-AVS' | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set up QEMU | ||
uses: docker/setup-qemu-action@v3 | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
|
||
- uses: docker/login-action@v3 | ||
with: | ||
registry: ${{ env.DOCKER_REGISTRY }} | ||
username: ${{ env.DOCKER_USERNAME }} | ||
password: ${{ secrets.DOCKER_PASSWORD }} | ||
|
||
- name: Docker meta | ||
id: meta | ||
uses: docker/metadata-action@v5 | ||
with: | ||
images: ${{ env.DOCKER_REGISTRY }}/${{ env.DOCKER_REPOSITORY_DEV }} | ||
tags: | | ||
type=raw,value=latest | ||
type=ref,event=branch | ||
type=ref,event=pr | ||
type=ref,event=tag | ||
type=sha | ||
|
||
- name: Build and push by digest | ||
id: build | ||
uses: docker/build-push-action@v5 | ||
with: | ||
platforms: linux/amd64,linux/arm64 | ||
context: ./SmartContracts | ||
file: ./SmartContracts/Dockerfile | ||
push: true | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} | ||
|
||
- name: Summary | ||
run: | | ||
echo "## Docker build completed :green_circle:" >> $GITHUB_STEP_SUMMARY | ||
echo "### Tags" >> $GITHUB_STEP_SUMMARY | ||
echo "${{ steps.meta.outputs.tags }}" | while IFS= read -r TAG; do | ||
echo "- $TAG" >> $GITHUB_STEP_SUMMARY | ||
done | ||
echo "### Notes" >> $GITHUB_STEP_SUMMARY |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,27 +1,14 @@ | ||
FROM docker.io/library/rust:1.80 AS builder | ||
|
||
# Set the working directory inside the container | ||
WORKDIR /usr/src/taiko_preconf_avs_node | ||
WORKDIR /app/taiko_preconf_avs_node | ||
|
||
# Copy the project files | ||
COPY ../Node/src /usr/src/taiko_preconf_avs_node/src | ||
COPY ../Node/Cargo.toml /usr/src/taiko_preconf_avs_node/Cargo.toml | ||
COPY ../Node/Cargo.lock /usr/src/taiko_preconf_avs_node/Cargo.lock | ||
COPY ../Node /app/taiko_preconf_avs_node | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please, do not copy whole There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This Dockerfile builds the node for you. You don't necessarily need to build locally. I have also add dockerignore file to ignore target dir. |
||
COPY ../p2pNode/p2pNetwork /app/p2pNode/p2pNetwork | ||
|
||
# Copy the dependency directory | ||
COPY ../p2pNode/p2pNetwork /usr/src/p2pNode/p2pNetwork | ||
|
||
# Build the project in release mode | ||
RUN cargo build -p taiko_preconf_avs_node --release | ||
|
||
# Use ubuntu as the base image | ||
FROM ubuntu:latest | ||
|
||
# Copy the build artifact from the builder stage | ||
COPY --from=builder /usr/src/taiko_preconf_avs_node/target/release/taiko_preconf_avs_node /usr/local/bin/taiko_preconf_avs_node | ||
FROM alpine:latest | ||
|
||
# Expose the port that the server will run on | ||
# EXPOSE 9000 | ||
COPY --from=builder /app/taiko_preconf_avs_node/target/release/taiko_preconf_avs_node /usr/local/bin/taiko_preconf_avs_node | ||
|
||
# Run the binary | ||
ENTRYPOINT ["taiko_preconf_avs_node"] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
FROM node:22 | ||
|
||
WORKDIR /app | ||
|
||
COPY . . | ||
|
||
RUN apt-get update && apt-get install -y jq | ||
|
||
RUN git init && \ | ||
curl -L https://foundry.paradigm.xyz | bash && \ | ||
npm install -g pnpm && \ | ||
. ~/.bashrc && \ | ||
foundryup && \ | ||
forge install && \ | ||
pnpm install | ||
|
||
ENV PATH="/root/.foundry/bin:$PATH" | ||
|
||
ENTRYPOINT ["sh", "-c"] | ||
|
||
CMD ["echo Please verify the environment variables and command."] |
This file was deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we need a separate workflow for building images for PRs or can we use this one?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can manually trigger the actions to build the images.