Il s'agit d'un enregistrement d'utilisateurs de Mercurial commençant à utiliser Git et pris en charge par GitHub.
Je crée des outils exclusivement avec Go.
Dans cet article, en tant que méthode de libération automatique avec le mécanisme de CI, Utilisez GoReleaser sur GitHub Actions pour définir le binaire à télécharger vers les versions GitHub pour chaque balise.
master→main
Si vous ne le faites pas séparément, cela n'affectera pas le travail ultérieur et le succès des actions GitHub.
Renommez la branche par défaut de Git (GitHub) [https://qiita.com/e_chan1007/items/ad3e849b7e04fcf42fad), mais changez le nom de la branche par défaut en main.
Dans l'article ci-dessus, j'ai configuré pour changer de branche localement, puis je le pousse pour changer la branche par défaut sur GitHub. Je n'oublie pas de changer de succursale localement, donc je pense que c'est une bonne façon de le faire. __ Dans tous les cas, il semble que la branche par défaut de GitHub ne puisse se faire que sur le site GitHub. __
Si vous dites "vous n'avez besoin de changer que sur GitHub pour le moment", cela sera complété sur le site GitHub. (Procédure ci-dessous) Cependant, puisque nous modifierons le fichier en relation avec GitHub Actions après cela, vous n'avez pas à vous soucier de le compléter sur le site.
↓
Entrez "principal"
À ce stade, la branche par défaut n'a pas encore changé. (↓ "default" est attaché au master)
Afficher une liste de succursales
↓
Cliquez sur "Modifier la branche par défaut"
↓
Basculez vers le menu principal et appuyez sur le bouton "Mettre à jour" à côté
↓
Revenez à la page de la liste des branches et cliquez sur l'icône de la corbeille sous le maître
↓
Sera comme ça
git pull
git switch main
Ceci conclut la procédure de changement de succursale.
GitHub Actions
Créez les deux fichiers suivants.
Emplacement du fichier à créer
Voir ci-dessous pour le contenu du fichier.
.github/workflows/release.yml
Il semble que le nom du fichier ne doit pas nécessairement être release.yml séparément.
name: release
on:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+"
jobs:
goreleaser:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Go
uses: actions/setup-go@v2
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v2
with:
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Il est écrit exclusivement en utilisant uses: xxx
, mais vous pouvez utiliser des commandes comme sur le shell avec run: xxx
.
GoReleaser n'autorise pas les conditions git dirty, donc si vous téléchargez et utilisez l'outil avec go get, vous devrez peut-être faire run: go mod tidy
avant d'exécuter GoReleaser.
L'action est exécutée au moment de git push --tags
.
Il semble que GoReleaser ne peut pas être publié plusieurs fois pour le même tag.
De plus, si je mets la description au début sur on: push: branches: --main
(sans saut de ligne), pour une raison quelconque, Action n'a pas été exécutée en premier lieu.
project_name: vvin
env:
- GO111MODULE=on
before:
hooks:
- go mod tidy
builds:
- binary: vvin
flags:
- -trimpath
ldflags:
- -s -w
- -X main.Version={{.Version}}
- -X main.Revision={{.ShortCommit}}
env:
- CGO_ENABLED=0
goos:
- windows
- darwin
- linux
goarch:
- amd64
- 386
hooks:
post: upx --lzma '{{ .Path }}'
archives:
- name_template: '{{ .ProjectName }}_v{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
replacements:
darwin: darwin
linux: linux
windows: windows
386: 386
amd64: amd64
format_overrides:
- goos: windows
format: zip
release:
prerelease: auto
: heart_eyes: Parmi les outils de publication, je suis reconnaissant de pouvoir ajouter -trimpath
et d'exécuter upx.
Si la balise git est v1.2.3
,{{.Version}}
semble être 1.2.3
.
Vous pouvez également faire goreleaser init
pour créer un modèle pour .goreleaser.yml
.
Bien qu'il soit différent du contenu ci-dessus.
Si vous souhaitez inclure diverses choses dans la version des versions de GitHub, ajoutez-les à archives:
.
archives:
- name_template: '{{ .ProjectName }}_v{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
replacements:
:
files:
- LICENSE*
- README*
- sample.bat
La valeur par défaut pour files:
semble être LICENSE *
, README *
.
Cependant, si vous écrivez files:
comme ci-dessus, ce paramètre semble disparaître, vous devez donc également inclure la valeur par défaut.
push
Après avoir validé les modifications ci-dessus, git push
, ajoutez une nouvelle balise, ainsi que git push --tags
.
Les balises sont attribuées au format «v {Major}. {Minor}. {Patch}». Comme spécifié dans release.yml défini ci-dessus, il ne sera exécuté que lorsqu'une balise de ce format est poussée.
(Il y a peu de fichiers, mais j'ai changé le .goreleaser.yml ci-dessus en binaire pour Windows uniquement)
Quand j'utilisais Mercurial sur BitBucket, j'utilisais CircleCI. Depuis que je suis passé à GitHub, je voulais expérimenter les actions GitHub, alors j'ai changé.
J'utilise CircleCI dans mon plan gratuit, mais les actions GitHub prennent maintenant environ 30 secondes au lieu de 10 secondes.
De plus, je pense que c'est une partie liée aux spécifications GoReleaser, mais il semble qu'il ne puisse pas être mis à niveau avec succès vers les versions sans changer la balise. C'est un peu stressant si vous ne voulez pas changer la balise car la fonction n'a pas changé ...
Recommended Posts