docs: migrate to hugo and hextra (#970)
* docs: migrate to hugo and hextra Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com> * chore: cleanup Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com> * fix: htmltest Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com> * ci: update Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com> * chore: eof Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com> * docs: udpate Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com> * wip Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com> * docs: improvements Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com> * ci: fix Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com> * better icons Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com> * wip Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com> * wip Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com> * fix: updates Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com> * wip Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com> --------- Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
@@ -16,17 +16,21 @@ permissions:
|
|||||||
contents: read
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
htmltest:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||||
- uses: go-task/setup-task@0ab1b2a65bc55236a3bc64cde78f80e20e8885c2 # v1.0.0
|
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
||||||
with:
|
with:
|
||||||
version: 3.x
|
go-version: "1.21"
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
- uses: peaceiris/actions-hugo@75d2e84710de30f6ff7268e08f310b60ef14033f # v3
|
||||||
- run: task docs:build
|
with:
|
||||||
- name: Test HTML
|
hugo-version: "latest"
|
||||||
uses: wjdp/htmltest-action@master
|
extended: true
|
||||||
|
- run: |
|
||||||
|
cd www
|
||||||
|
hugo --minify
|
||||||
|
- uses: wjdp/htmltest-action@31be84a95c860a331e0cf9a99f71e3eb39d2f86b # master
|
||||||
with:
|
with:
|
||||||
config: www/htmltest.yml
|
config: www/htmltest.yml
|
||||||
path: www/site
|
path: www/public
|
||||||
|
|||||||
@@ -128,42 +128,42 @@ tasks:
|
|||||||
- ./scripts/cmd_docs.sh
|
- ./scripts/cmd_docs.sh
|
||||||
- CONTRIBUTING.md
|
- CONTRIBUTING.md
|
||||||
generates:
|
generates:
|
||||||
- www/docs/cmd/*.md
|
- www/content/docs/cmd/*.md
|
||||||
- www/docs/contributing.md
|
- www/content/docs/contributing.md
|
||||||
|
|
||||||
docs:releases:
|
docs:releases:
|
||||||
desc: Generate the latest file
|
desc: Generate the latest file
|
||||||
cmds:
|
cmds:
|
||||||
- ./scripts/pages/releases.sh
|
- ./scripts/pages/releases.sh
|
||||||
generates:
|
generates:
|
||||||
- www/docs/static/latest
|
- www/static/latest
|
||||||
|
|
||||||
docs:imgs:
|
docs:imgs:
|
||||||
desc: Download and resize images
|
desc: Download and resize images
|
||||||
cmds:
|
cmds:
|
||||||
- wget -O www/docs/static/logo.png https://github.com/goreleaser/artwork/raw/master/goreleaserfundo.png
|
- wget -O www/static/images/logo.png https://github.com/goreleaser/artwork/raw/master/goreleaserfundo.png
|
||||||
- wget -O www/docs/static/card.png "https://og.caarlos0.dev/**GoReleaser**%20%7C%20Deliver%20Go%20binaries%20as%20fast%20and%20easily%20as%20possible.png?theme=light&md=1&fontSize=80px&images=https://github.com/goreleaser.png"
|
- wget -O www/static/images/card.png "https://og.caarlos0.dev/**nFPM**%20%7C%20A a simple deb, rpm, apk, ipk, and arch linux packager written in Go.png?theme=light&md=1&fontSize=80px&images=https://github.com/goreleaser.png"
|
||||||
- wget -O www/docs/static/avatar.png https://github.com/goreleaser.png
|
- wget -O www/static/images/avatar.png https://github.com/goreleaser.png
|
||||||
- convert www/docs/static/avatar.png -define icon:auto-resize=64,48,32,16 www/docs/static/favicon.ico
|
- convert www/static/images/avatar.png -define icon:auto-resize=64,48,32,16 www/static/images/favicon.ico
|
||||||
- convert www/docs/static/avatar.png -resize x120 www/docs/static/apple-touch-icon.png
|
- convert www/static/images/avatar.png -resize x120 www/static/images/apple-touch-icon.png
|
||||||
|
|
||||||
docs:serve:
|
docs:serve:
|
||||||
desc: Start documentation server
|
desc: Start documentation server
|
||||||
cmds:
|
cmds:
|
||||||
- task: docs:generate
|
- task: docs:generate
|
||||||
- "docker run --rm -p 8000:8000 -v ./www:/docs squidfunk/mkdocs-material:9"
|
- cd www && hugo server --buildDrafts --bind 0.0.0.0 --port 8080
|
||||||
|
|
||||||
docs:build:
|
docs:build:
|
||||||
desc: Build docs
|
desc: Build docs
|
||||||
cmds:
|
cmds:
|
||||||
- task: docs:generate
|
- task: docs:generate
|
||||||
- "docker run --rm -v ./www:/docs squidfunk/mkdocs-material:9 build"
|
- cd www && hugo --minify
|
||||||
|
|
||||||
docs:test:
|
docs:test:
|
||||||
desc: Test docs with htmltest
|
desc: Test docs with htmltest
|
||||||
cmds:
|
cmds:
|
||||||
- task: docs:build
|
- task: docs:build
|
||||||
- "htmltest www/site -c www/htmltest.yml"
|
- htmltest www/public -c www/htmltest.yml
|
||||||
|
|
||||||
release:
|
release:
|
||||||
desc: Create a new tag
|
desc: Create a new tag
|
||||||
|
|||||||
@@ -23,10 +23,10 @@ func newDocsCmd() *docsCmd {
|
|||||||
ValidArgsFunction: cobra.NoFileCompletions,
|
ValidArgsFunction: cobra.NoFileCompletions,
|
||||||
RunE: func(*cobra.Command, []string) error {
|
RunE: func(*cobra.Command, []string) error {
|
||||||
root.cmd.Root().DisableAutoGenTag = true
|
root.cmd.Root().DisableAutoGenTag = true
|
||||||
return doc.GenMarkdownTreeCustom(root.cmd.Root(), "www/docs/cmd", func(_ string) string {
|
return doc.GenMarkdownTreeCustom(root.cmd.Root(), "www/content/docs/cmd", func(_ string) string {
|
||||||
return ""
|
return ""
|
||||||
}, func(s string) string {
|
}, func(s string) string {
|
||||||
return "/cmd/" + strings.TrimSuffix(s, ".md") + "/"
|
return "/docs/cmd/" + strings.TrimSuffix(s, ".md") + "/"
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
# The lines below are called `modelines`. See `:help modeline`
|
# The lines below are called `modelines`. See `:help modeline`
|
||||||
# Feel free to remove those if you don't want/need to use them.
|
# Feel free to remove those if you don't want/need to use them.
|
||||||
# yaml-language-server: $schema=https://nfpm.goreleaser.com/static/schema.json
|
# yaml-language-server: $schema=https://nfpm.goreleaser.com/schema.json
|
||||||
# vim: set ts=2 sw=2 tw=0 fo=cnqoj
|
# vim: set ts=2 sw=2 tw=0 fo=cnqoj
|
||||||
|
|
||||||
name: "foo"
|
name: "foo"
|
||||||
|
|||||||
@@ -6,15 +6,15 @@ if which gsed >/dev/null 2>&1; then
|
|||||||
SED="gsed"
|
SED="gsed"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p www/docs/cmd
|
mkdir -p www/content/docs/cmd
|
||||||
rm -rf www/docs/cmd/*.md
|
rm -rf www/content/docs/cmd/nfpm*.md
|
||||||
go run ./cmd/nfpm docs
|
go run ./cmd/nfpm docs
|
||||||
|
|
||||||
"$SED" \
|
"$SED" -E -i'' \
|
||||||
-i'' \
|
-e 's/^## (.*)/---\ntitle: \1\n---/' \
|
||||||
-e 's/SEE ALSO/See also/g' \
|
-e 's/SEE ALSO/See also/g' \
|
||||||
-e 's/^## /# /g' \
|
-e 's/^## /# /g' \
|
||||||
-e 's/^### /## /g' \
|
-e 's/^### /## /g' \
|
||||||
-e 's/^#### /### /g' \
|
-e 's/^#### /### /g' \
|
||||||
-e 's/^##### /#### /g' \
|
-e 's/^##### /#### /g' \
|
||||||
./www/docs/cmd/*.md
|
./www/content/docs/cmd/*.md
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -e
|
||||||
pip install -U pip
|
|
||||||
pip install -U mkdocs-material mkdocs-minify-plugin lunr
|
version="$(cat ./www/static/latest)"
|
||||||
version="$(cat ./www/docs/static/latest)"
|
sed -s'' -i "s/__VERSION__/$version/g" www/content/docs/install.md
|
||||||
sed -s'' -i "s/__VERSION__/$version/g" www/docs/install.md
|
cd www
|
||||||
mkdocs build -f www/mkdocs.yml
|
hugo --minify
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
curl -sSf -H "Authorization: Bearer $GITHUB_TOKEN" "https://api.github.com/repos/goreleaser/nfpm/releases/latest" |
|
curl -sSf -H "Authorization: Bearer $GITHUB_TOKEN" "https://api.github.com/repos/goreleaser/nfpm/releases/latest" |
|
||||||
jq -r '.tag_name' >./www/docs/static/latest
|
jq -r '.tag_name' >./www/static/latest
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
public
|
public
|
||||||
|
.hugo_build.lock
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
+++
|
||||||
|
date = '{{ .Date }}'
|
||||||
|
draft = true
|
||||||
|
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
|
||||||
|
+++
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
---
|
||||||
|
title: nFPM
|
||||||
|
layout: hextra-home
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="hx:mt-6 hx:mb-6">
|
||||||
|
{{< hextra/hero-headline >}}
|
||||||
|
<div class="hx-flex hx-justify-center hx-mb-12">
|
||||||
|
<img src="/images/nfpm-logo.png" alt="nFPM Logo" style="height: 80px; width: auto;" />
|
||||||
|
</div>
|
||||||
|
{{< /hextra/hero-headline >}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="hx:mb-12">
|
||||||
|
{{< hextra/hero-subtitle >}}
|
||||||
|
A simple simple deb, rpm, apk, ipk, and arch linux packager written in Go.
|
||||||
|
{{< /hextra/hero-subtitle >}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="hx:mb-6">
|
||||||
|
{{< hextra/hero-button text="Get Started" link="docs" >}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="hx:mt-6">
|
||||||
|
{{< hextra/feature-grid >}}
|
||||||
|
{{< hextra/feature-card
|
||||||
|
title="No Runtime Dependencies"
|
||||||
|
subtitle="No Ruby, no tar, no external dependencies. Just a single binary."
|
||||||
|
icon="cube-transparent"
|
||||||
|
>}}
|
||||||
|
{{< hextra/feature-card
|
||||||
|
title="Multiple Formats"
|
||||||
|
subtitle="Create deb, rpm, apk, ipk, and arch linux packages."
|
||||||
|
icon="collection"
|
||||||
|
>}}
|
||||||
|
{{< hextra/feature-card
|
||||||
|
title="Simple Configuration"
|
||||||
|
subtitle="Define your package with a simple YAML configuration file."
|
||||||
|
icon="document-text"
|
||||||
|
>}}
|
||||||
|
{{< hextra/feature-card
|
||||||
|
title="Cross Platform"
|
||||||
|
subtitle="Build packages on any platform that Go supports."
|
||||||
|
icon="switch-horizontal"
|
||||||
|
>}}
|
||||||
|
{{< hextra/feature-card
|
||||||
|
title="Library & Binary"
|
||||||
|
subtitle="Use as a standalone binary or integrate as a Go library."
|
||||||
|
icon="terminal"
|
||||||
|
>}}
|
||||||
|
{{< hextra/feature-card
|
||||||
|
title="Fast & Lightweight"
|
||||||
|
subtitle="Written in Go for speed and efficiency."
|
||||||
|
icon="sparkles"
|
||||||
|
>}}
|
||||||
|
{{< /hextra/feature-grid >}}
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
title: Documentation
|
||||||
|
cascade:
|
||||||
|
type: docs
|
||||||
|
---
|
||||||
|
|
||||||
|
Welcome to the nFPM documentation.
|
||||||
|
|
||||||
|
## Why nFPM?
|
||||||
|
|
||||||
|
While [fpm](https://github.com/jordansissel/fpm) is great, it depends on Ruby, tar and other software. nFPM is a **simpler**, **zero-dependency**, **minimal-assumptions** alternative.
|
||||||
|
|
||||||
|
This is a subtle way of saying it won't have all features, nor all formats that `fpm` has: it is supposed to be simpler. And that's OK! Most of us don't need all those features most of the time.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- **Zero Dependencies**: No Ruby, no tar, no external dependencies
|
||||||
|
- **Multiple Formats**: deb, rpm, apk, ipk, and arch linux packages
|
||||||
|
- **Simple Configuration**: Single YAML file for all package formats
|
||||||
|
- **Cross Platform**: Build on any platform Go supports
|
||||||
|
- **Fast**: Written in Go for speed and efficiency
|
||||||
|
|
||||||
|
## How does it work?
|
||||||
|
|
||||||
|
You create a YAML file with the definition of what you need, run the `nfpm` binary, and it takes care of everything. The same configuration file can be used to create packages in all the supported formats.
|
||||||
|
|
||||||
|
## nFPM is not FPM
|
||||||
|
|
||||||
|
This is a subtle way of saying it won't have all features, nor all formats that `fpm` has: it is supposed to be simpler.
|
||||||
|
|
||||||
|
And that's OK! Most of us don't need all those features most of the time.
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
title: Command Line Reference
|
||||||
|
weight: 8
|
||||||
|
cascade:
|
||||||
|
type: docs
|
||||||
|
---
|
||||||
|
|
||||||
|
Complete reference for all nFPM command line options and subcommands.
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: nfpm
|
||||||
|
---
|
||||||
|
|
||||||
|
Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file
|
||||||
|
|
||||||
|
## Synopsis
|
||||||
|
|
||||||
|
nFPM is a simple and 0-dependencies apk, arch, deb, ipk and rpm linux packager written in Go.
|
||||||
|
|
||||||
|
## Options
|
||||||
|
|
||||||
|
```
|
||||||
|
-h, --help help for nfpm
|
||||||
|
```
|
||||||
|
|
||||||
|
## See also
|
||||||
|
|
||||||
|
* [nfpm completion](/docs/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell
|
||||||
|
* [nfpm init](/docs/cmd/nfpm_init/) - Creates a sample nfpm.yaml configuration file
|
||||||
|
* [nfpm jsonschema](/docs/cmd/nfpm_jsonschema/) - Outputs nFPM's JSON schema
|
||||||
|
* [nfpm package](/docs/cmd/nfpm_package/) - Creates a package based on the given config file and flags
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
title: nfpm completion
|
||||||
|
---
|
||||||
|
|
||||||
|
Generate the autocompletion script for the specified shell
|
||||||
|
|
||||||
|
## Synopsis
|
||||||
|
|
||||||
|
Generate the autocompletion script for nfpm for the specified shell.
|
||||||
|
See each sub-command's help for details on how to use the generated script.
|
||||||
|
|
||||||
|
|
||||||
|
## Options
|
||||||
|
|
||||||
|
```
|
||||||
|
-h, --help help for completion
|
||||||
|
```
|
||||||
|
|
||||||
|
## See also
|
||||||
|
|
||||||
|
* [nfpm](/docs/cmd/nfpm/) - Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file
|
||||||
|
* [nfpm completion bash](/docs/cmd/nfpm_completion_bash/) - Generate the autocompletion script for bash
|
||||||
|
* [nfpm completion fish](/docs/cmd/nfpm_completion_fish/) - Generate the autocompletion script for fish
|
||||||
|
* [nfpm completion powershell](/docs/cmd/nfpm_completion_powershell/) - Generate the autocompletion script for powershell
|
||||||
|
* [nfpm completion zsh](/docs/cmd/nfpm_completion_zsh/) - Generate the autocompletion script for zsh
|
||||||
|
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
# nfpm completion bash
|
---
|
||||||
|
title: nfpm completion bash
|
||||||
|
---
|
||||||
|
|
||||||
Generate the autocompletion script for bash
|
Generate the autocompletion script for bash
|
||||||
|
|
||||||
@@ -39,5 +41,5 @@ nfpm completion bash
|
|||||||
|
|
||||||
## See also
|
## See also
|
||||||
|
|
||||||
* [nfpm completion](/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell
|
* [nfpm completion](/docs/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell
|
||||||
|
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
# nfpm completion fish
|
---
|
||||||
|
title: nfpm completion fish
|
||||||
|
---
|
||||||
|
|
||||||
Generate the autocompletion script for fish
|
Generate the autocompletion script for fish
|
||||||
|
|
||||||
@@ -30,5 +32,5 @@ nfpm completion fish [flags]
|
|||||||
|
|
||||||
## See also
|
## See also
|
||||||
|
|
||||||
* [nfpm completion](/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell
|
* [nfpm completion](/docs/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell
|
||||||
|
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
# nfpm completion powershell
|
---
|
||||||
|
title: nfpm completion powershell
|
||||||
|
---
|
||||||
|
|
||||||
Generate the autocompletion script for powershell
|
Generate the autocompletion script for powershell
|
||||||
|
|
||||||
@@ -27,5 +29,5 @@ nfpm completion powershell [flags]
|
|||||||
|
|
||||||
## See also
|
## See also
|
||||||
|
|
||||||
* [nfpm completion](/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell
|
* [nfpm completion](/docs/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell
|
||||||
|
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
# nfpm completion zsh
|
---
|
||||||
|
title: nfpm completion zsh
|
||||||
|
---
|
||||||
|
|
||||||
Generate the autocompletion script for zsh
|
Generate the autocompletion script for zsh
|
||||||
|
|
||||||
@@ -41,5 +43,5 @@ nfpm completion zsh [flags]
|
|||||||
|
|
||||||
## See also
|
## See also
|
||||||
|
|
||||||
* [nfpm completion](/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell
|
* [nfpm completion](/docs/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell
|
||||||
|
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
# nfpm init
|
---
|
||||||
|
title: nfpm init
|
||||||
|
---
|
||||||
|
|
||||||
Creates a sample nfpm.yaml configuration file
|
Creates a sample nfpm.yaml configuration file
|
||||||
|
|
||||||
@@ -15,5 +17,5 @@ nfpm init [flags]
|
|||||||
|
|
||||||
## See also
|
## See also
|
||||||
|
|
||||||
* [nfpm](/cmd/nfpm/) - Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file
|
* [nfpm](/docs/cmd/nfpm/) - Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file
|
||||||
|
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
# nfpm jsonschema
|
---
|
||||||
|
title: nfpm jsonschema
|
||||||
|
---
|
||||||
|
|
||||||
Outputs nFPM's JSON schema
|
Outputs nFPM's JSON schema
|
||||||
|
|
||||||
@@ -15,5 +17,5 @@ nfpm jsonschema [flags]
|
|||||||
|
|
||||||
## See also
|
## See also
|
||||||
|
|
||||||
* [nfpm](/cmd/nfpm/) - Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file
|
* [nfpm](/docs/cmd/nfpm/) - Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file
|
||||||
|
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
# nfpm package
|
---
|
||||||
|
title: nfpm package
|
||||||
|
---
|
||||||
|
|
||||||
Creates a package based on the given config file and flags
|
Creates a package based on the given config file and flags
|
||||||
|
|
||||||
@@ -17,5 +19,5 @@ nfpm package [flags]
|
|||||||
|
|
||||||
## See also
|
## See also
|
||||||
|
|
||||||
* [nfpm](/cmd/nfpm/) - Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file
|
* [nfpm](/docs/cmd/nfpm/) - Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file
|
||||||
|
|
||||||
@@ -1,10 +1,13 @@
|
|||||||
# Configuration
|
---
|
||||||
|
title: Configuration
|
||||||
|
weight: 3
|
||||||
|
---
|
||||||
|
|
||||||
## Reference
|
## Reference
|
||||||
|
|
||||||
A commented `nfpm.yaml` configuration file example:
|
A commented `nfpm.yaml` configuration file example:
|
||||||
|
|
||||||
```yaml
|
```yaml {filename="nfpm.yaml"}
|
||||||
# Name. (required)
|
# Name. (required)
|
||||||
name: foo
|
name: foo
|
||||||
|
|
||||||
@@ -498,7 +501,14 @@ nFPM also has a [jsonschema][] file which you can use to have better editor
|
|||||||
support:
|
support:
|
||||||
|
|
||||||
```
|
```
|
||||||
https://nfpm.goreleaser.com/static/schema.json
|
https://nfpm.goreleaser.com/schema.json
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also add it to your `nfpm.yaml` file if your editor don't automatically
|
||||||
|
pick it up:
|
||||||
|
|
||||||
|
```yaml {filename="nfpm.yaml"}
|
||||||
|
# yaml-language-server: $schema=https://nfpm.goreleaser.com/schema.json
|
||||||
```
|
```
|
||||||
|
|
||||||
You can also generate it for your specific version using the
|
You can also generate it for your specific version using the
|
||||||
@@ -508,4 +518,4 @@ Note that it is in early stages.
|
|||||||
Any help and/or feedback is greatly appreciated!
|
Any help and/or feedback is greatly appreciated!
|
||||||
|
|
||||||
[jsonschema]: http://json-schema.org/draft/2020-12/json-schema-validation.html
|
[jsonschema]: http://json-schema.org/draft/2020-12/json-schema-validation.html
|
||||||
[schema]: /cmd/nfpm_jsonschema/
|
[schema]: /docs/cmd/nfpm_jsonschema/
|
||||||
@@ -1,4 +1,7 @@
|
|||||||
# Contributing
|
---
|
||||||
|
title: Contributing
|
||||||
|
weight: 6
|
||||||
|
---
|
||||||
|
|
||||||
This page will eventually have information for those who want to contribute
|
This page will eventually have information for those who want to contribute
|
||||||
to the project.
|
to the project.
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
---
|
||||||
|
title: GOARCH to Packager
|
||||||
|
weight: 5
|
||||||
|
---
|
||||||
|
|
||||||
|
nFPM was branched out of [GoReleaser](https://goreleaser.com), so some of it
|
||||||
|
lean towards "the Go way" (whatever that means).
|
||||||
|
|
||||||
|
GoReleaser passes a string joining `GOARCH`, `GOARM`, etc as the package
|
||||||
|
architecture, and nFPM converts to the correct one for each packager.
|
||||||
|
|
||||||
|
Bellow is a list of the current conversions that are made.
|
||||||
|
Please, feel free to open an issue if you see anything wrong, or if you know the
|
||||||
|
correct value of some missing architecture.
|
||||||
|
|
||||||
|
Thank you!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
{{< tabs items="Deb,RPM,APK,Arch Linux" >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
|
||||||
|
| GOARCH | Value |
|
||||||
|
| :--------: | :--------: |
|
||||||
|
| `386` | `i386` |
|
||||||
|
| `amd64` | `amd64` |
|
||||||
|
| `arm64` | `arm64` |
|
||||||
|
| `arm5` | `armel` |
|
||||||
|
| `arm6` | `armhf` |
|
||||||
|
| `arm7` | `armhf` |
|
||||||
|
| `mips64le` | `mips64el` |
|
||||||
|
| `mips` | `mips` |
|
||||||
|
| `mipsle` | `mipsel` |
|
||||||
|
| `ppc64le` | `ppc64el` |
|
||||||
|
| `s390` | `s390x` |
|
||||||
|
|
||||||
|
{{< /tab >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
|
||||||
|
| GOARCH | Value |
|
||||||
|
| :--------: | :--------: |
|
||||||
|
| `386` | `i386` |
|
||||||
|
| `amd64` | `x86_64` |
|
||||||
|
| `arm64` | `aarch64` |
|
||||||
|
| `arm5` | `armv5tel` |
|
||||||
|
| `arm6` | `armv6hl` |
|
||||||
|
| `arm7` | `armv7hl` |
|
||||||
|
| `mips64le` | `mips64el` |
|
||||||
|
| `mips` | `mips` |
|
||||||
|
| `mipsle` | `mipsel` |
|
||||||
|
|
||||||
|
{{< /tab >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
|
||||||
|
| GOARCH | Value |
|
||||||
|
| :-------: | :-------: |
|
||||||
|
| `386` | `x86` |
|
||||||
|
| `amd64` | `x86_64` |
|
||||||
|
| `arm64` | `aarch64` |
|
||||||
|
| `arm6` | `armhf` |
|
||||||
|
| `arm7` | `armv7` |
|
||||||
|
| `ppc64le` | `ppc64le` |
|
||||||
|
| `s390` | `s390x` |
|
||||||
|
|
||||||
|
{{< /tab >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
|
||||||
|
| GOARCH | Value |
|
||||||
|
| :-----: | :-------: |
|
||||||
|
| `386` | `i686` |
|
||||||
|
| `amd64` | `x86_64` |
|
||||||
|
| `arm64` | `aarch64` |
|
||||||
|
| `arm5` | `arm` |
|
||||||
|
| `arm6` | `arm6h` |
|
||||||
|
| `arm7` | `armv7h` |
|
||||||
|
|
||||||
|
{{< /tab >}}
|
||||||
|
|
||||||
|
{{< /tabs >}}
|
||||||
@@ -0,0 +1,216 @@
|
|||||||
|
---
|
||||||
|
title: Install
|
||||||
|
weight: 2
|
||||||
|
---
|
||||||
|
|
||||||
|
You can install the pre-compiled binary (in several ways), use Docker or compile from source.
|
||||||
|
|
||||||
|
Below you can find the steps for each of them.
|
||||||
|
|
||||||
|
## Using a package manager
|
||||||
|
|
||||||
|
{{< tabs items="Homebrew Tap,Homebrew,Scoop,APT,Yum,Winget,NPM" >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
|
||||||
|
```bash
|
||||||
|
brew install goreleaser/tap/nfpm
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< /tab >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
|
||||||
|
```bash
|
||||||
|
brew install nfpm
|
||||||
|
```
|
||||||
|
|
||||||
|
> [!INFO]
|
||||||
|
> The [formula in homebrew-core](https://github.com/Homebrew/homebrew-core/blob/master/Formula/n/nfpm.rb) might be slightly outdated.
|
||||||
|
> Use our homebrew tap to always get the latest updates.
|
||||||
|
|
||||||
|
{{< /tab >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scoop bucket add goreleaser https://github.com/goreleaser/scoop-bucket.git
|
||||||
|
scoop install nfpm
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< /tab >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
|
||||||
|
```bash
|
||||||
|
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install nfpm
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< /tab >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
|
||||||
|
```bash
|
||||||
|
echo '[goreleaser]
|
||||||
|
name=GoReleaser
|
||||||
|
baseurl=https://repo.goreleaser.com/yum/
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=0' | sudo tee /etc/yum.repos.d/goreleaser.repo
|
||||||
|
sudo yum install nfpm
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< /tab >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
|
||||||
|
```bash
|
||||||
|
winget install --id=goreleaser.nfpm
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< /tab >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install -g @goreleaser/nfpm
|
||||||
|
# or
|
||||||
|
npx @goreleaser/nfpm
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< /tab >}}
|
||||||
|
|
||||||
|
{{< /tabs >}}
|
||||||
|
|
||||||
|
## Pre-built packages and archives
|
||||||
|
|
||||||
|
Download the your format of choice from the
|
||||||
|
[releases](https://github.com/goreleaser/nfpm/releases)
|
||||||
|
and install them with the appropriate tools.
|
||||||
|
|
||||||
|
You may also download the archives and extract and run the binary inside.
|
||||||
|
|
||||||
|
## Running with Docker
|
||||||
|
|
||||||
|
You can also use it within a Docker container. To do that, you'll need to execute something more-or-less like the following:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run --rm -v $PWD:/tmp -w /tmp goreleaser/nfpm package \
|
||||||
|
--config /tmp/pkg/foo.yml \
|
||||||
|
--target /tmp \
|
||||||
|
--packager deb
|
||||||
|
```
|
||||||
|
|
||||||
|
## Using go install
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go install github.com/goreleaser/nfpm/v2/cmd/nfpm@latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Verifying the artifacts
|
||||||
|
|
||||||
|
{{< tabs items="Binaries,Docker Images" >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
|
||||||
|
All artifacts are checksummed, and the checksum is signed with
|
||||||
|
[cosign](https://github.com/sigstore/cosign).
|
||||||
|
|
||||||
|
{{% steps %}}
|
||||||
|
|
||||||
|
### Download
|
||||||
|
|
||||||
|
Download the files you want, the `checksums.txt` and `checksums.txt.sig` files
|
||||||
|
from the [releases](https://github.com/goreleaser/nfpm/releases) page:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wget 'https://github.com/goreleaser/nfpm/releases/download/__VERSION__/checksums.txt'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Verify the signature
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wget 'https://github.com/goreleaser/nfpm/releases/download/__VERSION__/checksums.txt.sigstore.json'
|
||||||
|
cosign verify-blob \
|
||||||
|
--certificate-identity 'https://github.com/goreleaser/nfpm/.github/workflows/release.yml@refs/tags/__VERSION__' \
|
||||||
|
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
|
||||||
|
--bundle "checksums.txt.sigstore.json" \
|
||||||
|
checksums.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
### Verify the checksums
|
||||||
|
|
||||||
|
If the signature is valid, you can then verify the SHA256 sums match with the downloaded binary:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sha256sum --ignore-missing -c checksums.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
{{% /steps %}}
|
||||||
|
|
||||||
|
{{< /tab >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
|
||||||
|
Our Docker images are signed with [cosign](https://github.com/sigstore/cosign).
|
||||||
|
|
||||||
|
{{% steps %}}
|
||||||
|
|
||||||
|
### Pull the images
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker buill goreleaser/nfpm
|
||||||
|
# or
|
||||||
|
docker build ghcr.io/goreleaser/nfpm
|
||||||
|
```
|
||||||
|
|
||||||
|
### Verify
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cosign verify goreleaser/nfpm
|
||||||
|
cosign verify ghcr.io/goreleaser/nfpm
|
||||||
|
```
|
||||||
|
|
||||||
|
{{% /steps %}}
|
||||||
|
|
||||||
|
{{< /tab >}}
|
||||||
|
|
||||||
|
{{< /tabs >}}
|
||||||
|
|
||||||
|
## Building from source
|
||||||
|
|
||||||
|
Here you have two options:
|
||||||
|
|
||||||
|
If you want to contribute to the project, please follow the steps on our [contributing guide](/docs/contributing).
|
||||||
|
|
||||||
|
If you just want to build from source for whatever reason, follow these steps:
|
||||||
|
|
||||||
|
**clone:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/goreleaser/nfpm
|
||||||
|
cd nfpm
|
||||||
|
```
|
||||||
|
|
||||||
|
**get the dependencies:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go mod tidy
|
||||||
|
```
|
||||||
|
|
||||||
|
**build:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go build -o nfpm ./cmd/nfpm
|
||||||
|
```
|
||||||
|
|
||||||
|
**verify it works:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./nfpm --version
|
||||||
|
```
|
||||||
|
|
||||||
|
## Packaging status
|
||||||
|
|
||||||
|
[](https://repology.org/project/nfpm/versions)
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
---
|
||||||
|
title: Quick Start
|
||||||
|
weight: 1
|
||||||
|
---
|
||||||
|
|
||||||
|
nFPM can be used both as a command line tool or as a Go library.
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
{{% steps %}}
|
||||||
|
|
||||||
|
### Install nFPM
|
||||||
|
|
||||||
|
You can choose from [several instalation methods](/docs/install), for example:
|
||||||
|
|
||||||
|
**Using Homebrew:**
|
||||||
|
|
||||||
|
```sh
|
||||||
|
brew install goreleaser/tap/nfpm
|
||||||
|
```
|
||||||
|
|
||||||
|
**Using go install:**
|
||||||
|
|
||||||
|
```sh
|
||||||
|
go install github.com/goreleaser/nfpm/v2/cmd/nfpm@latest
|
||||||
|
```
|
||||||
|
|
||||||
|
Make sure to [check the complete list](/docs/install) and choose the best option
|
||||||
|
for your case.
|
||||||
|
|
||||||
|
### Initialize your project
|
||||||
|
|
||||||
|
Use [`nfpm init`](/docs/cmd/nfpm_init) to create a sample configuration:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
nfpm init
|
||||||
|
```
|
||||||
|
|
||||||
|
This creates a `nfpm.yaml` file with a commented example configuration.
|
||||||
|
|
||||||
|
### Build your packages
|
||||||
|
|
||||||
|
Use [`nfpm package`](/docs/cmd/nfpm_package) to create your packages:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Build specific formats
|
||||||
|
nfpm pkg --packager deb --target /tmp/
|
||||||
|
nfpm pkg --packager rpm --target /tmp/
|
||||||
|
nfpm pkg --packager apk --target /tmp/
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also use `ipk` and `archlinux` as packagers.
|
||||||
|
|
||||||
|
{{% /steps %}}
|
||||||
|
|
||||||
|
## Command Line Reference
|
||||||
|
|
||||||
|
For more information about available options:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
nfpm --help
|
||||||
|
```
|
||||||
|
|
||||||
|
See the [configuration reference](/docs/configuration) to customize your package definition.
|
||||||
|
|
||||||
|
Check out the [command line reference](/docs/cmd) for detailed documentation of all commands.
|
||||||
|
|
||||||
|
## Using as a Go library
|
||||||
|
|
||||||
|
You can also use nFPM as a library in your Go project.
|
||||||
|
|
||||||
|
Check out the [GoDocs page](https://pkg.go.dev/github.com/goreleaser/nfpm/v2?tab=doc),
|
||||||
|
the [nFPM command line implementation](https://github.com/goreleaser/nfpm/blob/main/cmd/nfpm/main.go)
|
||||||
|
and [GoReleaser's usage](https://github.com/goreleaser/goreleaser/blob/main/internal/pipe/nfpm/nfpm.go).
|
||||||
@@ -1,4 +1,7 @@
|
|||||||
# Sponsoring the Project
|
---
|
||||||
|
title: Sponsors
|
||||||
|
weight: 7
|
||||||
|
---
|
||||||
|
|
||||||
Does you or your company use nFPM?
|
Does you or your company use nFPM?
|
||||||
You can help keep the project bug-free and feature rich by sponsoring the
|
You can help keep the project bug-free and feature rich by sponsoring the
|
||||||
@@ -1,4 +1,7 @@
|
|||||||
# Tips, Hints and useful information
|
---
|
||||||
|
title: Tips & Hints
|
||||||
|
weight: 4
|
||||||
|
---
|
||||||
|
|
||||||
## General maintainability of your packages
|
## General maintainability of your packages
|
||||||
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
# nfpm
|
|
||||||
|
|
||||||
Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file
|
|
||||||
|
|
||||||
## Synopsis
|
|
||||||
|
|
||||||
nFPM is a simple and 0-dependencies apk, arch, deb, ipk and rpm linux packager written in Go.
|
|
||||||
|
|
||||||
## Options
|
|
||||||
|
|
||||||
```
|
|
||||||
-h, --help help for nfpm
|
|
||||||
```
|
|
||||||
|
|
||||||
## See also
|
|
||||||
|
|
||||||
* [nfpm completion](/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell
|
|
||||||
* [nfpm init](/cmd/nfpm_init/) - Creates a sample nfpm.yaml configuration file
|
|
||||||
* [nfpm jsonschema](/cmd/nfpm_jsonschema/) - Outputs nFPM's JSON schema
|
|
||||||
* [nfpm package](/cmd/nfpm_package/) - Creates a package based on the given config file and flags
|
|
||||||
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
# nfpm completion
|
|
||||||
|
|
||||||
Generate the autocompletion script for the specified shell
|
|
||||||
|
|
||||||
## Synopsis
|
|
||||||
|
|
||||||
Generate the autocompletion script for nfpm for the specified shell.
|
|
||||||
See each sub-command's help for details on how to use the generated script.
|
|
||||||
|
|
||||||
|
|
||||||
## Options
|
|
||||||
|
|
||||||
```
|
|
||||||
-h, --help help for completion
|
|
||||||
```
|
|
||||||
|
|
||||||
## See also
|
|
||||||
|
|
||||||
* [nfpm](/cmd/nfpm/) - Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file
|
|
||||||
* [nfpm completion bash](/cmd/nfpm_completion_bash/) - Generate the autocompletion script for bash
|
|
||||||
* [nfpm completion fish](/cmd/nfpm_completion_fish/) - Generate the autocompletion script for fish
|
|
||||||
* [nfpm completion powershell](/cmd/nfpm_completion_powershell/) - Generate the autocompletion script for powershell
|
|
||||||
* [nfpm completion zsh](/cmd/nfpm_completion_zsh/) - Generate the autocompletion script for zsh
|
|
||||||
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
# Go's GOARCH to packager
|
|
||||||
|
|
||||||
nFPM was branched out of [GoReleaser](https://goreleaser.com), so some of it
|
|
||||||
lean towards "the Go way" (whatever that means).
|
|
||||||
|
|
||||||
GoReleaser passes a string joining `GOARCH`, `GOARM`, etc as the package
|
|
||||||
architecture, and nFPM converts to the correct one for each packager.
|
|
||||||
|
|
||||||
Bellow is a list of the current conversions that are made.
|
|
||||||
Please, feel free to open an issue if you see anything wrong, or if you know the
|
|
||||||
correct value of some missing architecture.
|
|
||||||
|
|
||||||
Thank you!
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## `deb`
|
|
||||||
|
|
||||||
| GOARCH | Value |
|
|
||||||
| :--: | :--: |
|
|
||||||
| `386` | `i386` |
|
|
||||||
| `amd64` | `amd64` |
|
|
||||||
| `arm64` | `arm64` |
|
|
||||||
| `arm5` | `armel` |
|
|
||||||
| `arm6` | `armhf` |
|
|
||||||
| `arm7` | `armhf` |
|
|
||||||
| `mips64le` | `mips64el` |
|
|
||||||
| `mips` | `mips` |
|
|
||||||
| `mipsle` | `mipsel` |
|
|
||||||
| `ppc64le` | `ppc64el` |
|
|
||||||
| `s390` | `s390x` |
|
|
||||||
|
|
||||||
## `rpm`
|
|
||||||
|
|
||||||
| GOARCH | Value |
|
|
||||||
| :--: | :--: |
|
|
||||||
| `386` | `i386` |
|
|
||||||
| `amd64` | `x86_64` |
|
|
||||||
| `arm64` | `aarch64` |
|
|
||||||
| `arm5` | `armv5tel` |
|
|
||||||
| `arm6` | `armv6hl` |
|
|
||||||
| `arm7` | `armv7hl` |
|
|
||||||
| `mips64le` | `mips64el` |
|
|
||||||
| `mips` | `mips` |
|
|
||||||
| `mipsle` | `mipsel` |
|
|
||||||
|
|
||||||
## `apk`
|
|
||||||
|
|
||||||
| GOARCH | Value |
|
|
||||||
| :--: | :--: |
|
|
||||||
| `386` | `x86` |
|
|
||||||
| `amd64` | `x86_64` |
|
|
||||||
| `arm64` | `aarch64` |
|
|
||||||
| `arm6` | `armhf` |
|
|
||||||
| `arm7` | `armv7` |
|
|
||||||
| `ppc64le` | `ppc64le` |
|
|
||||||
| `s390` | `s390x` |
|
|
||||||
|
|
||||||
## `archlinux`
|
|
||||||
|
|
||||||
| GOARCH | Value |
|
|
||||||
| :--: | :--: |
|
|
||||||
| `386` | `i686` |
|
|
||||||
| `amd64` | `x86_64` |
|
|
||||||
| `arm64` | `aarch64` |
|
|
||||||
| `arm5` | `arm` |
|
|
||||||
| `arm6` | `arm6h` |
|
|
||||||
| `arm7` | `armv7h` |
|
|
||||||
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
# nFPM
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
**nFPM is Not FPM** - a zero dependencies, simple `deb`, `rpm`, `apk`, `ipk`, and
|
|
||||||
arch linux packager written in Go.
|
|
||||||
|
|
||||||
## Why
|
|
||||||
|
|
||||||
While [fpm][] is great, for me, it is a bummer that it depends on `ruby`, `tar`
|
|
||||||
and other software.
|
|
||||||
|
|
||||||
I wanted something that could be used as a binary and/or as a library and that
|
|
||||||
was really simple.
|
|
||||||
|
|
||||||
So I decided to create nFPM: a **simpler**, **0-dependency**,
|
|
||||||
**as-little-assumptions-as-possible** alternative to fpm.
|
|
||||||
|
|
||||||
## nFPM is not FPM
|
|
||||||
|
|
||||||
This is a subtle way of saying it won't have all features, nor all
|
|
||||||
formats that `fpm` has: it is supposed to be simpler.
|
|
||||||
|
|
||||||
And that's OK! Most of us don't need all those features most of the time.
|
|
||||||
|
|
||||||
[fpm]: https://github.com/jordansissel/fpm
|
|
||||||
|
|
||||||
## How does it work?
|
|
||||||
|
|
||||||
You create a YAML file with the definition of what you need, run the `nfpm`
|
|
||||||
binary, and it takes care of everything.
|
|
||||||
The same configuration file can be used to create packages in all the supported
|
|
||||||
formats.
|
|
||||||
@@ -1,159 +0,0 @@
|
|||||||
# Install
|
|
||||||
|
|
||||||
You can install the pre-compiled binary (in several ways), use Docker
|
|
||||||
or compile from source.
|
|
||||||
|
|
||||||
Bellow you can find the steps for each of them.
|
|
||||||
|
|
||||||
## Install the pre-compiled binary
|
|
||||||
|
|
||||||
### homebrew tap
|
|
||||||
|
|
||||||
```bash
|
|
||||||
brew install goreleaser/tap/nfpm
|
|
||||||
```
|
|
||||||
|
|
||||||
### homebrew
|
|
||||||
|
|
||||||
```bash
|
|
||||||
brew install nfpm
|
|
||||||
```
|
|
||||||
|
|
||||||
!!! info
|
|
||||||
|
|
||||||
The [formula in homebrew-core](https://github.com/Homebrew/homebrew-core/blob/master/Formula/n/nfpm.rb) might be slightly outdated.
|
|
||||||
Use our homebrew tap to always get the latest updates.
|
|
||||||
|
|
||||||
### scoop
|
|
||||||
|
|
||||||
```bash
|
|
||||||
scoop bucket add goreleaser https://github.com/goreleaser/scoop-bucket.git
|
|
||||||
scoop install nfpm
|
|
||||||
```
|
|
||||||
|
|
||||||
### apt
|
|
||||||
|
|
||||||
```bash
|
|
||||||
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list
|
|
||||||
sudo apt update
|
|
||||||
sudo apt install nfpm
|
|
||||||
```
|
|
||||||
|
|
||||||
### yum
|
|
||||||
|
|
||||||
```bash
|
|
||||||
echo '[goreleaser]
|
|
||||||
name=GoReleaser
|
|
||||||
baseurl=https://repo.goreleaser.com/yum/
|
|
||||||
enabled=1
|
|
||||||
gpgcheck=0' | sudo tee /etc/yum.repos.d/goreleaser.repo
|
|
||||||
sudo yum install nfpm
|
|
||||||
```
|
|
||||||
|
|
||||||
### deb, apk and rpm packages
|
|
||||||
|
|
||||||
Download the `.deb`, `.rpm` or `.apk` from the [releases page][releases] and
|
|
||||||
install them with the appropriate tools.
|
|
||||||
|
|
||||||
### go install
|
|
||||||
|
|
||||||
```bash
|
|
||||||
go install github.com/goreleaser/nfpm/v2/cmd/nfpm@latest
|
|
||||||
```
|
|
||||||
|
|
||||||
### manually
|
|
||||||
|
|
||||||
Download the pre-compiled binaries from the [releases page][releases] and copy
|
|
||||||
them to the desired location.
|
|
||||||
|
|
||||||
## Verifying the artifacts
|
|
||||||
|
|
||||||
### binaries
|
|
||||||
|
|
||||||
All artifacts are checksummed, and the checksum is signed with [cosign][].
|
|
||||||
|
|
||||||
1. Download the files you want, the `checksums.txt` and `checksums.txt.sig`
|
|
||||||
files from the [releases][releases] page:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
wget 'https://github.com/goreleaser/nfpm/releases/download/__VERSION__/checksums.txt'
|
|
||||||
```
|
|
||||||
|
|
||||||
1. Verify the signature:
|
|
||||||
```bash
|
|
||||||
cosign verify-blob \
|
|
||||||
--certificate-identity 'https://github.com/goreleaser/nfpm/.github/workflows/release.yml@refs/tags/__VERSION__' \
|
|
||||||
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
|
|
||||||
--signature 'https://github.com/goreleaser/nfpm/releases/download/__VERSION__/checksums.txt.sig' \
|
|
||||||
--cert 'https://github.com/goreleaser/nfpm/releases/download/__VERSION__/checksums.txt.pem' \
|
|
||||||
checksums.txt
|
|
||||||
```
|
|
||||||
1. If the signature is valid, you can then verify the SHA256 sums match with the
|
|
||||||
downloaded binary:
|
|
||||||
```bash
|
|
||||||
sha256sum --ignore-missing -c checksums.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
### docker images
|
|
||||||
|
|
||||||
Our Docker images are signed with [cosign][].
|
|
||||||
|
|
||||||
Verify the signature:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cosign verify goreleaser/nfpm
|
|
||||||
cosign verify ghcr.io/goreleaser/nfpm
|
|
||||||
```
|
|
||||||
|
|
||||||
## Running with Docker
|
|
||||||
|
|
||||||
You can also use it within a Docker container. To do that, you'll need to
|
|
||||||
execute something more-or-less like the following:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker run --rm -v $PWD:/tmp -w /tmp goreleaser/nfpm package \
|
|
||||||
--config /tmp/pkg/foo.yml \
|
|
||||||
--target /tmp \
|
|
||||||
--packager deb
|
|
||||||
```
|
|
||||||
|
|
||||||
## Packaging status
|
|
||||||
|
|
||||||
[](https://repology.org/project/nfpm/versions)
|
|
||||||
|
|
||||||
## Compiling from source
|
|
||||||
|
|
||||||
Here you have two options:
|
|
||||||
|
|
||||||
If you want to contribute to the project, please follow the steps on our
|
|
||||||
[contributing guide](/contributing).
|
|
||||||
|
|
||||||
If you just want to build from source for whatever reason, follow these steps:
|
|
||||||
|
|
||||||
**clone:**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/goreleaser/nfpm
|
|
||||||
cd nfpm
|
|
||||||
```
|
|
||||||
|
|
||||||
**get the dependencies:**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
go mod tidy
|
|
||||||
```
|
|
||||||
|
|
||||||
**build:**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
go build -o nfpm ./cmd/nfpm
|
|
||||||
```
|
|
||||||
|
|
||||||
**verify it works:**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./nfpm --version
|
|
||||||
```
|
|
||||||
|
|
||||||
[releases]: https://github.com/goreleaser/nfpm/releases
|
|
||||||
[cosign]: https://github.com/sigstore/cosign
|
|
||||||
|
Before Width: | Height: | Size: 81 KiB |
@@ -1,27 +0,0 @@
|
|||||||
# Usage
|
|
||||||
|
|
||||||
nFPM can be used both as command line tool or as a library.
|
|
||||||
|
|
||||||
## Command Line
|
|
||||||
|
|
||||||
To create a sample configuration file, run:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
nfpm init
|
|
||||||
```
|
|
||||||
|
|
||||||
You can then customize it and package to the formats you want:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
nfpm pkg --packager deb --target /tmp/
|
|
||||||
nfpm pkg --packager rpm --target /tmp/
|
|
||||||
```
|
|
||||||
|
|
||||||
You can learn about it in more detail in the
|
|
||||||
[command line reference section](/cmd/nfpm/).
|
|
||||||
|
|
||||||
## Go Library
|
|
||||||
|
|
||||||
Check out the [GoDocs page](https://pkg.go.dev/github.com/goreleaser/nfpm/v2?tab=doc),
|
|
||||||
the [nFPM command line implementation](https://github.com/goreleaser/nfpm/blob/main/cmd/nfpm/main.go)
|
|
||||||
and [GoReleaser's usage](https://github.com/goreleaser/goreleaser/blob/main/internal/pipe/nfpm/nfpm.go).
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
module github.com/goreleaser/nfpm/hugo-docs
|
||||||
|
|
||||||
|
go 1.21
|
||||||
|
|
||||||
|
require github.com/imfing/hextra v0.11.1 // indirect
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
github.com/imfing/hextra v0.11.1 h1:8pTc4ReYbzGTHAnyiebmlT3ijFfIXiGu1r7tM/UGjFI=
|
||||||
|
github.com/imfing/hextra v0.11.1/go.mod h1:cEfel3lU/bSx7lTE/+uuR4GJaphyOyiwNR3PTqFTXpI=
|
||||||
@@ -1,15 +1,20 @@
|
|||||||
IgnoreURLs:
|
# htmltest configuration for nFPM Hugo site
|
||||||
- www.google-analytics.com
|
DirectoryPath: "public"
|
||||||
- fonts.gstatic.com
|
CheckDoctype: true
|
||||||
- opencollective.com
|
CheckAnchors: true
|
||||||
- https://gitlab.com/profile/personal_access_tokens
|
CheckLinks: true
|
||||||
- https://twitter.com/goreleaser
|
CheckImages: true
|
||||||
- goreleaser.com
|
CheckScripts: true
|
||||||
IgnoreDirs:
|
CheckFavicon: true
|
||||||
- overrides
|
CheckOpengraph: false
|
||||||
|
CheckMetaRefresh: true
|
||||||
|
CheckMetaViewport: true
|
||||||
|
EnforceHTTPS: false
|
||||||
IgnoreDirectoryMissingTrailingSlash: true
|
IgnoreDirectoryMissingTrailingSlash: true
|
||||||
|
IgnoreURLs:
|
||||||
|
- "https://github.com/goreleaser/nfpm/edit/main/www/content"
|
||||||
|
- "https://github.com/goreleaser/nfpm/releases"
|
||||||
|
- "https://becker.software/nfpm.png"
|
||||||
IgnoreAltMissing: true
|
IgnoreAltMissing: true
|
||||||
ExternalTimeout: 60
|
IgnoreInternalEmptyHash: true
|
||||||
HTTPHeaders:
|
LogLevel: 2
|
||||||
"Range": "bytes=0-10"
|
|
||||||
"Accept": "*/*"
|
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
baseURL: "https://nfpm.goreleaser.com"
|
||||||
|
languageCode: "en-us"
|
||||||
|
title: "nFPM"
|
||||||
|
|
||||||
|
module:
|
||||||
|
imports:
|
||||||
|
- path: github.com/imfing/hextra
|
||||||
|
|
||||||
|
enableRobotsTXT: true
|
||||||
|
enableGitInfo: true
|
||||||
|
enableEmoji: true
|
||||||
|
hasCJKLanguage: true
|
||||||
|
|
||||||
|
services:
|
||||||
|
googleAnalytics:
|
||||||
|
ID: ""
|
||||||
|
|
||||||
|
markup:
|
||||||
|
goldmark:
|
||||||
|
renderer:
|
||||||
|
unsafe: true
|
||||||
|
highlight:
|
||||||
|
noClasses: false
|
||||||
|
|
||||||
|
menu:
|
||||||
|
main:
|
||||||
|
- identifier: install
|
||||||
|
name: Install
|
||||||
|
pageRef: /docs/install
|
||||||
|
weight: 10
|
||||||
|
- identifier: documentation
|
||||||
|
name: Documentation
|
||||||
|
pageRef: /docs/usage
|
||||||
|
weight: 15
|
||||||
|
- name: Search
|
||||||
|
weight: 20
|
||||||
|
params:
|
||||||
|
type: search
|
||||||
|
- name: GitHub
|
||||||
|
weight: 30
|
||||||
|
url: "https://github.com/goreleaser/nfpm"
|
||||||
|
params:
|
||||||
|
icon: github
|
||||||
|
|
||||||
|
params:
|
||||||
|
navbar:
|
||||||
|
displayTitle: true
|
||||||
|
displayLogo: true
|
||||||
|
logo:
|
||||||
|
path: images/logo.png
|
||||||
|
dark: images/logo.png
|
||||||
|
width: 40
|
||||||
|
height: 40
|
||||||
|
link: /
|
||||||
|
page:
|
||||||
|
width: wide
|
||||||
|
theme:
|
||||||
|
default: system
|
||||||
|
displayToggle: true
|
||||||
|
footer:
|
||||||
|
displayCopyright: true
|
||||||
|
displayPoweredBy: false
|
||||||
|
width: normal
|
||||||
|
displayUpdatedDate: true
|
||||||
|
dateFormat: "January 2, 2006"
|
||||||
|
search:
|
||||||
|
enable: true
|
||||||
|
type: flexsearch
|
||||||
|
maxResults: 10
|
||||||
|
editPage:
|
||||||
|
enable: true
|
||||||
|
base: "https://github.com/goreleaser/nfpm/edit/main/www/content"
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
home: [html, llms]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
copyright: "Made with 🩶 by the nFPM contributors"
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<meta
|
||||||
|
property="og:image"
|
||||||
|
content="https://nfpm.goreleaser.com/images/card.png"
|
||||||
|
/>
|
||||||
|
<meta
|
||||||
|
name="twitter:image"
|
||||||
|
content="https://nfpm.goreleaser.com/images/card.png"
|
||||||
|
/>
|
||||||
@@ -1,77 +0,0 @@
|
|||||||
site_name: nFPM
|
|
||||||
site_url: https://nfpm.goreleaser.com
|
|
||||||
site_description: nFPM is not FPM - a simple deb, rpm and apk packager written in Go
|
|
||||||
copyright: Made with ❤️ by GoReleaser contributors.
|
|
||||||
repo_name: goreleaser/nfpm
|
|
||||||
repo_url: https://github.com/goreleaser/nfpm
|
|
||||||
edit_uri: edit/main/www/docs/
|
|
||||||
|
|
||||||
theme:
|
|
||||||
name: material
|
|
||||||
language: en
|
|
||||||
logo: static/avatar.png
|
|
||||||
favicon: static/favicon.ico
|
|
||||||
include_search_page: false
|
|
||||||
search_index_only: true
|
|
||||||
palette:
|
|
||||||
- media: "(prefers-color-scheme: light)" # Light mode
|
|
||||||
scheme: default
|
|
||||||
toggle:
|
|
||||||
icon: material/lightbulb-outline
|
|
||||||
name: Switch to light mode
|
|
||||||
- media: "(prefers-color-scheme: dark)" # Dark mode
|
|
||||||
scheme: slate
|
|
||||||
primary: light blue
|
|
||||||
accent: indigo
|
|
||||||
toggle:
|
|
||||||
icon: material/lightbulb
|
|
||||||
name: Switch to dark mode
|
|
||||||
features:
|
|
||||||
- search.suggest
|
|
||||||
- search.highlight
|
|
||||||
- search.share
|
|
||||||
- content.code.copy
|
|
||||||
- content.action.edit
|
|
||||||
- navigation.footer
|
|
||||||
|
|
||||||
|
|
||||||
plugins:
|
|
||||||
- search
|
|
||||||
- minify:
|
|
||||||
minify_html: true
|
|
||||||
|
|
||||||
extra:
|
|
||||||
social:
|
|
||||||
- icon: fontawesome/brands/github-alt
|
|
||||||
link: https://github.com/goreleaser
|
|
||||||
- icon: fontawesome/brands/twitter
|
|
||||||
link: https://twitter.com/goreleaser
|
|
||||||
|
|
||||||
nav:
|
|
||||||
- Home: index.md
|
|
||||||
- install.md
|
|
||||||
- usage.md
|
|
||||||
- Command Line Usage:
|
|
||||||
- nfpm: cmd/nfpm.md
|
|
||||||
- nfpm init: cmd/nfpm_init.md
|
|
||||||
- nfpm package: cmd/nfpm_package.md
|
|
||||||
- nfpm completion: cmd/nfpm_completion.md
|
|
||||||
- nfpm completion bash: cmd/nfpm_completion_bash.md
|
|
||||||
- nfpm completion fish: cmd/nfpm_completion_fish.md
|
|
||||||
- nfpm completion powershell: cmd/nfpm_completion_powershell.md
|
|
||||||
- nfpm completion zsh: cmd/nfpm_completion_zsh.md
|
|
||||||
- nfpm jsonschema: cmd/nfpm_jsonschema.md
|
|
||||||
- configuration.md
|
|
||||||
- tips.md
|
|
||||||
- goarch-to-pkg.md
|
|
||||||
- contributing.md
|
|
||||||
- sponsors.md
|
|
||||||
|
|
||||||
markdown_extensions:
|
|
||||||
- admonition
|
|
||||||
- codehilite
|
|
||||||
- meta
|
|
||||||
- toc:
|
|
||||||
permalink: true
|
|
||||||
- pymdownx.tabbed
|
|
||||||
- pymdownx.superfences
|
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
/static/schema.json /schema.json 301
|
||||||
|
/static/latest /latest 301
|
||||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 178 KiB After Width: | Height: | Size: 178 KiB |
|
After Width: | Height: | Size: 33 KiB |