Skip to content

Commit f254a28

Browse files
committed
[upgrade] to latest workflows
1 parent 2dcd919 commit f254a28

File tree

2 files changed

+116
-0
lines changed

2 files changed

+116
-0
lines changed

.github/workflows/cron.update.yml

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
name: cron-update
2+
3+
on:
4+
workflow_dispatch:
5+
schedule:
6+
- cron: "0 5 * * *"
7+
8+
jobs:
9+
cron-update:
10+
runs-on: ubuntu-latest
11+
12+
permissions:
13+
actions: read
14+
contents: write
15+
16+
steps:
17+
- name: init / checkout
18+
uses: actions/checkout@85e6279cec87321a52edac9c87bce653a07cf6c2
19+
with:
20+
ref: 'master'
21+
fetch-depth: 0
22+
23+
- name: cron-update / get latest version
24+
run: |
25+
echo "LATEST_VERSION=$(curl -s https://api.github.com/repos/11notes/fork-py-kms/releases/latest | jq -r '.tag_name' | sed 's/v//')" >> "${GITHUB_ENV}"
26+
echo "LATEST_TAG=$(git describe --abbrev=0 --tags `git rev-list --tags --max-count=1` | sed 's/v//')" >> "${GITHUB_ENV}"
27+
28+
- name: cron-update / setup node
29+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
30+
with:
31+
node-version: '20'
32+
- run: npm i semver
33+
34+
- name: cron-update / compare latest with current version
35+
uses: actions/github-script@62c3794a3eb6788d9a2a72b219504732c0c9a298
36+
with:
37+
script: |
38+
const { existsSync, readFileSync, writeFileSync } = require('node:fs');
39+
const { resolve } = require('node:path');
40+
const { inspect } = require('node:util');
41+
const semver = require('semver')
42+
const repository = {dot:{}};
43+
44+
try{
45+
const path = resolve('.json');
46+
if(existsSync(path)){
47+
try{
48+
repository.dot = JSON.parse(readFileSync(path).toString());
49+
}catch(e){
50+
throw new Error('could not parse .json');
51+
}
52+
}else{
53+
throw new Error('.json does not exist');
54+
}
55+
}catch(e){
56+
core.setFailed(e);
57+
}
58+
59+
const latest = semver.valid(semver.coerce('${{ env.LATEST_VERSION }}'));
60+
const current = semver.valid(semver.coerce(repository.dot.semver.version));
61+
const tag = semver.valid(semver.coerce('${{ env.LATEST_TAG }}'));
62+
63+
if(latest && latest !== current){
64+
core.info(`new ${semver.diff(current, latest)} release found (${latest})!`)
65+
repository.dot.semver.version = latest;
66+
if(tag){
67+
core.exportVariable('WORKFLOW_NEW_TAG', semver.inc(tag, semver.diff(current, latest)));
68+
}
69+
70+
if(repository.dot.semver?.latest){
71+
repository.dot.semver.latest = repository.dot.semver.version;
72+
}
73+
74+
if(repository.dot?.readme?.comparison?.image){
75+
repository.dot.readme.comparison.image = repository.dot.readme.comparison.image.replace(current, repository.dot.semver.version);
76+
}
77+
78+
try{
79+
writeFileSync(resolve('.json'), JSON.stringify(repository.dot, null, 2));
80+
core.exportVariable('WORKFLOW_AUTO_UPDATE', true);
81+
}catch(e){
82+
core.setFailed(e);
83+
}
84+
}else{
85+
core.info('no new release found');
86+
}
87+
88+
core.info(inspect(repository.dot, {showHidden:false, depth:null, colors:true}));
89+
90+
- name: cron-update / checkout
91+
id: checkout
92+
if: env.WORKFLOW_AUTO_UPDATE == 'true'
93+
run: |
94+
git config user.name "github-actions[bot]"
95+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
96+
git add .json
97+
git commit -m "[upgrade] ${{ env.LATEST_VERSION }}"
98+
git push origin HEAD:master
99+
100+
- name: cron-update / tag
101+
if: env.WORKFLOW_AUTO_UPDATE == 'true' && steps.checkout.outcome == 'success'
102+
run: |
103+
SHA256=$(git rev-list --branches --max-count=1)
104+
git tag -a v${{ env.WORKFLOW_NEW_TAG }} -m "v${{ env.WORKFLOW_NEW_TAG }}" ${SHA256}
105+
git push --follow-tags
106+
107+
- name: cron-update / build docker image
108+
if: env.WORKFLOW_AUTO_UPDATE == 'true' && steps.checkout.outcome == 'success'
109+
uses: the-actions-org/workflow-dispatch@3133c5d135c7dbe4be4f9793872b6ef331b53bc7
110+
with:
111+
workflow: docker.yml
112+
wait-for-completion: false
113+
token: "${{ secrets.REPOSITORY_TOKEN }}"
114+
inputs: '{ "release":"true", "readme":"true" }'
115+
ref: "v${{ env.WORKFLOW_NEW_TAG }}"

.github/workflows/docker.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ jobs:
127127
docker.app.suffix = docker.image.suffix;
128128
129129
// setup tags
130+
docker.image.tags.push('rolling');
130131
if(opt.input?.etc?.dockerfile !== 'arch.dockerfile' && opt.input?.etc?.tag){
131132
docker.image.tags.push(`${context.sha.substring(0,7)}`);
132133
docker.image.tags.push(opt.input.etc.tag);

0 commit comments

Comments
 (0)