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 }}" }'
0 commit comments