Utgivelser
En utgivelse er et tagget øyeblikksbilde av et repository, eventuelt med vedlagte binærartefakter, tarballer eller andre filer. Utgivelser vises på frem.sh/<org>/<repo>/releases og gir en stabil, lesbar oversikt over hva som ble levert og når. De er atskilt fra pakkeregisteret: utgivelser inneholder versjonerte øyeblikksbilder av kildekoden og byggeartefakter, mens containerimager og pakker for språkøkosystemer hører hjemme i pakkeregisteret.
Opprette en utgivelse fra grensesnittet
- Gå til Repository → Utgivelser → Ny utgivelse (
frem.sh/<org>/<repo>/releases/new). - I feltet Tagnavn velger du en eksisterende tag eller skriver inn et nytt tagnavn for å opprette en på målbranchen eller -commiten. Semantisk versjonering (
v1.0.0,v2.3.1-rc.1) anbefales. - Sett Tittel på utgivelsen. Den vises som overskrift på utgivelsessiden.
- Skriv utgivelsesnotater i tekstfeltet. Markdown støttes. Ta med et sammendrag av endringsloggen, bakoverinkompatible endringer, instruksjoner for oppgradering og kreditering av bidragsytere.
- Legg ved ressurser ved å dra filer til opplastingsområdet (Slipp filer her eller klikk for å laste opp.) eller klikke på det. Det er ingen grense for antall ressurser; størrelsesgrensen per ressurs er 2 GB.
- Kryss av for Merk som forhåndsutgivelse for utgivelseskandidater, betaversjoner eller noe som ikke er klart for allmenn bruk. Forhåndsutgivelser vises for seg i utgivelseslisten og utelates fra markeringen av «siste utgivelse».
- Klikk Publiser utgivelse for å gjøre den offentlig med en gang, eller Lagre utkast for å fullføre den senere. Utkast er bare synlige for eiere av organisasjonen og medlemmer med Write- eller Admin-tilgang til repositoryet.
Opprette en utgivelse fra en workflow
Automatiser utgivelser ved å utløse dem på pushede tagger. Dette er standardmønsteret for prosjekter som bygger binærfiler i CI og vil legge dem ved utgivelsen automatisk.
on:
push:
tags:
- 'v*'
jobs:
release:
runs-on: fremforge
steps:
- uses: actions/checkout@v4
- name: Build
run: make build
- name: Create release
uses: https://code.forgejo.org/actions/forgejo-release@v2
with:
direction: upload
release-dir: dist/
token: ${{ secrets.GITHUB_TOKEN }}secrets.GITHUB_TOKEN er et innebygd token som automatisk er tilgjengelig i hver workflow-jobb. Det er avgrenset til det gjeldende repositoryet og har skrivetilgang til utgivelser i det repositoryet. Ingen oppsett er nødvendig: fremforge lager det når jobben starter, og det utløper når jobben er ferdig.
Actionen forgejo-release med direction: upload oppretter utgivelsen (hvis den ikke allerede finnes for taggen) og laster opp hver fil fra dist/ som en ressurs i utgivelsen.
Laste opp ressurser fra en workflow: via API-et
For full kontroll over stegene for å opprette utgivelsen og laste opp ressurser kaller du API-et direkte fra en workflow:
# Create the release
RELEASE_ID=$(curl -sSf \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
-H "Content-Type: application/json" \
-d "{\"tag_name\":\"${{ github.ref_name }}\",\"name\":\"${{ github.ref_name }}\"}" \
https://frem.sh/api/v1/repos/${{ github.repository }}/releases \
| jq -r '.id')
# Upload an asset
curl -sSf \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
-H "Content-Type: application/octet-stream" \
--data-binary @dist/myapp-linux-amd64 \
"https://frem.sh/api/v1/repos/${{ github.repository }}/releases/${RELEASE_ID}/assets?name=myapp-linux-amd64"Fullstendig API-referanse: POST /repos/{owner}/{repo}/releases i dokumentasjonen for REST API-et.
Laste ned ressurser fra utgivelser
Offentlige repositoryer: ressurser i utgivelser er offentlig tilgjengelige uten autentisering. Last dem ned direkte fra ressurs-URL-en som vises på utgivelsessiden.
Private repositoryer: et personlig tilgangstoken (PAT) med scopet repo kreves.
curl -L \
-H "Authorization: Bearer <PAT>" \
https://frem.sh/<org>/<repo>/releases/download/<tag>/<asset-filename>Semantisk versjonering
Bruk tagnavn på formen vMAJOR.MINOR.PATCH. Konsekvent versjonering lar verktøy og avhengighetsbehandlere finne den «siste» utgivelsen riktig, og gjør utgivelsessiden lettere å lese for besøkende.
Identifikatorer for forhåndsutgivelser følger SemVer-konvensjonen: v1.2.0-rc.1, v2.0.0-beta.3. Merk dem som forhåndsutgivelser i grensesnittet, eller sett "prerelease": true i API-kroppen.
Slette en utgivelse
- Gå til Repository → Utgivelser.
- Finn utgivelsen og klikk Rediger.
- Bla helt ned og klikk Slett utgivelse.
Å slette en utgivelse fjerner utgivelsesposten og alle vedlagte ressurser. Den underliggende Git-taggen slettes ikke av denne handlingen. For å slette taggen også går du til Repository → Tagger og sletter den derfra, eller kjører git push origin --delete <tag> fra en lokal klone.
Utgivelser og SBOM-er
Plattformen genererer en SBOM for hver utgivelsestag og legger den ved som en ressurs i utgivelsen (for eksempel sbom.spdx.json). Generering av SBOM er på som standard; det finnes ikke noe steg for å slå det på. Både SPDX 2.3 og CycloneDX 1.6 lages.
Se Sikkerhet og forsyningskjede for hele konfigurasjonen av pipelinen og detaljer om SLSA-proveniens.
Utgivelser og pakkeregisteret
Utgivelser og pakkeregisteret har forskjellige formål:
| Bruksområde | Hvor det hører hjemme |
|---|---|
Versjonert kildearkiv (.tar.gz, .zip) | Ressurs i utgivelse |
| Ferdigbygd binærfil eller CLI-verktøy | Ressurs i utgivelse |
| Containerimage | Pakkeregister (frem.sh/<org>/<repo>/packages) |
| npm-pakke | Pakkeregister |
| Maven- eller Gradle-artefakt | Pakkeregister |
| PyPI-kompatibel pakke | Pakkeregister |
Containerimager og pakker for språkøkosystemer har sine egne mekanismer for versjonering og oppdagelse (image-tagger, npm install, mvn dependency:resolve). Bruk pakkeregisteret for dem, slik at forbrukere kan hente dem direkte med standardverktøy. Utgivelser er for artefakter som mennesker eller skript laster ned eksplisitt.
Se også
- Pakkeregister, containerimager, npm-, Maven- og PyPI-pakker
- Sikkerhet og forsyningskjede, generering av SBOM, skanning av containere, SLSA-proveniens
- API, referanse for REST API-et for utgivelser
- CI-runnere, runner-etiketter og tillatelser for
GITHUB_TOKEN