.github/workflows/build.yml 🔗
@@ -0,0 +1,9 @@
+name: build
+on: [push, pull_request]
+
+jobs:
+ build:
+ uses: charmbracelet/meta/.github/workflows/build.yml@main
+ with:
+ go-version: ""
+ go-version-file: ./go.mod
Carlos Alexandro Becker created
.github/workflows/build.yml | 9 +++
.github/workflows/dependabot-sync.yml | 17 ++++++
.github/workflows/lint-sync.yml | 14 +++++
.github/workflows/lint.yml | 8 ++
.github/workflows/nightly.yml | 35 ++++++++++++
.github/workflows/release.yml | 38 +++++++++++++
.goreleaser.yaml | 79 +++++++++++++++++++++++++++++
7 files changed, 200 insertions(+)
@@ -0,0 +1,9 @@
+name: build
+on: [push, pull_request]
+
+jobs:
+ build:
+ uses: charmbracelet/meta/.github/workflows/build.yml@main
+ with:
+ go-version: ""
+ go-version-file: ./go.mod
@@ -0,0 +1,17 @@
+name: dependabot-sync
+on:
+ schedule:
+ - cron: "0 0 * * 0" # every Sunday at midnight
+ workflow_dispatch: # allows manual triggering
+
+permissions:
+ contents: write
+ pull-requests: write
+
+jobs:
+ dependabot-sync:
+ uses: charmbracelet/meta/.github/workflows/dependabot-sync.yml@main
+ with:
+ repo_name: ${{ github.event.repository.name }}
+ secrets:
+ gh_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
@@ -0,0 +1,14 @@
+name: lint-sync
+on:
+ schedule:
+ # every Sunday at midnight
+ - cron: "0 0 * * 0"
+ workflow_dispatch: # allows manual triggering
+
+permissions:
+ contents: write
+ pull-requests: write
+
+jobs:
+ lint:
+ uses: charmbracelet/meta/.github/workflows/lint-sync.yml@main
@@ -0,0 +1,8 @@
+name: lint
+on:
+ push:
+ pull_request:
+
+jobs:
+ lint:
+ uses: charmbracelet/meta/.github/workflows/lint.yml@main
@@ -0,0 +1,35 @@
+name: deploy development
+
+on:
+ push:
+ branches:
+ - main
+
+jobs:
+ goreleaser:
+ uses: charmbracelet/meta/.github/workflows/nightly.yml@main
+ with:
+ go_version: stable
+ upload_artifacts: false
+ secrets:
+ docker_username: ${{ secrets.DOCKERHUB_USERNAME }}
+ docker_token: ${{ secrets.DOCKERHUB_TOKEN }}
+ goreleaser_key: ${{ secrets.GORELEASER_KEY }}
+ gh_pat: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
+
+ deploy:
+ name: Run deploy workflow
+ runs-on: ubuntu-latest
+ needs: [goreleaser]
+ steps:
+ - uses: benc-uk/workflow-dispatch@v1
+ with:
+ workflow: Update
+ repo: charmbracelet/infra-dev
+ ref: main
+ token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
+ inputs: |
+ {
+ "app": "fur
+ "image": "ghcr.io/charmbracelet/fur:${{ github.sha }}-devel"
+ }
@@ -0,0 +1,38 @@
+name: deploy production
+
+on:
+ push:
+ tags:
+ - v*.*.*
+
+concurrency:
+ group: goreleaser
+ cancel-in-progress: true
+
+jobs:
+ goreleaser:
+ uses: charmbracelet/meta/.github/workflows/goreleaser.yml@main
+ with:
+ go_version: stable
+ secrets:
+ docker_username: ${{ secrets.DOCKERHUB_USERNAME }}
+ docker_token: ${{ secrets.DOCKERHUB_TOKEN }}
+ goreleaser_key: ${{ secrets.GORELEASER_KEY }}
+ gh_pat: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
+
+ deploy:
+ name: Run deploy workflow
+ runs-on: ubuntu-latest
+ needs: [goreleaser]
+ steps:
+ - uses: benc-uk/workflow-dispatch@v1
+ with:
+ workflow: Update
+ repo: charmbracelet/infra-prod
+ ref: main
+ token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
+ inputs: |
+ {
+ "app": "fur",
+ "image": "ghcr.io/charmbracelet/fur:${{ github.ref_name }}"
+ }
@@ -0,0 +1,79 @@
+# This is an example .goreleaser.yml file with some sensible defaults.
+# Make sure to check the documentation at https://goreleaser.com
+
+# The lines below are called `modelines`. See `:help modeline`
+# Feel free to remove those if you don't want/need to use them.
+# yaml-language-server: $schema=https://goreleaser.com/static/schema-pro.json
+# vim: set ts=2 sw=2 tw=0 fo=cnqoj
+
+version: 2
+pro: true
+
+before:
+ hooks:
+ - go mod tidy
+
+builds:
+ - binary: fur
+ env:
+ - CGO_ENABLED=0
+ main: .
+ ldflags: -s -w -X main.Version=v{{ .Version }} -X main.CommitSHA={{ .Commit }} -X main.CommitDate={{ .CommitDate }}
+ targets:
+ - linux_amd64
+ - linux_arm64
+
+checksum:
+ name_template: "checksums.txt"
+
+snapshot:
+ version_template: "{{ incpatch .Version }}-snapshot"
+
+nightly:
+ version_template: "{{ incpatch .Version }}-devel"
+
+dockers:
+ - image_templates:
+ - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-arm64"
+ goarch: arm64
+ build_flag_templates:
+ - --platform=linux/arm64
+ - --label=org.opencontainers.image.title={{ .ProjectName }}
+ - --label=org.opencontainers.image.source={{ .GitURL }}
+ - --label=org.opencontainers.image.version=v{{ .Version }}
+ - --label=org.opencontainers.image.created={{ .Date }}
+ - --label=org.opencontainers.image.revision={{ .FullCommit }}
+ - --label=org.opencontainers.image.licenses=MIT
+ dockerfile: goreleaser.dockerfile
+ use: buildx
+ - image_templates:
+ - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-amd64"
+ goarch: amd64
+ build_flag_templates:
+ - --platform=linux/amd64
+ - --label=org.opencontainers.image.title={{ .ProjectName }}
+ - --label=org.opencontainers.image.source={{ .GitURL }}
+ - --label=org.opencontainers.image.version=v{{ .Version }}
+ - --label=org.opencontainers.image.created={{ .Date }}
+ - --label=org.opencontainers.image.revision={{ .FullCommit }}
+ - --label=org.opencontainers.image.licenses=MIT
+ dockerfile: goreleaser.dockerfile
+ use: buildx
+
+docker_manifests:
+ - name_template: "{{ if not .IsNightly }}ghcr.io/charmbracelet/{{ .ProjectName }}:latest{{ end }}"
+ image_templates:
+ - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-amd64"
+ - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-arm64"
+ - name_template: "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}"
+ image_templates:
+ - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-amd64"
+ - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-arm64"
+ - name_template: "ghcr.io/charmbracelet/{{ .ProjectName }}:{{ .Commit }}{{ if .IsNightly }}-devel{{ end }}"
+ image_templates:
+ - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-amd64"
+ - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-arm64"
+ - name_template: "{{ if .IsNightly }}ghcr.io/charmbracelet/{{ .ProjectName }}:nightly{{ end }}"
+ image_templates:
+ - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-amd64"
+ - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-arm64"