feat: semantic release

This commit is contained in:
Maurice Renck 2024-03-30 13:40:57 +01:00
parent f06f768adc
commit 9c877515c5
No known key found for this signature in database
GPG key ID: D0268340AC44A414
6 changed files with 6828 additions and 2 deletions

73
.github/workflows/main.yml vendored Normal file
View file

@ -0,0 +1,73 @@
name: CI
on:
push:
branches:
- main
jobs:
build:
name: Build docker image
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
packages: write
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Read .nvmrc
run: echo "NODE_VERSION=$(awk -F. '{print $1}' .nvmrc)" >> $GITHUB_OUTPUT
id: nvm
- name: Login to container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract Docker image metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=schedule
type=ref,event=pr
type=semver,pattern={{version}}
type=sha,prefix={{branch}}-,format=short
type=sha,prefix=,format=short
{{branch}}
- name: Build Docker image
uses: docker/build-push-action@v5
with:
context: .
labels: ${{ steps.meta.outputs.labels }}
push: true
tags: ${{ steps.meta.outputs.tags }}
build-args: |
NODE_VERSION=${{ steps.nvm.outputs.NODE_VERSION }}
release:
name: Release
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 20
- name: Install
run: npm install
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.PAT_SEMANTIC_RELEASE }}
run: npx semantic-release

44
.github/workflows/release.yml vendored Normal file
View file

@ -0,0 +1,44 @@
name: Release
on:
release:
types:
- created
env:
IMAGE_NAME: ${{ github.repository }}
REGISTRY: ghcr.io
jobs:
release:
name: Release
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
packages: write
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Login to container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Get version
id: version
uses: battila7/get-version-action@v2
- name: Add Semantic Version tag to Docker Image
uses: shrink/actions-docker-registry-tag@v4
with:
registry: ${{ env.REGISTRY }}
repository: ${{ env.IMAGE_NAME }}
target: 'main'
tags: |
${{ steps.version.outputs.version-without-v }}
${{ steps.version.outputs.major }}.${{ steps.version.outputs.minor }}
latest

44
.releaserc Normal file
View file

@ -0,0 +1,44 @@
{
"tagFormat": "v${version}",
"branches": [
"main"
],
"plugins": [
"@semantic-release/commit-analyzer",
{
"preset": "angular",
"releaseRules": [
{
"type": "docs",
"release": "patch"
},
{
"type": "refactor",
"release": "patch"
},
{
"type": "improvement",
"release": "patch"
}
]
},
"@semantic-release/release-notes-generator",
"@semantic-release/github",
[
"@semantic-release/changelog",
{
"changelogFile": "CHANGELOG.md"
}
],
[
"@semantic-release/git",
{
"assets": [
"package.json",
"CHANGELOG.md"
],
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
}
]
]
}

View file

@ -1,4 +1,6 @@
FROM node:21-bookworm-slim ARG NODE_VERSION=20
FROM node:${NODE_VERSION}-bookworm-slim
WORKDIR /usr/src/app WORKDIR /usr/src/app

6661
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -10,8 +10,10 @@
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@atproto/api": "^0.12.2", "@atproto/api": "^0.12.2",
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/git": "^10.0.1",
"axios": "^1.6.8", "axios": "^1.6.8",
"dotenv": "^16.4.5", "dotenv": "^16.4.5",
"mastodon-api": "^1.3.0" "mastodon-api": "^1.3.0"
} }
} }