Skip to content

Commit

Permalink
Merge pull request #7 from infralovers/refactoring-workflows
Browse files Browse the repository at this point in the history
refactoring to reusable workflow files
  • Loading branch information
mabunixda authored Apr 18, 2024
2 parents 78d1cca + eefc94c commit 76dd314
Show file tree
Hide file tree
Showing 6 changed files with 187 additions and 54 deletions.
64 changes: 10 additions & 54 deletions .github/workflows/changelog-automation.yml
Original file line number Diff line number Diff line change
@@ -1,65 +1,21 @@
name: Infralovers Changelog Automation
---
name: "Infralovers Changelog Automation template"

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
# push:
# branches: [ "main" ]
# pull_request:
# branches: [ "main" ]

workflow_call:


jobs:
prebuild:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.semrel.outputs.version }}
steps:
- uses: actions/checkout@v4

- name: Check pre-commit presence
id: precommit_exists
uses: andstor/file-existence-action@v1
with:
files: ".pre-commit-config.yaml"

- uses: actions/setup-python@v5
if: steps.precommit_exists.outputs.files_exists == 'true'

- uses: pre-commit/[email protected]
if: steps.precommit_exists.outputs.files_exists == 'true'

- uses: go-semantic-release/action@v1
if: github.event_name != 'pull_request'
id: semrel
with:
github-token: ${{ secrets.BOT_ACCESS_TOKEN }}
prepend: true
dry: true
uses: ./.github/workflows/pre-commit.yml
secrets: inherit

release:
needs: [ prebuild ]
if: github.event_name != 'pull_request'
runs-on: ubuntu-latest
steps:

- uses: actions/checkout@v4
with:
token: ${{ secrets.BOT_ACCESS_TOKEN }} # needed for push to protected branch

- uses: go-semantic-release/action@v1
if: needs.prebuild.outputs.version != ''
id: generate_changelog
with:
github-token: ${{ secrets.BOT_ACCESS_TOKEN }}
prepend: true
changelog-file: CHANGELOG.md

- name: Update changelog
uses: stefanzweifel/git-auto-commit-action@v5
if: steps.generate_changelog.outputs.version != ''
with:
commit_user_name: infralovers-machine
commit_user_email: [email protected]
commit_message: 'chore(ci): commit changes from go-semantic-release'
file_pattern: CHANGELOG.md
uses: ./.github/workflows/release.yml
secrets: inherit
13 changes: 13 additions & 0 deletions .github/workflows/changelog.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
name: Infralovers Changelog Automation

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]

jobs:
changelog-automation:
uses: ./.github/workflows/changelog-automation.yml
secrets: inherit
18 changes: 18 additions & 0 deletions .github/workflows/pr-valid.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---

name: 'Validate PR'

on:
pull_request_target:
types:
- opened
- edited
- synchronize
- reopened
- assigned


jobs:
changelog-automation:
uses: ./.github/workflows/pre-validation.yml
secrets: inherit
71 changes: 71 additions & 0 deletions .github/workflows/pr-validation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
---
name: 'Validate PR template'

on:
# pull_request_target:
# types:
# - opened
# - edited
# - synchronize

workflow_call:

permissions:
pull-requests: write
statuses: write

jobs:
main:
name: Validate PR title
runs-on: ubuntu-latest
steps:
# Please look up the latest version from
# https://github.com/amannn/action-semantic-pull-request/releases
- uses: amannn/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.BOT_ACCESS_TOKEN }}
with:
# Configure which types are allowed.
# Default: https://github.com/commitizen/conventional-commit-types
#
# The following terminology helps to understand the configuration options:
#
# feat(ui): Add `Button` component
# ^ ^ ^
# | | |__ Subject
# | |_______ Scope
# |____________ Type
types: |
fix
feat
docs
ci
chore
# Configure which scopes are allowed (newline-delimited).
# These are regex patterns auto-wrapped in `^ $`.
# scopes: |
# EXAMPLE-\d+
# Configure that a scope must always be provided.
requireScope: false
# Configure additional validation for the subject based on a regex.
# This example ensures the subject doesn't start with an uppercase character.
subjectPattern: ^[A-Z].+$
# If `subjectPattern` is configured, you can use this property to override
# the default error message that is shown when the pattern doesn't match.
# The variables `subject` and `title` can be used within the message.
subjectPatternError: |
The subject "{subject}" found in the pull request title "{title}"
didn't match the configured pattern. Please ensure that the subject
starts with an uppercase character.
# For work-in-progress PRs you can typically use draft pull requests
# from Github. However, private repositories on the free plan don't have
# this option and therefore this action allows you to opt-in to using the
# special "[WIP]" prefix to indicate this state. This will avoid the
# validation of the PR title and the pull request checks remain pending.
# Note that a second check will be reported if this is enabled.
wip: true
# When using "Squash and merge" on a PR with only one commit, GitHub
# will suggest using that commit message instead of the PR title for the
# merge commit, and it's easy to commit this by mistake. Enable this option
# to also validate the commit message for one commit PRs.
validateSingleCommit: false
43 changes: 43 additions & 0 deletions .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---

name: Pre-Commit validation

on:
# pull_request:
# branches:
# - main
workflow_call:
outputs:
version:
description: 'The version of the release'
value: ${{ jobs.pre-commit.outputs.version }}

jobs:
pre-commit:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.semrel.outputs.version }}
steps:
- uses: actions/checkout@v4

- name: Check pre-commit presence
id: precommit_exists
uses: andstor/file-existence-action@v3
with:
files: ".pre-commit-config.yaml"

- uses: actions/setup-python@v5
if: steps.precommit_exists.outputs.files_exists == 'true'
with:
python-version: '3.10'

- uses: pre-commit/[email protected]
if: steps.precommit_exists.outputs.files_exists == 'true'

- uses: go-semantic-release/action@v1
if: github.event_name != 'pull_request'
id: semrel
with:
github-token: ${{ secrets.BOT_ACCESS_TOKEN }}
prepend: true
dry: true
32 changes: 32 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---

name: Release Automation template"

on:
workflow_call:

# workflow_dispatch:
# push:
# branches:
# - main

jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: go-semantic-release/action@v1
if: github.event_name != 'pull_request'
id: generate_changelog
with:
semantic_version: 23.0.2
extra_plugins: |
@semantic-release/[email protected]
@semantic-release/[email protected]
[email protected]
github-token: ${{ secrets.BOT_ACCESS_TOKEN }}
prepend: true
changelog-file: CHANGELOG.md

0 comments on commit 76dd314

Please sign in to comment.