The pinned action versions had drifted apart between the container image repositories, which made it hard to tell whether a workflow failure was caused by a local change or by an outdated action. All actions are now pinned to the commit sha of their latest upstream release, so every repository runs the same toolchain.
74 lines
2.3 KiB
YAML
74 lines
2.3 KiB
YAML
name: Auto release
|
|
|
|
on:
|
|
push:
|
|
branches: [ "master" ]
|
|
paths:
|
|
- Makefile
|
|
|
|
env:
|
|
GIT_EMAIL: noreply@cryptic.systems
|
|
GIT_USER: CSRBot
|
|
|
|
jobs:
|
|
tag_on_change:
|
|
permissions:
|
|
actions: write
|
|
contents: write
|
|
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Check if MARKDOWNLINT_VERSION line changed
|
|
id: check_change
|
|
run: |
|
|
echo "changed=false" >> $GITHUB_OUTPUT
|
|
|
|
for file in Makefile; do
|
|
if git diff HEAD~1 HEAD -- "${file}" | grep --quiet '^[+-]MARKDOWNLINT_VERSION'; then
|
|
echo "MARKDOWNLINT_VERSION line changed."
|
|
echo "changed=true" >> $GITHUB_OUTPUT
|
|
break
|
|
fi
|
|
done
|
|
|
|
- name: Stop if no change detected
|
|
if: steps.check_change.outputs.changed == 'false'
|
|
run: echo "No MARKDOWNLINT_VERSION change. Exiting..."
|
|
|
|
- name: Create and push new tag
|
|
id: create_tag
|
|
if: steps.check_change.outputs.changed == 'true'
|
|
run: |
|
|
defined_tag="$(grep --only-matching --perl-regexp 'MARKDOWNLINT_VERSION\?=v?[\d]*(\.[\d]*){0,2}' Makefile | cut --delimiter='=' --fields=2)"
|
|
|
|
echo "defined_tag=${defined_tag}" >> $GITHUB_OUTPUT
|
|
echo "New tag: ${defined_tag}"
|
|
|
|
git config --local user.name "${GIT_USER}"
|
|
git config --local user.email "${GIT_EMAIL}"
|
|
git tag -a "${defined_tag}" -m "${defined_tag}"
|
|
git push origin "${defined_tag}"
|
|
|
|
- name: Trigger "Push tagged images" workflow
|
|
if: steps.check_change.outputs.changed == 'true'
|
|
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
|
with:
|
|
script: |
|
|
const workflowFileName = 'release.yaml';
|
|
const defaultBranch = context.payload.repository.default_branch;
|
|
const definedTag = '${{ steps.create_tag.outputs.defined_tag }}';
|
|
|
|
await github.rest.actions.createWorkflowDispatch({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
workflow_id: workflowFileName,
|
|
ref: defaultBranch,
|
|
inputs: {
|
|
tag: definedTag
|
|
}
|
|
});
|