From 48ef950c913b273b7a5f1beb9a4ad18a8c5a137a Mon Sep 17 00:00:00 2001 From: Carlos Santiago Yanzon <27785807+bizk@users.noreply.github.com> Date: Mon, 18 Sep 2023 11:29:50 -0300 Subject: [PATCH] feat: Dockerization of rosetta (#37) * added dockerfile container * added git action * changed workflow name * reworked the docker build workflow --- .github/workflows/build-docker.yml | 68 ++++++++++++++++++++++++++++++ Dockerfile | 22 ++++++++++ 2 files changed, 90 insertions(+) create mode 100644 .github/workflows/build-docker.yml create mode 100644 Dockerfile diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml new file mode 100644 index 0000000..188b936 --- /dev/null +++ b/.github/workflows/build-docker.yml @@ -0,0 +1,68 @@ +name: Build rosetta docker container +# This workflow is run on pushes to main & every Pull Requests where a .go, .mod, .sum have been changed +on: + pull_request: + paths: + - "Dockerfile" + push: + branches: + - main + tags: + - "v[0-9]+.[0-9]+.[0-9]+" # Push events to matching v*, i.e. v1.0, v20.15.10 + - "v[0-9]+.[0-9]+.[0-9]+-rc*" # Push events to matching v*, i.e. v1.0-rc1, v20.15.10-rc5 + workflow_dispatch: + inputs: + tags: + description: "Rosetta version (e.g 0.47.1)" + required: true + type: string + +permissions: + contents: read + packages: write + +env: + # Use docker.io for Docker Hub if empty + REGISTRY: ghcr.io + # github.repository as / + IMAGE_NAME: cosmos/rosetta + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=raw,value=latest,enable={{is_default_branch}} + type=semver,pattern=v{{major}}.{{minor}} + type=semver,pattern={{version}},value=v${{ inputs.tags }},enable=${{ inputs.tags != '' }} + flavor: | + latest=false + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log into registry ${{ env.REGISTRY }} + if: ${{ github.event_name != 'pull_request' }} + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Publish to GitHub Packages + uses: docker/build-push-action@v5 + with: + platforms: linux/amd64,linux/arm64 + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + cache-from: type=gha + cache-to: type=gha,mode=max \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7850725 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,22 @@ +FROM golang:1.20 AS build-env + +# Set working directory for the build +WORKDIR /go/src/github.com/cosmos/rosetta + +# optimization: if go.sum didn't change, docker will use cached image +COPY go.mod go.sum ./ + +RUN go mod download + +# Add source files +COPY . . + +RUN make build +RUN make plugin + +EXPOSE 8080 + +# Run simd by default +CMD ["./rosetta", "--blockchain", "app", "--network", "network", "--tendermint", "cosmos:26657", "--grpc", "cosmos:9090", "--addr", ":8080"] +ENTRYPOINT ["./rosetta"] +STOPSIGNAL SIGTERM \ No newline at end of file