Hoppa till huvudinnehållet

Releaser

En release är en taggad ögonblicksbild av ett repo, eventuellt med bifogade binära artefakter, tarbollar eller andra filer. Releaser visas på frem.sh/<org>/<repo>/releases och ger en stabil och läsbar översikt över vad som har levererats och när. De är skilda från paketregistret: releaser bär versionerade ögonblicksbilder av källkoden och byggartefakter, medan containeravbildningar och paket för olika språkekosystem hör hemma i paketregistret.

Skapa en release i webbgränssnittet

  1. Gå till Repot → Utgåvor → Ny utgåva (frem.sh/<org>/<repo>/releases/new).
  2. I fältet Taggnamn väljer du en befintlig tagg eller skriver ett nytt taggnamn för att skapa taggen på målbranchen eller målcommiten. Semantisk versionering (v1.0.0, v2.3.1-rc.1) rekommenderas.
  3. Ange Utgåvetitel. Den visas som rubrik på releasesidan.
  4. Skriv release notes i textfältet. Markdown stöds. Ta med en sammanfattning av ändringarna, bakåtinkompatibla ändringar, instruktioner för uppgradering och tack till bidragsgivare.
  5. Bifoga release assets genom att dra filer till uppladdningsytan (Släpp filer här eller klicka för att ladda upp.) eller klicka på den. Antalet filer är obegränsat, och storleksgränsen per fil är 2 GB.
  6. Kryssa i Markera som förutgåva för release candidates, betaversioner eller annat som inte är redo för allmän användning. Förhandsreleaser visas separat i listan och räknas inte med när den senaste releasen markeras.
  7. Klicka på Publicera utgåva för att publicera direkt, eller på Spara utkast för att göra klart den senare. Utkast syns bara för organisationens ägare och för medlemmar med Write- eller Admin-åtkomst till repot.

Skapa en release från ett arbetsflöde

Automatisera releaser genom att trigga på pushade taggar. Det är standardmönstret för projekt som bygger binärer i CI och vill bifoga dem till releasen automatiskt.

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 är en inbyggd token som automatiskt finns i varje jobb i ett arbetsflöde. Den gäller det aktuella repot och har skrivåtkomst till releaser i det. Ingen konfiguration behövs: fremforge skapar den när jobbet startar, och den upphör att gälla när jobbet är klart.

Actionen forgejo-release med direction: upload skapar releasen (om den inte redan finns för taggen) och laddar upp varje fil i dist/ som en releasefil.

Ladda upp filer från ett arbetsflöde: via API:t

Om du vill ha full kontroll över hur releasen skapas och filerna laddas upp anropar du API:t direkt från ett arbetsflöde:

# 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"

Fullständig API-referens: POST /repos/{owner}/{repo}/releases i REST API-dokumentationen.

Ladda ner releasefiler

Publika repositoryn: releasefiler är publikt åtkomliga utan autentisering. Ladda ner dem direkt från filens URL på releasesidan.

Privata repositoryn: det krävs en personlig åtkomsttoken (PAT) med scopet repo.

curl -L \
  -H "Authorization: Bearer <PAT>" \
  https://frem.sh/<org>/<repo>/releases/download/<tag>/<asset-filename>

Semantisk versionering

Använd taggnamn på formen vMAJOR.MINOR.PATCH. Konsekvent versionering gör att verktyg och beroendehanterare hittar den “senaste” releasen korrekt och gör releasesidan lättare att läsa för besökare.

Identifierare för förhandsreleaser följer SemVer-konventionen: v1.2.0-rc.1, v2.0.0-beta.3. Markera dem som förhandsreleaser i webbgränssnittet eller sätt "prerelease": true i API-anropets body.

Ta bort en release

  1. Gå till Repot → Utgåvor.
  2. Leta upp releasen och klicka på Edit.
  3. Skrolla längst ner och klicka på Delete release.

När du tar bort en release försvinner releaseposten och alla bifogade filer. Den underliggande Git-taggen tas inte bort. Om du vill ta bort taggen också går du till Repot → Taggar och tar bort den där, eller kör git push origin --delete <tag> från en lokal klon.

Releaser och SBOM:er

Plattformen genererar en SBOM för varje releasetagg och bifogar den som en releasefil (t.ex. sbom.spdx.json). SBOM-generering är på som standard, och det finns inget att slå på. Både SPDX 2.3 och CycloneDX 1.6 genereras.

Se Säkerhet och leveranskedja för hela pipelinekonfigurationen och detaljerna om SLSA-proveniens.

Releaser och paketregistret

Releaser och paketregistret fyller olika syften:

AnvändningsfallVar det hör hemma
Versionerat källkodsarkiv (.tar.gz, .zip)Releasefil
Förbyggd binär eller CLI-verktygReleasefil
ContaineravbildningPaketregistret (frem.sh/<org>/<repo>/packages)
npm-paketPaketregistret
Maven- eller Gradle-artefaktPaketregistret
PyPI-kompatibelt paketPaketregistret

Containeravbildningar och paket för språkekosystem har egna mekanismer för versionering och upptäckt (avbildningstaggar, npm install, mvn dependency:resolve). Använd paketregistret för dem, så att konsumenterna kan hämta dem direkt med standardverktyg. Releaser är till för artefakter som personer eller skript laddar ner uttryckligen.

Korsreferenser