-
Notifications
You must be signed in to change notification settings - Fork 13
132 lines (113 loc) · 4.03 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
name: Docker
on:
push:
branches:
- master
tags:
- "*"
jobs:
build:
name: Build
runs-on: ubuntu-latest
strategy:
matrix:
include:
- distro: centos-7
platform: linux/amd64
- distro: bionic
platform: linux/amd64
- distro: aarch64
platform: linux/arm64
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: latest
- name: Login to ghcr
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ secrets.CR_USERNAME }}
password: ${{ secrets.CR_PAT }}
- name: Build
uses: docker/build-push-action@v5
with:
file: ${{ matrix.distro }}/Dockerfile
context: .
platforms: ${{ matrix.platform }}
push: true
tags: ghcr.io/nervosnetwork/ckb-docker-builder:${{ matrix.distro }}-${{ github.sha }}
test:
name: Test
runs-on: ubuntu-latest
needs: build
strategy:
matrix:
include:
- distro: centos-7
platform: linux/amd64
- distro: bionic
platform: linux/amd64
- distro: aarch64
platform: linux/arm64
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Checkout CKB
uses: actions/checkout@v2
with:
repository: nervosnetwork/ckb
path: ckb
- if: matrix.platform == 'linux/arm64'
name: Build CKB on arm64
run: |
docker run --platform ${{matrix.platform}} --rm -i -w /ckb -v $(pwd)/ckb:/ckb -e OPENSSL_STATIC=1 -e OPENSSL_LIB_DIR=/usr/local/lib -e OPENSSL_INCLUDE_DIR=/usr/local/include ghcr.io/nervosnetwork/ckb-docker-builder:${{ matrix.distro }}-${{ github.sha }} make prod
- if: matrix.platform == 'linux/amd64'
name: Build CKB on amd64
run: |
docker run --platform ${{matrix.platform}} --rm -i -w /ckb -v $(pwd)/ckb:/ckb -e OPENSSL_STATIC=1 -e OPENSSL_LIB_DIR=/usr/local/lib64 -e OPENSSL_INCLUDE_DIR=/usr/local/include ghcr.io/nervosnetwork/ckb-docker-builder:${{ matrix.distro }}-${{ github.sha }} make prod
publish:
name: Publish
runs-on: ubuntu-latest
needs: test
if: ${{ startsWith(github.ref, 'refs/tags/') }}
strategy:
matrix:
include:
- distro: centos-7
platform: linux/amd64
- distro: bionic
platform: linux/amd64
- distro: aarch64
platform: linux/arm64
steps:
- name: Login to ghcr
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ secrets.CR_USERNAME }}
password: ${{ secrets.CR_PAT }}
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Determine tag
id: tag
run: echo "::set-output name=tag::${GITHUB_REF##*/}"
- name: Tag and push image
run: |
SRC_TAG=ghcr.io/nervosnetwork/ckb-docker-builder:${{ matrix.distro }}-${{ github.sha }}
docker pull --platform ${{matrix.platform}} "$SRC_TAG"
docker tag "$SRC_TAG" ghcr.io/nervosnetwork/ckb-docker-builder:${{ matrix.distro }}-latest
docker push ghcr.io/nervosnetwork/ckb-docker-builder:${{ matrix.distro }}-latest
docker tag "$SRC_TAG" ghcr.io/nervosnetwork/ckb-docker-builder:${{ matrix.distro }}-${{ steps.tag.outputs.tag }}
docker push ghcr.io/nervosnetwork/ckb-docker-builder:${{ matrix.distro }}-${{ steps.tag.outputs.tag }}
docker tag "$SRC_TAG" nervos/ckb-docker-builder:${{ matrix.distro }}-latest
docker push nervos/ckb-docker-builder:${{ matrix.distro }}-latest
docker tag "$SRC_TAG" nervos/ckb-docker-builder:${{ matrix.distro }}-${{ steps.tag.outputs.tag }}
docker push nervos/ckb-docker-builder:${{ matrix.distro }}-${{ steps.tag.outputs.tag }}