Skip to content

Commit 3b742c9

Browse files
committed
feat: add mc
1 parent 3da2413 commit 3b742c9

File tree

2 files changed

+127
-0
lines changed

2 files changed

+127
-0
lines changed

.github/workflows/mc.yml

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
name: mc
2+
on:
3+
workflow_dispatch:
4+
schedule:
5+
- cron: "0 5 * * *"
6+
push:
7+
tags:
8+
- 'mc'
9+
jobs:
10+
mc:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- name: cron-update / get latest version
14+
run: |
15+
echo "LATEST_VERSION=$(curl -s https://api.github.com/repos/minio/mc/releases/latest | jq -r '.tag_name' | sed 's|RELEASE.||')" >> "${GITHUB_ENV}"
16+
if [ "${LATEST_VERSION}" != "null" ]; then
17+
if curl -kILs --fail https://hub.docker.com/v2/repositories/11notes/distroless/tags/mc-${LATEST_VERSION}; then
18+
echo "tag ${LATEST_VERSION} exists already!"
19+
else
20+
echo "WORKFLOW_AUTO_UPDATE=true" >> "${GITHUB_ENV}"
21+
echo "LATEST_VERSION=${LATEST_VERSION}" >> "${GITHUB_ENV}"
22+
fi
23+
else
24+
echo "tag ${LATEST_VERSION} is null!"
25+
fi
26+
27+
- name: init / base64 nested json
28+
if: env.WORKFLOW_AUTO_UPDATE == 'true'
29+
uses: actions/github-script@62c3794a3eb6788d9a2a72b219504732c0c9a298
30+
with:
31+
script: |
32+
const LATEST_VERSION = {
33+
original:'${{ env.LATEST_VERSION }}'
34+
};
35+
LATEST_VERSION.semver = LATEST_VERSION.original.replace(/-/ig, ".").split("T")[0];
36+
const { Buffer } = require('node:buffer');
37+
const etc = {
38+
dockerfile:"mc.dockerfile",
39+
tag:"mc",
40+
version:LATEST_VERSION.semver,
41+
build:{
42+
args:{
43+
version_build:LATEST_VERSION.original.split("T")[1],
44+
}
45+
},
46+
semver:{disable:{rolling: true}}
47+
};
48+
core.exportVariable('WORKFLOW_BASE64JSON', Buffer.from(JSON.stringify(etc)).toString('base64'));
49+
50+
- name: build docker image
51+
if: env.WORKFLOW_AUTO_UPDATE == 'true'
52+
uses: the-actions-org/workflow-dispatch@3133c5d135c7dbe4be4f9793872b6ef331b53bc7
53+
with:
54+
wait-for-completion: false
55+
workflow: docker.yml
56+
token: "${{ secrets.REPOSITORY_TOKEN }}"
57+
inputs: '{ "release":"false", "readme":"false", "run-name":"mc", "etc":"${{ env.WORKFLOW_BASE64JSON }}" }'

mc.dockerfile

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# ╔═════════════════════════════════════════════════════╗
2+
# ║ SETUP ║
3+
# ╚═════════════════════════════════════════════════════╝
4+
# GLOBAL
5+
ARG APP_UID=1000 \
6+
APP_GID=1000 \
7+
BUILD_SRC=minio/mc.git \
8+
BUILD_ROOT=/go/mc \
9+
BUILD_BIN=/mc
10+
11+
# :: FOREIGN IMAGES
12+
FROM 11notes/distroless AS distroless
13+
14+
15+
# ╔═════════════════════════════════════════════════════╗
16+
# ║ BUILD ║
17+
# ╚═════════════════════════════════════════════════════╝
18+
# :: DNSLOOKUP
19+
FROM 11notes/go:1.25 AS build
20+
ARG APP_VERSION \
21+
APP_VERSION_BUILD \
22+
BUILD_SRC \
23+
BUILD_ROOT \
24+
BUILD_BIN
25+
26+
RUN set -ex; \
27+
SEMVER=$(echo ${APP_VERSION} | sed 's|\.|-|g'); \
28+
eleven git clone ${BUILD_SRC} RELEASE.${SEMVER}T${APP_VERSION_BUILD};
29+
30+
RUN set -ex; \
31+
cd ${BUILD_ROOT}; \
32+
eleven go build ${BUILD_BIN} main.go;
33+
34+
RUN set -ex; \
35+
eleven distroless ${BUILD_BIN};
36+
37+
38+
# ╔═════════════════════════════════════════════════════╗
39+
# ║ IMAGE ║
40+
# ╚═════════════════════════════════════════════════════╝
41+
# :: HEADER
42+
FROM scratch
43+
44+
# :: default arguments
45+
ARG TARGETPLATFORM \
46+
TARGETOS \
47+
TARGETARCH \
48+
TARGETVARIANT \
49+
APP_IMAGE \
50+
APP_NAME \
51+
APP_VERSION \
52+
APP_ROOT \
53+
APP_UID \
54+
APP_GID \
55+
APP_NO_CACHE
56+
57+
# :: default environment
58+
ENV APP_IMAGE=${APP_IMAGE} \
59+
APP_NAME=${APP_NAME} \
60+
APP_VERSION=${APP_VERSION} \
61+
APP_ROOT=${APP_ROOT}
62+
63+
# :: multi-stage
64+
COPY --from=distroless / /
65+
COPY --from=build ${APP_ROOT}/ /
66+
67+
# :: EXECUTE
68+
USER ${APP_UID}:${APP_GID}
69+
ENTRYPOINT ["/usr/local/bin/mc"]
70+
CMD ["version"]

0 commit comments

Comments
 (0)