-
Notifications
You must be signed in to change notification settings - Fork 0
138 lines (137 loc) · 7.07 KB
/
docker.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
name: Build Docker Image
on:
push:
paths:
- Dockerfile
- .github/workflows/docker.yml
pull_request:
paths:
- Dockerfile
- .github/workflows/docker.yml
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Read version
id: version
run: echo "version=$(echo $(cat Dockerfile | grep -wE "ARG VALKEY_VERSION=*" | sed "s|ARG VALKEY_VERSION=||g"))" >> $GITHUB_OUTPUT
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: arm64 #all
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver-opts: env.BUILDKIT_STEP_LOG_MAX_SIZE=-1
- name: Login to DockerHub
if: ${{ github.event_name != 'pull_request' }}
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Convert Username
id: un
run: echo "un=$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ steps.un.outputs.un }}
password: ${{ github.token }}
- name: Build
uses: docker/build-push-action@v5
if: ${{ github.event_name != 'pull_request' }}
with:
context: .
file: ./Dockerfile
platforms: linux/amd64,linux/arm64 #,linux/amd64/v2,linux/amd64/v3,linux/amd64/v4,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6
push: ${{ github.ref == 'refs/heads/latest' }}
tags: |
${{ steps.un.outputs.un }}/${{ github.event.repository.name }}:${{ github.ref_name }}
${{ steps.un.outputs.un }}/${{ github.event.repository.name }}:${{ github.run_number }}
${{ steps.un.outputs.un }}/${{ github.event.repository.name }}:${{ steps.version.outputs.version }}
ghcr.io/${{ steps.un.outputs.un }}/${{ github.event.repository.name }}:${{ github.ref_name }}
ghcr.io/${{ steps.un.outputs.un }}/${{ github.event.repository.name }}:${{ github.run_number }}
ghcr.io/${{ steps.un.outputs.un }}/${{ github.event.repository.name }}:${{ steps.version.outputs.version }}
- name: show version
if: ${{ github.ref == 'refs/heads/latest' }}
run: |
docker run --rm --entrypoint valkey-cli ${{ steps.un.outputs.un }}/${{ github.event.repository.name }}:${{ github.ref_name }} --version
docker run --rm --entrypoint valkey-server ${{ steps.un.outputs.un }}/${{ github.event.repository.name }}:${{ github.ref_name }} --version
docker run --rm --entrypoint valkey-cli ghcr.io/${{ steps.un.outputs.un }}/${{ github.event.repository.name }}:${{ github.ref_name }} --version
docker run --rm --entrypoint valkey-server ghcr.io/${{ steps.un.outputs.un }}/${{ github.event.repository.name }}:${{ github.ref_name }} --version
- name: copy valkey binary
if: ${{ github.ref == 'refs/heads/latest' }}
run: |
docker run -d --pull always --platform amd64 --name valkey-x86_64 ${{ steps.un.outputs.un }}/${{ github.event.repository.name }}:${{ github.ref_name }}
docker cp valkey-x86_64:/usr/local/bin/valkey-server valkey-cli-x86_64
docker cp valkey-x86_64:/usr/local/bin/valkey-server valkey-server-x86_64
docker run -d --pull always --platform arm64 --name valkey-aarch64 ${{ steps.un.outputs.un }}/${{ github.event.repository.name }}:${{ github.ref_name }}
docker cp valkey-aarch64:/usr/local/bin/valkey-server valkey-cli-aarch64
docker cp valkey-aarch64:/usr/local/bin/valkey-server valkey-server-aarch64
- uses: actions/upload-artifact@v4
if: ${{ github.ref == 'refs/heads/latest' }}
with:
name: artifacts
path: |
valkey-cli-x86_64
valkey-server-x86_64
valkey-cli-aarch64
valkey-server-aarch64
- uses: crowbarmaster/GH-Automatic-Releases@latest
if: ${{ github.ref == 'refs/heads/latest' }}
with:
prerelease: false
repo_token: ${{ github.token }}
title: valkey-${{ steps.version.outputs.version }}
automatic_release_tag: valkey-${{ steps.version.outputs.version }}
files: |
valkey-cli-x86_64
valkey-server-x86_64
valkey-cli-aarch64
valkey-server-aarch64
- name: Set PR-Number (PR)
if: ${{ github.event_name == 'pull_request' }}
id: pr
run: echo "pr=$(echo pr-${{ github.ref_name }} | sed "s|refs/pull/:||g" | sed "s|/merge||g")" >> $GITHUB_OUTPUT
- name: Build (PR)
uses: docker/build-push-action@v5
if: ${{ github.event_name == 'pull_request' }}
with:
context: .
file: ./Dockerfile
platforms: linux/amd64,linux/arm64 #,linux/amd64/v2,linux/amd64/v3,linux/amd64/v4,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6
push: ${{ github.event_name == 'pull_request' }}
tags: ghcr.io/${{ steps.un.outputs.un }}/${{ github.event.repository.name }}:${{ steps.pr.outputs.pr }}
- name: show version (PR)
if: ${{ github.event_name == 'pull_request' }}
run: |
docker run --rm --entrypoint valkey-cli ghcr.io/${{ steps.un.outputs.un }}/${{ github.event.repository.name }}:${{ steps.pr.outputs.pr }} --version
docker run --rm --entrypoint valkey-server ghcr.io/${{ steps.un.outputs.un }}/${{ github.event.repository.name }}:${{ steps.pr.outputs.pr }} --version
- name: copy valkey binary (PR)
if: ${{ github.event_name == 'pull_request' }}
run: |
docker run -d --pull always --platform amd64 --name valkey-x86_64 ghcr.io/${{ steps.un.outputs.un }}/${{ github.event.repository.name }}:${{ steps.pr.outputs.pr }}
docker cp valkey-x86_64:/usr/local/bin/valkey-server valkey-cli-x86_64
docker cp valkey-x86_64:/usr/local/bin/valkey-server valkey-server-x86_64
docker run -d --pull always --platform arm64 --name valkey-aarch64 ghcr.io/${{ steps.un.outputs.un }}/${{ github.event.repository.name }}:${{ steps.pr.outputs.pr }}
docker cp valkey-aarch64:/usr/local/bin/valkey-server valkey-cli-aarch64
docker cp valkey-aarch64:/usr/local/bin/valkey-server valkey-server-aarch64
- uses: actions/upload-artifact@v4
if: ${{ github.event_name == 'pull_request' }}
with:
name: artifacts
path: |
valkey-cli-x86_64
valkey-server-x86_64
valkey-cli-aarch64
valkey-server-aarch64
- name: add comment (PR)
uses: mshick/add-pr-comment@v2
if: ${{ github.event_name == 'pull_request' }}
with:
message: "The Docker Image can now be found here: `ghcr.io/${{ steps.un.outputs.un }}/${{ github.event.repository.name }}:${{ steps.pr.outputs.pr }}`"
repo-token: ${{ github.token }}