-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add github actions to build docker image
- Loading branch information
Showing
2 changed files
with
116 additions
and
0 deletions.
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,50 @@ | ||
name: Build and Push Docker Image | ||
|
||
on: | ||
push: | ||
branches: | ||
- refactor | ||
|
||
env: | ||
REGISTRY: ghcr.io | ||
IMAGE_NAME: ${{ github.repository }} | ||
|
||
jobs: | ||
build-and-push: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: read | ||
packages: write | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v3 | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v2 | ||
|
||
- name: Log in to the Container registry | ||
uses: docker/login-action@v2 | ||
with: | ||
registry: ${{ env.REGISTRY }} | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Extract metadata (tags, labels) for Docker | ||
id: meta | ||
uses: docker/metadata-action@v4 | ||
with: | ||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | ||
|
||
- name: Build and push Docker image | ||
uses: docker/build-push-action@v4 | ||
with: | ||
context: . | ||
file: ./Full.Dockerfile # Specify the Dockerfile to use | ||
push: true | ||
tags: | | ||
type=raw,value={{sha}} | ||
type=raw,value=latest | ||
labels: ${{ steps.meta.outputs.labels }} | ||
cache-from: type=gha | ||
cache-to: type=gha,mode=max |
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,66 @@ | ||
# Use the latest official Rust image as the base | ||
FROM rust:latest | ||
|
||
# Use bash as the shell | ||
SHELL ["/bin/bash", "-c"] | ||
|
||
# Install NVM, Node.js, and Yarn | ||
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash \ | ||
&& . $HOME/.nvm/nvm.sh \ | ||
&& nvm install 18 \ | ||
&& nvm alias default 18 \ | ||
&& nvm use default \ | ||
&& npm install -g yarn | ||
|
||
# Set the working directory | ||
WORKDIR /relayer | ||
|
||
# Pre-configure Git to avoid common issues and increase clone verbosity | ||
RUN git config --global advice.detachedHead false \ | ||
&& git config --global core.compression 0 \ | ||
&& git config --global protocol.version 2 \ | ||
&& git config --global http.postBuffer 1048576000 \ | ||
&& git config --global fetch.verbose true | ||
|
||
# Copy project files | ||
COPY . . | ||
|
||
# Remove the packages/relayer directory | ||
RUN rm -rf packages/relayer | ||
|
||
# Install Yarn dependencies with retry mechanism | ||
RUN . $HOME/.nvm/nvm.sh && nvm use default && yarn || \ | ||
(sleep 5 && yarn) || \ | ||
(sleep 10 && yarn) | ||
|
||
# Install Foundry | ||
RUN curl -L https://foundry.paradigm.xyz | bash \ | ||
&& source $HOME/.bashrc \ | ||
&& foundryup | ||
|
||
# Verify Foundry installation | ||
RUN source $HOME/.bashrc && forge --version | ||
|
||
# Set the working directory for contracts | ||
WORKDIR /relayer/packages/contracts | ||
|
||
# Install Yarn dependencies for contracts | ||
RUN source $HOME/.nvm/nvm.sh && nvm use default && yarn | ||
|
||
# Build the contracts using Foundry | ||
RUN source $HOME/.bashrc && forge build | ||
|
||
# Copy the project files | ||
COPY packages/relayer /relayer/packages/relayer | ||
|
||
# Set the working directory for the Rust project | ||
WORKDIR /relayer/packages/relayer | ||
|
||
# Build the Rust project with caching | ||
RUN cargo build | ||
|
||
# Expose port | ||
EXPOSE 4500 | ||
|
||
# Set the default command | ||
CMD ["cargo", "run"] |