Skip to content

Commit

Permalink
Add build mysql workflow
Browse files Browse the repository at this point in the history
Signed-off-by: d-kuro <[email protected]>
  • Loading branch information
d-kuro committed May 31, 2023
1 parent 483272a commit 2c5cac0
Show file tree
Hide file tree
Showing 30 changed files with 478 additions and 0 deletions.
61 changes: 61 additions & 0 deletions .github/workflows/build-mysql-container.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: "Build mysql container"

on:
pull_request:
paths:
- "containers/mysql/**"
- ".github/workflows/build-mysql-container.yaml"
- "!**.md"
push:
branches:
- 'main'
paths:
- "containers/mysql/**"
- ".github/workflows/build-mysql-container.yaml"
- "!**.md"

jobs:
build:
runs-on: ubuntu-20.04
strategy:
matrix:
mysql-version: [ "8.0.18", "8.0.25", "8.0.26", "8.0.27", "8.0.28", "8.0.30", "8.0.31", "8.0.32" ]
steps:
- uses: actions/checkout@v3
- uses: docker/setup-qemu-action@v2
- uses: docker/setup-buildx-action@v2
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Check TAG file
working-directory: containers
run: |
result="$(./tag_exists moco/mysql mysql/${{ matrix.mysql-version }})"
if [ "$result" = ng ]; then
exit 1
fi
echo "TAG=$(cat ./mysql/${{ matrix.mysql-version }}/TAG)" >> $GITHUB_ENV
- uses: docker/build-push-action@v4
if: github.ref == 'refs/heads/main'
with:
context: containers/mysql/${{ matrix.mysql-version }}/.
platforms: linux/amd64,linux/arm64
push: true
tags: ghcr.io/cybozu-go/moco/mysql:${{ env.TAG }}
cache-from: type=gha
cache-to: type=gha,mode=max

- uses: docker/build-push-action@v4
if: github.event_name == 'pull_request'
with:
context: containers/mysql/${{ matrix.mysql-version }}/.
platforms: linux/amd64,linux/arm64
push: false
tags: ghcr.io/cybozu-go/moco/mysql:${{ env.TAG }}
cache-from: type=gha
cache-to: type=gha,mode=max
2 changes: 2 additions & 0 deletions containers/mysql/8.0.18/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*
!workspace
40 changes: 40 additions & 0 deletions containers/mysql/8.0.18/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
FROM quay.io/cybozu/ubuntu-dev:22.04 AS builder

ARG MYSQL_VERSION=8.0.18

RUN apt-get update && apt-get -y install --no-install-recommends \
cmake \
libncurses5-dev \
libjemalloc-dev \
libnuma-dev \
libaio-dev \
pkg-config

RUN cd tmp/ \
&& curl -fsSL -O https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-${MYSQL_VERSION}.tar.gz \
&& tar -x -z -f mysql-boost-${MYSQL_VERSION}.tar.gz \
&& cd mysql-${MYSQL_VERSION} \
&& mkdir bld \
&& cd bld \
&& cmake .. -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=Release -DWITH_BOOST=$(ls -d ../boost/boost_*) -DWITH_NUMA=1 -DWITH_JEMALLOC=1 -DWITH_PACKAGE_FLAGS=0 \
&& make -j 20 \
&& make install

FROM quay.io/cybozu/ubuntu:22.04

COPY --from=builder /usr/local/mysql/LICENSE /usr/local/mysql/LICENSE
COPY --from=builder /usr/local/mysql/bin /usr/local/mysql/bin
COPY --from=builder /usr/local/mysql/lib /usr/local/mysql/lib
COPY --from=builder /usr/local/mysql/share /usr/local/mysql/share

RUN apt-get update \
&& apt-get install -y --no-install-recommends libjemalloc2 libnuma1 libaio1 \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /var/lib/mysql \
&& chown -R 10000:10000 /var/lib/mysql

ENV PATH=/usr/local/mysql/bin:"$PATH"
VOLUME /var/lib/mysql
ENTRYPOINT ["mysqld"]
EXPOSE 3306 33060 33062 8080
USER 10000:10000
1 change: 1 addition & 0 deletions containers/mysql/8.0.18/TAG
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8.0.18.1
2 changes: 2 additions & 0 deletions containers/mysql/8.0.25/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*
!workspace
40 changes: 40 additions & 0 deletions containers/mysql/8.0.25/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
FROM quay.io/cybozu/ubuntu-dev:22.04 AS builder

ARG MYSQL_VERSION=8.0.25

RUN apt-get update && apt-get -y install --no-install-recommends \
cmake \
libncurses5-dev \
libjemalloc-dev \
libnuma-dev \
libaio-dev \
pkg-config

RUN cd tmp/ \
&& curl -fsSL -O https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-${MYSQL_VERSION}.tar.gz \
&& tar -x -z -f mysql-boost-${MYSQL_VERSION}.tar.gz \
&& cd mysql-${MYSQL_VERSION} \
&& mkdir bld \
&& cd bld \
&& cmake .. -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=Release -DWITH_BOOST=$(ls -d ../boost/boost_*) -DWITH_NUMA=1 -DWITH_JEMALLOC=1 -DWITH_PACKAGE_FLAGS=0 \
&& make -j 20 \
&& make install

FROM quay.io/cybozu/ubuntu:22.04

COPY --from=builder /usr/local/mysql/LICENSE /usr/local/mysql/LICENSE
COPY --from=builder /usr/local/mysql/bin /usr/local/mysql/bin
COPY --from=builder /usr/local/mysql/lib /usr/local/mysql/lib
COPY --from=builder /usr/local/mysql/share /usr/local/mysql/share

RUN apt-get update \
&& apt-get install -y --no-install-recommends libjemalloc2 libnuma1 libaio1 \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /var/lib/mysql \
&& chown -R 10000:10000 /var/lib/mysql

ENV PATH=/usr/local/mysql/bin:"$PATH"
VOLUME /var/lib/mysql
ENTRYPOINT ["mysqld"]
EXPOSE 3306 33060 33062 8080
USER 10000:10000
1 change: 1 addition & 0 deletions containers/mysql/8.0.25/TAG
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8.0.25.1
2 changes: 2 additions & 0 deletions containers/mysql/8.0.26/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*
!workspace
40 changes: 40 additions & 0 deletions containers/mysql/8.0.26/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
FROM quay.io/cybozu/ubuntu-dev:22.04 AS builder

ARG MYSQL_VERSION=8.0.26

RUN apt-get update && apt-get -y install --no-install-recommends \
cmake \
libncurses5-dev \
libjemalloc-dev \
libnuma-dev \
libaio-dev \
pkg-config

RUN cd tmp/ \
&& curl -fsSL -O https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-${MYSQL_VERSION}.tar.gz \
&& tar -x -z -f mysql-boost-${MYSQL_VERSION}.tar.gz \
&& cd mysql-${MYSQL_VERSION} \
&& mkdir bld \
&& cd bld \
&& cmake .. -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=Release -DWITH_BOOST=$(ls -d ../boost/boost_*) -DWITH_NUMA=1 -DWITH_JEMALLOC=1 -DWITH_PACKAGE_FLAGS=0 \
&& make -j 20 \
&& make install

FROM quay.io/cybozu/ubuntu:22.04

COPY --from=builder /usr/local/mysql/LICENSE /usr/local/mysql/LICENSE
COPY --from=builder /usr/local/mysql/bin /usr/local/mysql/bin
COPY --from=builder /usr/local/mysql/lib /usr/local/mysql/lib
COPY --from=builder /usr/local/mysql/share /usr/local/mysql/share

RUN apt-get update \
&& apt-get install -y --no-install-recommends libjemalloc2 libnuma1 libaio1 \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /var/lib/mysql \
&& chown -R 10000:10000 /var/lib/mysql

ENV PATH=/usr/local/mysql/bin:"$PATH"
VOLUME /var/lib/mysql
ENTRYPOINT ["mysqld"]
EXPOSE 3306 33060 33062 8080
USER 10000:10000
1 change: 1 addition & 0 deletions containers/mysql/8.0.26/TAG
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8.0.26.1
2 changes: 2 additions & 0 deletions containers/mysql/8.0.27/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*
!workspace
40 changes: 40 additions & 0 deletions containers/mysql/8.0.27/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
FROM quay.io/cybozu/ubuntu-dev:22.04 AS builder

ARG MYSQL_VERSION=8.0.27

RUN apt-get update && apt-get -y install --no-install-recommends \
cmake \
libncurses5-dev \
libjemalloc-dev \
libnuma-dev \
libaio-dev \
pkg-config

RUN cd tmp/ \
&& curl -fsSL -O https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-${MYSQL_VERSION}.tar.gz \
&& tar -x -z -f mysql-boost-${MYSQL_VERSION}.tar.gz \
&& cd mysql-${MYSQL_VERSION} \
&& mkdir bld \
&& cd bld \
&& cmake .. -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=Release -DWITH_BOOST=$(ls -d ../boost/boost_*) -DWITH_NUMA=1 -DWITH_JEMALLOC=1 -DWITH_PACKAGE_FLAGS=0 \
&& make -j 20 \
&& make install

FROM quay.io/cybozu/ubuntu:22.04

COPY --from=builder /usr/local/mysql/LICENSE /usr/local/mysql/LICENSE
COPY --from=builder /usr/local/mysql/bin /usr/local/mysql/bin
COPY --from=builder /usr/local/mysql/lib /usr/local/mysql/lib
COPY --from=builder /usr/local/mysql/share /usr/local/mysql/share

RUN apt-get update \
&& apt-get install -y --no-install-recommends libjemalloc2 libnuma1 libaio1 \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /var/lib/mysql \
&& chown -R 10000:10000 /var/lib/mysql

ENV PATH=/usr/local/mysql/bin:"$PATH"
VOLUME /var/lib/mysql
ENTRYPOINT ["mysqld"]
EXPOSE 3306 33060 33062 8080
USER 10000:10000
1 change: 1 addition & 0 deletions containers/mysql/8.0.27/TAG
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8.0.27.1
2 changes: 2 additions & 0 deletions containers/mysql/8.0.28/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*
!workspace
40 changes: 40 additions & 0 deletions containers/mysql/8.0.28/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
FROM quay.io/cybozu/ubuntu-dev:22.04 AS builder

ARG MYSQL_VERSION=8.0.28

RUN apt-get update && apt-get -y install --no-install-recommends \
cmake \
libncurses5-dev \
libjemalloc-dev \
libnuma-dev \
libaio-dev \
pkg-config

RUN cd tmp/ \
&& curl -fsSL -O https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-${MYSQL_VERSION}.tar.gz \
&& tar -x -z -f mysql-boost-${MYSQL_VERSION}.tar.gz \
&& cd mysql-${MYSQL_VERSION} \
&& mkdir bld \
&& cd bld \
&& cmake .. -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=Release -DWITH_BOOST=$(ls -d ../boost/boost_*) -DWITH_NUMA=1 -DWITH_JEMALLOC=1 -DWITH_PACKAGE_FLAGS=0 \
&& make -j 20 \
&& make install

FROM quay.io/cybozu/ubuntu:22.04

COPY --from=builder /usr/local/mysql/LICENSE /usr/local/mysql/LICENSE
COPY --from=builder /usr/local/mysql/bin /usr/local/mysql/bin
COPY --from=builder /usr/local/mysql/lib /usr/local/mysql/lib
COPY --from=builder /usr/local/mysql/share /usr/local/mysql/share

RUN apt-get update \
&& apt-get install -y --no-install-recommends libjemalloc2 libnuma1 libaio1 \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /var/lib/mysql \
&& chown -R 10000:10000 /var/lib/mysql

ENV PATH=/usr/local/mysql/bin:"$PATH"
VOLUME /var/lib/mysql
ENTRYPOINT ["mysqld"]
EXPOSE 3306 33060 33062 8080
USER 10000:10000
1 change: 1 addition & 0 deletions containers/mysql/8.0.28/TAG
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8.0.28.1
15 changes: 15 additions & 0 deletions containers/mysql/8.0.28/container-structure-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
schemaVersion: '2.0.0'
fileExistenceTests:
- name: 'mysqld'
path: '/usr/local/mysql/bin/mysqld'
shouldExist: true
isExecutableBy: 'owner'
- name: 'mysql lib'
path: '/usr/local/mysql/lib'
shouldExist: true
- name: 'mysql share'
path: '/usr/local/mysql/share'
shouldExist: true
- name: 'mysql LICENSE'
path: '/usr/local/mysql/LICENSE'
shouldExist: true
2 changes: 2 additions & 0 deletions containers/mysql/8.0.30/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*
!workspace
40 changes: 40 additions & 0 deletions containers/mysql/8.0.30/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
FROM quay.io/cybozu/ubuntu-dev:22.04 AS builder

ARG MYSQL_VERSION=8.0.30

RUN apt-get update && apt-get -y install --no-install-recommends \
cmake \
libncurses5-dev \
libjemalloc-dev \
libnuma-dev \
libaio-dev \
pkg-config

RUN cd tmp/ \
&& curl -fsSL -O https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-${MYSQL_VERSION}.tar.gz \
&& tar -x -z -f mysql-boost-${MYSQL_VERSION}.tar.gz \
&& cd mysql-${MYSQL_VERSION} \
&& mkdir bld \
&& cd bld \
&& cmake .. -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=Release -DWITH_BOOST=$(ls -d ../boost/boost_*) -DWITH_NUMA=1 -DWITH_JEMALLOC=1 -DWITH_PACKAGE_FLAGS=0 \
&& make -j 20 \
&& make install

FROM quay.io/cybozu/ubuntu:22.04

COPY --from=builder /usr/local/mysql/LICENSE /usr/local/mysql/LICENSE
COPY --from=builder /usr/local/mysql/bin /usr/local/mysql/bin
COPY --from=builder /usr/local/mysql/lib /usr/local/mysql/lib
COPY --from=builder /usr/local/mysql/share /usr/local/mysql/share

RUN apt-get update \
&& apt-get install -y --no-install-recommends libjemalloc2 libnuma1 libaio1 \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /var/lib/mysql \
&& chown -R 10000:10000 /var/lib/mysql

ENV PATH=/usr/local/mysql/bin:"$PATH"
VOLUME /var/lib/mysql
ENTRYPOINT ["mysqld"]
EXPOSE 3306 33060 33062 8080
USER 10000:10000
1 change: 1 addition & 0 deletions containers/mysql/8.0.30/TAG
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8.0.30.1
15 changes: 15 additions & 0 deletions containers/mysql/8.0.30/container-structure-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
schemaVersion: '2.0.0'
fileExistenceTests:
- name: 'mysqld'
path: '/usr/local/mysql/bin/mysqld'
shouldExist: true
isExecutableBy: 'owner'
- name: 'mysql lib'
path: '/usr/local/mysql/lib'
shouldExist: true
- name: 'mysql share'
path: '/usr/local/mysql/share'
shouldExist: true
- name: 'mysql LICENSE'
path: '/usr/local/mysql/LICENSE'
shouldExist: true
2 changes: 2 additions & 0 deletions containers/mysql/8.0.31/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*
!workspace
Loading

0 comments on commit 2c5cac0

Please sign in to comment.