diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml new file mode 100644 index 00000000..d6260281 --- /dev/null +++ b/.github/workflows/docker.yaml @@ -0,0 +1,80 @@ +name: Docker + +on: + push: + branches: + - main + tags: + - "v*.*.*" + pull_request: + branches: + - main + workflow_dispatch: + inputs: + tags: + description: "Tags to build and push" + required: true + type: string + +permissions: + contents: read + packages: write + +jobs: + build-push: + runs-on: ubuntu-latest + + env: + DOCKER_REGISTRY: ghcr.io + DOCKER_IMAGE: osmosis-labs/meshd + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup Go + uses: actions/setup-go@v4 + with: + go-version: "1.20" + check-latest: true + + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@v4 + with: + images: ${{ env.DOCKER_REGISTRY }}/${{ env.DOCKER_IMAGE }} + 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 QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Run go vendor + run: | + cd demo/ && go mod vendor + + - name: Publish to GitHub Packages + uses: docker/build-push-action@v4 + 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 + context: demo/ diff --git a/demo/Dockerfile b/demo/Dockerfile index 810279e8..5ef4805d 100644 --- a/demo/Dockerfile +++ b/demo/Dockerfile @@ -1,5 +1,4 @@ FROM golang:1.20-alpine AS go-builder -ARG ARCH=x86_64 RUN apk add --no-cache ca-certificates build-base git @@ -13,7 +12,7 @@ ADD go.mod go.sum ./ RUN set -eux; \ WASM_VERSION=v$(go list -m github.com/CosmWasm/wasmvm | cut -d" " -f2 | cut -d"v" -f2); \ echo $WASM_VERSION; \ - wget -O /lib/libwasmvm_muslc.a https://github.com/CosmWasm/wasmvm/releases/download/${WASM_VERSION}/libwasmvm_muslc.${ARCH}.a + wget -O /lib/libwasmvm_muslc.a https://github.com/CosmWasm/wasmvm/releases/download/${WASM_VERSION}/libwasmvm_muslc.$(uname -m).a # Copy over code COPY . /code @@ -31,9 +30,12 @@ FROM alpine:3.16 COPY --from=go-builder /code/build/meshd /usr/bin/meshd +# Install dependencies used for Starship +RUN apk add --no-cache curl make bash jq sed + WORKDIR /opt # rest server, tendermint p2p, tendermint rpc EXPOSE 1317 26656 26657 -CMD ["/usr/bin/meshd", "version"] \ No newline at end of file +CMD ["/usr/bin/meshd", "version"]