Skip to content

Commit

Permalink
ci: setup new Github workflow for releasing (#4)
Browse files Browse the repository at this point in the history
* ci: setup new Github workflow for releasing

* ci: add script to sync labels on the repository

* ci: allow script to be executed

* ci: fix typo

* ci: add paths on workflows

* docs: provide explanation about how to release

* docs: fix typo
  • Loading branch information
Tchoupinax authored Nov 25, 2024
1 parent b5e64cf commit 004f4f7
Show file tree
Hide file tree
Showing 11 changed files with 236 additions and 0 deletions.
47 changes: 47 additions & 0 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
version: v1
labels:
- label: "semver:major"
sync: true # remove label if match failed, default: false
matcher:
title: ".*BREAKING.*"

- label: "semver:minor"
sync: true # remove label if match failed, default: false
matcher:
title: "^feat(?!.*BREAKING).*"
files:
any: ["app/*"]
all: ["!app/config/**"]
count:
gte: 1
lte: 1000

- label: "semver:patch"
sync: true # remove label if match failed, default: false
matcher:
title: "^fix(?!.*BREAKING).*"

- label: "maintenance"
sync: true # remove label if match failed, default: false
matcher:
title: "^chore(?!.*BREAKING).*"

- label: "CI/CD"
sync: true # remove label if match failed, default: false
matcher:
files:
any:
- ".github/**"

- label: "docs"
sync: true # remove label if match failed, default: false
matcher:
files:
any:
- "**/*.md"

checks:
- context: "Ready to merge"
description: "Disable merging when 'draft' label is set."
labels:
none: ["draft"]
33 changes: 33 additions & 0 deletions .github/release-drafter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name-template: "Version $RESOLVED_VERSION 🎉"
tag-template: "v$RESOLVED_VERSION"
change-template: "- (#$NUMBER) $TITLE — by @$AUTHOR 🫶"
change-title-escapes: '\<*_&'

categories:
- title: "🚀 Features"
labels:
- "semver:minor"
- title: "🐛 Bug Fixes"
labels:
- "semver:patch"
- title: "🧰 Maintenance"
labels:
- "maintenance"
- title: "👷 Build System"
labels:
- "CI/CD"

version-resolver:
major:
labels:
- "semver:major"
minor:
labels:
- "semver:minor"
patch:
labels:
- "semver:patch"
default: "patch"

template: |
$CHANGES
22 changes: 22 additions & 0 deletions .github/update-labels.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/bin/bash

REPO_NAME="iggy-rs/setup-iggy"
API_URL="https://api.github.com/repos/$REPO_NAME/labels"

create_label() {
local name="$1"
local color="$2"
local description="$3"

curl -X POST -H "Authorization: token $GITHUB_TOKEN" -H "Accept: application/vnd.github.v3+json" \
-d '{"name": "'"$name"'", "color": "'"$color"'", "description": "'"$description"'"}' \
"$API_URL"
}

create_label "CI/CD" "93ecdb" "Pull requests bring CI/CD improvements."
create_label "docs" "0075ca" "Improvements or additions to documentation."
create_label "duplicate" "cfd3d7" "This issue or pull request already exists."
create_label "maintenance" "ed4d86" "Maintenance work."
create_label "semver:major" "8151c5" "Label for pull request that brings a major (BREAKING) change."
create_label "semver:minor" "8af85b" "Label for pull request that brings a minor change."
create_label "semver:patch" "fef2c0" "Label for pull request that brings a patch change."
2 changes: 2 additions & 0 deletions .github/workflows/action-self-test.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
name: "GitHub Action: Self-Test"
on:
pull_request:
paths:
- "src/**/.ts"

jobs:
setup-iggy:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
name: Checks
on:
pull_request:
paths:
- "src/**/.ts"

jobs:
checks:
Expand Down
23 changes: 23 additions & 0 deletions .github/workflows/create-release-draft.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Update release draft
on:
push:
branches:
- master

jobs:
semantic-release:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write

steps:
- uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ secrets.DEPLOY_APP_ID }}
private-key: ${{ secrets.DEPLOY_APP_KEY }}

- uses: release-drafter/release-drafter@v6
env:
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
27 changes: 27 additions & 0 deletions .github/workflows/merge-checks.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Merge checks
on:
pull_request:
types: [opened, reopened, synchronize, labeled, unlabeled]

jobs:
check-labels:
runs-on: ubuntu-latest
permissions:
checks: write
contents: read
issues: write
pull-requests: write
statuses: write

steps:
- uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ secrets.DEPLOY_APP_ID }}
private-key: ${{ secrets.DEPLOY_APP_KEY }}

# https://github.com/fuxingloh/multi-labeler
- name: labels
uses: fuxingloh/multi-labeler@v4
with:
github-token: ${{ steps.app-token.outputs.token }}
1 change: 1 addition & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ jobs:

- uses: actions/checkout@v4
with:
fetch-depth: 1
token: ${{ steps.app-token.outputs.token }}
# Make sure the value of GITHUB_TOKEN will not be persisted in repo's config
persist-credentials: false
Expand Down
41 changes: 41 additions & 0 deletions .github/workflows/tag.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Write changelog
on:
push:
tags:
- "v*"

jobs:
semantic-release:
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ secrets.DEPLOY_APP_ID }}
private-key: ${{ secrets.DEPLOY_APP_KEY }}

- uses: actions/checkout@v4
with:
fetch-depth: 1
token: ${{ steps.app-token.outputs.token }}

- name: Update CHANGELOG
id: changelog
uses: requarks/changelog-action@v1
with:
token: ${{ steps.app-token.outputs.token }}
tag: ${{ github.ref_name }}
restrictToTypes: ""
reverseOrder: true
excludeTypes: ""
excludeScopes: ""

- name: Commit CHANGELOG.md
uses: stefanzweifel/git-auto-commit-action@v5
with:
branch: master
commit_message: "docs: update CHANGELOG.md for ${{ github.ref_name }} [skip ci]"
file_pattern: CHANGELOG.md
30 changes: 30 additions & 0 deletions .github/workflows/update-labels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Update repository labels
on:
pull_request:
paths:
- ".github/workflows/uptdate-label.yml"
- ".github/update-labels.sh"

jobs:
checks:
name: Update labels
runs-on: ubuntu-latest

steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 1

- uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ secrets.DEPLOY_APP_ID }}
private-key: ${{ secrets.DEPLOY_APP_KEY }}

- name: Call script
env:
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
run: |
chmod +x .github/update-labels.sh
.github/update-labels.sh
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,11 @@ jobs:
- name: Print iggy version
run: iggy-server --version
```
## Contributions
Any pull request is welcome!
### Maintainers
Every pull request should be reviewed and merged. Once it's done, you can trigger a release at any time going to [releases](https://github.com/iggy-rs/setup-iggy/releases). A draft release is created and updated with new pull request. You can `edit` the release, then `publish` it. It will publish the release and create the adapted tag. It's done!

0 comments on commit 004f4f7

Please sign in to comment.