Skip to content
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

Improve Dockerfile and add Github Actions builds #183

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions .github/workflows/build-image-on-push.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: "Test build of image when Dockerfile is changed"

on:
push:
paths:
- 'Dockerfile'
branches-ignore:
- master
pull_request:
paths:
- 'Dockerfile'
workflow_dispatch:

jobs:
rebuild-container:
name: "Build image with cache"
runs-on: ubuntu-latest
steps:
-
name: Set up QEMU
uses: docker/[email protected]
with:
platforms: linux/arm64
-
name: Set up Docker Buildx
uses: docker/[email protected]
-
name: Checkout repository
uses: actions/checkout@v4
-
name: Build x86_64 image
id: docker_build_amd64
uses: docker/[email protected]
with:
push: false
load: true
platforms: linux/amd64
tags: utreexod:amd64
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/utreexod:latest
-
name: Test-run x86_64 image
run: |
docker run --rm utreexod:amd64 &
PID=$!
sleep 5
kill -SIGINT $PID # this will return a non-zero exit code if the container dies early on
-
name: Build ARMv8 image
id: docker_build_arm64
uses: docker/[email protected]
with:
push: false
load: true
platforms: linux/arm64
tags: utreexod:arm64
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/utreexod:latest
48 changes: 48 additions & 0 deletions .github/workflows/update-base-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: "Update image and push to Github Packages and Docker Hub weekly"

on:
schedule:
- cron: "0 12 * * 1" # Run every Monday at noon.
workflow_dispatch:

jobs:
rebuild-container:
name: "Rebuild Container with the latest base image"
runs-on: ubuntu-latest
steps:
-
name: Prepare outputs
id: prep
run: |
echo "::set-output name=created::$(date -u +'%Y-%m-%dT%H:%M:%SZ')"
-
name: Set up QEMU
uses: docker/[email protected]
with:
platforms: linux/arm64
-
name: Set up Docker Buildx
uses: docker/[email protected]
-
name: Login to GitHub Container Registry
uses: docker/[email protected]
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Checkout repository
uses: actions/checkout@v4
-
name: Build and push to Docker Hub and GitHub Packages Docker Registry
id: docker_build
uses: docker/[email protected]
with:
push: true
platforms: linux/amd64,linux/arm64
tags: |
ghcr.io/${{ github.repository_owner }}/utreexod:latest
labels: |
org.opencontainers.image.source=${{ github.event.repository.html_url }}
org.opencontainers.image.created=${{ steps.prep.outputs.created }}
org.opencontainers.image.revision=${{ github.sha }}
69 changes: 69 additions & 0 deletions .github/workflows/update-image-on-push.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: "Update image when Dockerfile is changed"

on:
push:
branches:
- master
workflow_dispatch:

jobs:
rebuild-container:
name: "Rebuild Container with the latest base image"
runs-on: ubuntu-latest
steps:
-
name: Prepare outputs
id: prep
run: |
echo "::set-output name=created::$(date -u +'%Y-%m-%dT%H:%M:%SZ')"
-
name: Set up QEMU
uses: docker/[email protected]
with:
platforms: linux/arm64
-
name: Set up Docker Buildx
uses: docker/[email protected]
-
name: Login to GitHub Container Registry
uses: docker/[email protected]
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Checkout repository
uses: actions/checkout@v4
-
name: Build x86_64 image
id: docker_build_amd64
uses: docker/[email protected]
with:
push: false
load: true
platforms: linux/amd64
tags: utreexod:amd64
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/utreexod:latest
cache-to: type=inline
-
name: Test-run x86_64 image
run: |
docker run --rm utreexod:amd64 &
PID=$!
sleep 5
kill -SIGINT $PID # this will return a non-zero exit code if the container dies early on
-
name: Build and push to Docker Hub and GitHub Packages Docker Registry
uses: docker/[email protected]
id: docker_build_push
with:
push: true
platforms: linux/amd64,linux/arm64
tags: |
ghcr.io/${{ github.repository_owner }}/utreexod:latest
labels: |
org.opencontainers.image.source=${{ github.event.repository.html_url }}
org.opencontainers.image.created=${{ steps.prep.outputs.created }}
org.opencontainers.image.revision=${{ github.sha }}
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/utreexod:latest
cache-to: type=inline
68 changes: 68 additions & 0 deletions .github/workflows/update-image-on-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: "Update image when a release is published"

on:
release:
types: [published]
workflow_dispatch:

jobs:
rebuild-container:
name: "Rebuild Container with the latest base image"
runs-on: ubuntu-latest
steps:
-
name: Prepare outputs
id: prep
run: |
echo "::set-output name=created::$(date -u +'%Y-%m-%dT%H:%M:%SZ')"
-
name: Set up QEMU
uses: docker/[email protected]
with:
platforms: linux/arm64
-
name: Set up Docker Buildx
uses: docker/[email protected]
-
name: Login to GitHub Container Registry
uses: docker/[email protected]
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Checkout repository
uses: actions/checkout@v4
-
name: Build x86_64 image
id: docker_build_amd64
uses: docker/[email protected]
with:
push: false
load: true
platforms: linux/amd64
tags: utreexod:amd64
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/utreexod:latest
cache-to: type=inline
-
name: Test-run x86_64 image
run: |
docker run --rm utreexod:amd64 &
PID=$!
sleep 5
kill -SIGINT $PID # this will return a non-zero exit code if the container dies early on
-
name: Build and push to Docker Hub and GitHub Packages Docker Registry
uses: docker/[email protected]
id: docker_build_push
with:
push: true
platforms: linux/amd64,linux/arm64
tags: |
ghcr.io/${{ github.repository_owner }}/utreexod:${{ github.ref_name }}
labels: |
org.opencontainers.image.source=${{ github.event.repository.html_url }}
org.opencontainers.image.created=${{ steps.prep.outputs.created }}
org.opencontainers.image.revision=${{ github.sha }}
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/utreexod:latest
cache-to: type=inline
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ RUN go install -v . ./cmd/...

FROM ${ARCH:+${ARCH}/}alpine:${VER_ALPINE}

COPY --from=build-container /go/bin /bin
COPY --from=build-container /go/bin/utreexod /bin

VOLUME ["/root/.utreexod"]

Expand Down
Loading