Skip to content

Commit

Permalink
Merge pull request #1 from trueberryless-org/update-template-files
Browse files Browse the repository at this point in the history
[ci] sync template files
  • Loading branch information
trueberryless authored Mar 4, 2025
2 parents ef5cd8b + 3118014 commit 3f5ea82
Show file tree
Hide file tree
Showing 35 changed files with 1,755 additions and 389 deletions.
8 changes: 8 additions & 0 deletions .changeset/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Changesets

Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
with multi-package repos, or single-package repos to help you version and publish your code. You can
find the full documentation for it [in our repository](https://github.com/changesets/changesets)

We have a quick list of common questions to get you started engaging with this project in
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
14 changes: 14 additions & 0 deletions .changeset/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"$schema": "https://unpkg.com/@changesets/[email protected]/schema.json",
"changelog": [
"@changesets/changelog-github",
{ "repo": "trueberryless-org/releases" }
],
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
}
34 changes: 34 additions & 0 deletions .github/labeler.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# See https://github.com/actions/labeler/tree/v5

"🚨 action":
- changed-files:
- any-glob-to-any-file: .github/workflows/**

"πŸ“ changeset":
- changed-files:
- any-glob-to-any-file: "**/.changeset/**.{md,mdx}"

"🚧 config":
- changed-files:
- any-glob-to-any-file: "**/*config*.{js,ts,jsx,tsx,mjs,mts,json,yml,yaml,toml,cjs,cts}"

"βœ’οΈ documentation":
- changed-files:
- any-glob-to-any-file: "**/README.md"

"🌏 i18n":
- changed-files:
- all-globs-to-any-file: ["**/docs/**", "!**/docs/en/**"]

"πŸš€ manifest":
- changed-files:
- any-glob-to-any-file: "manifest*/**"

"πŸ“¦ package":
- changed-files:
- any-glob-to-any-file: "**/packages/**"
- any-glob-to-any-file: "**/package.json"

"🏯 styles":
- changed-files:
- any-glob-to-any-file: "**/*.{css,scss,sass,less,styl}"
208 changes: 208 additions & 0 deletions .github/workflows/deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
name: Deployment

on:
push:
branches: [main]
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request_target' && github.head_ref || github.ref }}
cancel-in-progress: true

env:
REGISTRY: docker.io
IMAGE_OWNER: trueberryless
IMAGE_NAME: releases
NODE_VERSION: 20

jobs:
changes:
name: Filter
runs-on: ubuntu-latest
outputs:
app: ${{ steps.filter.outputs.app }}
steps:
- name: Check out the repo
uses: actions/checkout@v4

- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
app:
- 'app/**'
changesets:
name: Changesets
runs-on: ubuntu-latest
outputs:
hasChangesets: ${{ steps.changesets.outputs.hasChangesets }}
permissions:
contents: write
pull-requests: write
steps:
- name: Generate GitHub App token
id: generate_token
uses: tibdex/[email protected]
with:
app_id: ${{ secrets.BOT_APP_ID }}
private_key: ${{ secrets.BOT_PRIVATE_KEY }}

- name: Checkout Repo
uses: actions/checkout@v4

- name: Setup PNPM
uses: pnpm/action-setup@v3

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: "pnpm"

- name: Install Dependencies
run: pnpm i

- name: Create Release Pull Request
id: changesets
uses: changesets/action@v1
with:
commit: "[ci] release"
title: "[ci] release"
env:
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

image-tag:
name: Image Tag
runs-on: ubuntu-latest
outputs:
IMAGE_TAG: ${{ env.IMAGE_TAG }}
steps:
- name: Check out the repo
uses: actions/checkout@v4

- name: Read version from package.json
id: get_version
run: |
VERSION=$(jq -r '.version' app/package.json)
echo "IMAGE_TAG=$VERSION" >> $GITHUB_ENV
deployment:
needs: [changes, changesets, image-tag]
if: >
(
needs.changesets.outputs.hasChangesets == 'false' &&
(
contains(github.event.head_commit.message, 'deploy') ||
contains(github.event.head_commit.message, '[ci] release')
)
) ||
github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Check out the repo
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup PNPM
uses: pnpm/action-setup@v3
with:
package_json_file: ./app/package.json

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: pnpm
cache-dependency-path: ./pnpm-lock.yaml

- name: Install dependencies
run: pnpm install
shell: bash
working-directory: ./app

- name: Build Website
run: pnpm run build
shell: bash
working-directory: ./app

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}

- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: |
${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:${{ needs.image-tag.outputs.IMAGE_TAG }}
${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:latest
labels: ${{ steps.meta.outputs.labels }}

- name: Update deployment.yaml file
run: |
yq eval '.spec.template.spec.containers[0].image = "${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:${{ needs.image-tag.outputs.IMAGE_TAG }}"' -i manifest/deployment.yaml
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: update deployment.json container image (automated)

release:
name: Release
needs: [image-tag, deployment]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Check out the repo
uses: actions/checkout@v4

- id: extract-changelog
uses: sean0x42/[email protected]
with:
file: app/CHANGELOG.md
pattern: ${{ needs.image-tag.outputs.IMAGE_TAG }}

- uses: ncipollo/release-action@v1
id: create_release
with:
tag: ${{ env.IMAGE_NAME }}-docs@${{ needs.image-tag.outputs.IMAGE_TAG }}
makeLatest: true
body: ${{ steps.extract-changelog.outputs.markdown }}
skipIfReleaseExists: true

- name: Check if release was created
id: check_release
run: |
if [ -z "${{ steps.create_release.outputs.html_url }}" ]; then
echo "RELEASE_SKIPPED=true" >> $GITHUB_ENV
else
echo "RELEASE_SKIPPED=false" >> $GITHUB_ENV
fi
- name: Discord notification
if: env.RELEASE_SKIPPED == 'false'
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_URL }}
uses: Ilshidur/[email protected]
with:
args: |
# ${{ env.IMAGE_NAME }}@${{ needs.image-tag.outputs.IMAGE_TAG }}
${{ steps.extract-changelog.outputs.markdown }}
37 changes: 37 additions & 0 deletions .github/workflows/format.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: autofix.ci
on:
pull_request:
push:
branches: [main]
permissions:
contents: read

jobs:
autofix:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup PNPM
uses: pnpm/action-setup@v3

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: "pnpm"

- name: Install Dependencies
run: pnpm i

- name: Run prettier
run: pnpm exec prettier . --write

# Optimize all PNGs with https://pngquant.org/
- run: sudo apt-get update && sudo apt-get install -y pngquant
- name: Run pngquant
run: |
shopt -s globstar
find . -name '*.png' -exec pngquant --ext .png --force 256 {} \;
- uses: autofix-ci/action@ff86a557419858bb967097bfc916833f5647fa8c
55 changes: 55 additions & 0 deletions .github/workflows/labeler.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: "Pull Request Labeler"
on:
- pull_request_target

jobs:
labeler:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- name: Generate GitHub App token
id: generate_token
uses: tibdex/[email protected]
with:
app_id: ${{ secrets.BOT_APP_ID }}
private_key: ${{ secrets.BOT_PRIVATE_KEY }}

- uses: actions/checkout@v4
- name: Ensure labels exist
env:
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
run: |
gh label delete "bug" --yes || true
gh label delete "documentation" --yes || true
gh label delete "duplicate" --yes || true
gh label delete "enhancement" --yes || true
gh label delete "good first issue" --yes || true
gh label delete "help wanted" --yes || true
gh label delete "invalid" --yes || true
gh label delete "question" --yes || true
gh label delete "wontfix" --yes || true
gh label create "🚨 action" --description "Changes in GitHub workflows or actions" --color "A75AD5" --force
gh label create "πŸ€– bot" --description "Automatically generated pull request" --color "0075CA" --force
gh label create "πŸ› bug" --description "Something isn't working" --color "D73A4A" --force
gh label create "πŸ“ changeset" --description "Contains changeset files" --color "304EF9" --force
gh label create "🚧 config" --description "Configuration file updates" --color "C0ED4F" --force
gh label create "βœ’οΈ documentation" --description "Documentation updates, like README changes" --color "66741D" --force
gh label create "πŸ” duplicate" --description "This issue or pull request already exists" --color "008672" --force
gh label create "⏫ enhancement" --description "New feature or request" --color "3C11FD" --force
gh label create "πŸ₯‡ good first issue" --description "Good for newcomers" --color "7057FF" --force
gh label create "πŸ†˜ help wanted" --description "Extra attention is needed" --color "BFD4F2" --force
gh label create "🌏 i18n" --description "Updates to internationalized docs, excluding English" --color "006B75" --force
gh label create "πŸ‘€ invalid" --description "This doesn't seem right" --color "E4E669" --force
gh label create "πŸš€ manifest" --description "Manifest-related changes" --color "96D3D7" --force
gh label create "πŸ“¦ package" --description "Updates in package structure or package.json" --color "F34A37" --force
gh label create "❓ question" --description "Further information is requested" --color "D876E3" --force
gh label create "🏯 styles" --description "Stylesheets or design updates" --color "550F5A" --force
gh label create "πŸ”’ wontfix" --description "This will not be worked on" --color "FFFFFF" --force
- uses: actions/labeler@v5
with:
configuration-path: .github/labeler.yaml
sync-labels: true
Loading

0 comments on commit 3f5ea82

Please sign in to comment.