Gå til hovedinnhold

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

  1. Gå til Repository → Utgivelser → Ny utgivelse (frem.sh/<org>/<repo>/releases/new).
  2. 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.
  3. Sett Tittel på utgivelsen. Den vises som overskrift på utgivelsessiden.
  4. Skriv utgivelsesnotater i tekstfeltet. Markdown støttes. Ta med et sammendrag av endringsloggen, bakoverinkompatible endringer, instruksjoner for oppgradering og kreditering av bidragsytere.
  5. 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.
  6. 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».
  7. 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

  1. Gå til Repository → Utgivelser.
  2. Finn utgivelsen og klikk Rediger.
  3. 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ådeHvor det hører hjemme
Versjonert kildearkiv (.tar.gz, .zip)Ressurs i utgivelse
Ferdigbygd binærfil eller CLI-verktøyRessurs i utgivelse
ContainerimagePakkeregister (frem.sh/<org>/<repo>/packages)
npm-pakkePakkeregister
Maven- eller Gradle-artefaktPakkeregister
PyPI-kompatibel pakkePakkeregister

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å