|
|
@ -41,10 +41,6 @@ concurrency: |
|
|
jobs: |
|
|
jobs: |
|
|
build: |
|
|
build: |
|
|
runs-on: ubuntu-latest |
|
|
runs-on: ubuntu-latest |
|
|
if: | |
|
|
|
|
|
github.event_name != 'workflow_dispatch' || |
|
|
|
|
|
github.event.inputs.variant == 'all' || |
|
|
|
|
|
github.event.inputs.variant == matrix.variant |
|
|
|
|
|
strategy: |
|
|
strategy: |
|
|
# Build sequentially to avoid rate limits |
|
|
# Build sequentially to avoid rate limits |
|
|
max-parallel: 2 |
|
|
max-parallel: 2 |
|
|
@ -87,9 +83,11 @@ jobs: |
|
|
|
|
|
|
|
|
steps: |
|
|
steps: |
|
|
- name: Checkout |
|
|
- name: Checkout |
|
|
|
|
|
if: github.event_name != 'workflow_dispatch' || github.event.inputs.variant == 'all' || github.event.inputs.variant == matrix.variant |
|
|
uses: actions/checkout@v6 |
|
|
uses: actions/checkout@v6 |
|
|
|
|
|
|
|
|
- name: Free Disk Space |
|
|
- name: Free Disk Space |
|
|
|
|
|
if: github.event_name != 'workflow_dispatch' || github.event.inputs.variant == 'all' || github.event.inputs.variant == matrix.variant |
|
|
run: | |
|
|
run: | |
|
|
echo "Available disk space before cleanup:" |
|
|
echo "Available disk space before cleanup:" |
|
|
df -h |
|
|
df -h |
|
|
@ -103,6 +101,7 @@ jobs: |
|
|
df -h |
|
|
df -h |
|
|
|
|
|
|
|
|
- name: Docker meta |
|
|
- name: Docker meta |
|
|
|
|
|
if: github.event_name != 'workflow_dispatch' || github.event.inputs.variant == 'all' || github.event.inputs.variant == matrix.variant |
|
|
id: docker_meta |
|
|
id: docker_meta |
|
|
uses: docker/metadata-action@v5 |
|
|
uses: docker/metadata-action@v5 |
|
|
with: |
|
|
with: |
|
|
@ -117,10 +116,11 @@ jobs: |
|
|
org.opencontainers.image.vendor=Chris Lu |
|
|
org.opencontainers.image.vendor=Chris Lu |
|
|
|
|
|
|
|
|
- name: Set up QEMU |
|
|
- name: Set up QEMU |
|
|
if: contains(matrix.platforms, 'arm') |
|
|
|
|
|
|
|
|
if: (github.event_name != 'workflow_dispatch' || github.event.inputs.variant == 'all' || github.event.inputs.variant == matrix.variant) && contains(matrix.platforms, 'arm') |
|
|
uses: docker/setup-qemu-action@v3 |
|
|
uses: docker/setup-qemu-action@v3 |
|
|
|
|
|
|
|
|
- name: Create BuildKit config |
|
|
- name: Create BuildKit config |
|
|
|
|
|
if: github.event_name != 'workflow_dispatch' || github.event.inputs.variant == 'all' || github.event.inputs.variant == matrix.variant |
|
|
run: | |
|
|
run: | |
|
|
cat > /tmp/buildkitd.toml <<EOF |
|
|
cat > /tmp/buildkitd.toml <<EOF |
|
|
[registry."docker.io"] |
|
|
[registry."docker.io"] |
|
|
@ -128,19 +128,20 @@ jobs: |
|
|
EOF |
|
|
EOF |
|
|
|
|
|
|
|
|
- name: Set up Docker Buildx |
|
|
- name: Set up Docker Buildx |
|
|
|
|
|
if: github.event_name != 'workflow_dispatch' || github.event.inputs.variant == 'all' || github.event.inputs.variant == matrix.variant |
|
|
uses: docker/setup-buildx-action@v3 |
|
|
uses: docker/setup-buildx-action@v3 |
|
|
with: |
|
|
with: |
|
|
buildkitd-config: /tmp/buildkitd.toml |
|
|
buildkitd-config: /tmp/buildkitd.toml |
|
|
|
|
|
|
|
|
- name: Login to Docker Hub |
|
|
- name: Login to Docker Hub |
|
|
if: github.event_name != 'pull_request' |
|
|
|
|
|
|
|
|
if: (github.event_name != 'workflow_dispatch' || github.event.inputs.variant == 'all' || github.event.inputs.variant == matrix.variant) && github.event_name != 'pull_request' |
|
|
uses: docker/login-action@v3 |
|
|
uses: docker/login-action@v3 |
|
|
with: |
|
|
with: |
|
|
username: ${{ secrets.DOCKER_USERNAME }} |
|
|
username: ${{ secrets.DOCKER_USERNAME }} |
|
|
password: ${{ secrets.DOCKER_PASSWORD }} |
|
|
password: ${{ secrets.DOCKER_PASSWORD }} |
|
|
|
|
|
|
|
|
- name: Login to GHCR |
|
|
- name: Login to GHCR |
|
|
if: github.event_name != 'pull_request' |
|
|
|
|
|
|
|
|
if: (github.event_name != 'workflow_dispatch' || github.event.inputs.variant == 'all' || github.event.inputs.variant == matrix.variant) && github.event_name != 'pull_request' |
|
|
uses: docker/login-action@v3 |
|
|
uses: docker/login-action@v3 |
|
|
with: |
|
|
with: |
|
|
registry: ghcr.io |
|
|
registry: ghcr.io |
|
|
@ -148,6 +149,7 @@ jobs: |
|
|
password: ${{ secrets.GHCR_TOKEN }} |
|
|
password: ${{ secrets.GHCR_TOKEN }} |
|
|
|
|
|
|
|
|
- name: Build and push ${{ matrix.variant }} |
|
|
- name: Build and push ${{ matrix.variant }} |
|
|
|
|
|
if: github.event_name != 'workflow_dispatch' || github.event.inputs.variant == 'all' || github.event.inputs.variant == matrix.variant |
|
|
uses: docker/build-push-action@v6 |
|
|
uses: docker/build-push-action@v6 |
|
|
env: |
|
|
env: |
|
|
DOCKER_BUILDKIT: 1 |
|
|
DOCKER_BUILDKIT: 1 |
|
|
@ -169,7 +171,7 @@ jobs: |
|
|
${{ matrix.variant == 'rocksdb' && format('ROCKSDB_VERSION={0}', github.event.inputs.rocksdb_version || 'v10.10.1') || '' }} |
|
|
${{ matrix.variant == 'rocksdb' && format('ROCKSDB_VERSION={0}', github.event.inputs.rocksdb_version || 'v10.10.1') || '' }} |
|
|
|
|
|
|
|
|
- name: Clean up build artifacts |
|
|
- name: Clean up build artifacts |
|
|
if: always() |
|
|
|
|
|
|
|
|
if: always() && (github.event_name != 'workflow_dispatch' || github.event.inputs.variant == 'all' || github.event.inputs.variant == matrix.variant) |
|
|
run: | |
|
|
run: | |
|
|
sudo docker system prune -f |
|
|
sudo docker system prune -f |
|
|
sudo rm -rf /tmp/go-build* |
|
|
sudo rm -rf /tmp/go-build* |
|
|
@ -177,13 +179,7 @@ jobs: |
|
|
copy-to-dockerhub: |
|
|
copy-to-dockerhub: |
|
|
runs-on: ubuntu-latest |
|
|
runs-on: ubuntu-latest |
|
|
needs: [build] |
|
|
needs: [build] |
|
|
if: | |
|
|
|
|
|
github.event_name != 'pull_request' && |
|
|
|
|
|
( |
|
|
|
|
|
github.event_name != 'workflow_dispatch' || |
|
|
|
|
|
github.event.inputs.variant == 'all' || |
|
|
|
|
|
github.event.inputs.variant == matrix.variant |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
if: github.event_name != 'pull_request' |
|
|
strategy: |
|
|
strategy: |
|
|
matrix: |
|
|
matrix: |
|
|
variant: [normal, large_disk, full, large_disk_full, rocksdb] |
|
|
variant: [normal, large_disk, full, large_disk_full, rocksdb] |
|
|
@ -201,12 +197,14 @@ jobs: |
|
|
|
|
|
|
|
|
steps: |
|
|
steps: |
|
|
- name: Login to Docker Hub |
|
|
- name: Login to Docker Hub |
|
|
|
|
|
if: github.event_name != 'workflow_dispatch' || github.event.inputs.variant == 'all' || github.event.inputs.variant == matrix.variant |
|
|
uses: docker/login-action@v3 |
|
|
uses: docker/login-action@v3 |
|
|
with: |
|
|
with: |
|
|
username: ${{ secrets.DOCKER_USERNAME }} |
|
|
username: ${{ secrets.DOCKER_USERNAME }} |
|
|
password: ${{ secrets.DOCKER_PASSWORD }} |
|
|
password: ${{ secrets.DOCKER_PASSWORD }} |
|
|
|
|
|
|
|
|
- name: Login to GHCR |
|
|
- name: Login to GHCR |
|
|
|
|
|
if: github.event_name != 'workflow_dispatch' || github.event.inputs.variant == 'all' || github.event.inputs.variant == matrix.variant |
|
|
uses: docker/login-action@v3 |
|
|
uses: docker/login-action@v3 |
|
|
with: |
|
|
with: |
|
|
registry: ghcr.io |
|
|
registry: ghcr.io |
|
|
@ -214,6 +212,7 @@ jobs: |
|
|
password: ${{ secrets.GHCR_TOKEN }} |
|
|
password: ${{ secrets.GHCR_TOKEN }} |
|
|
|
|
|
|
|
|
- name: Install crane |
|
|
- name: Install crane |
|
|
|
|
|
if: github.event_name != 'workflow_dispatch' || github.event.inputs.variant == 'all' || github.event.inputs.variant == matrix.variant |
|
|
run: | |
|
|
run: | |
|
|
cd $(mktemp -d) |
|
|
cd $(mktemp -d) |
|
|
curl -sL "https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz" | tar xz |
|
|
curl -sL "https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz" | tar xz |
|
|
@ -221,6 +220,7 @@ jobs: |
|
|
crane version |
|
|
crane version |
|
|
|
|
|
|
|
|
- name: Copy ${{ matrix.variant }} from GHCR to Docker Hub |
|
|
- name: Copy ${{ matrix.variant }} from GHCR to Docker Hub |
|
|
|
|
|
if: github.event_name != 'workflow_dispatch' || github.event.inputs.variant == 'all' || github.event.inputs.variant == matrix.variant |
|
|
run: | |
|
|
run: | |
|
|
# Function to retry with exponential backoff |
|
|
# Function to retry with exponential backoff |
|
|
retry_with_backoff() { |
|
|
retry_with_backoff() { |
|
|
|