+19
-24
.forgejo/workflows/ci.yaml
+19
-24
.forgejo/workflows/ci.yaml
···
7
8
jobs:
9
check:
10
-
runs-on: codeberg-small-lazy
11
container:
12
-
image: docker.io/library/node:24-trixie-slim@sha256:fcdfd7bcd8f641c8c76a8950343c73912d68ba341e8dd1074e663b784d3e76f4
13
steps:
14
- name: Check out source code
15
-
uses: https://code.forgejo.org/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
16
- name: Set up toolchain
17
uses: https://code.forgejo.org/actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0
18
with:
···
34
# IMPORTANT: This workflow step will not work without the Releases unit enabled!
35
if: ${{ forge.ref == 'refs/heads/main' || startsWith(forge.event.ref, 'refs/tags/v') }}
36
needs: [check]
37
-
runs-on: codeberg-small-lazy
38
container:
39
-
image: docker.io/library/node:24-trixie-slim@sha256:fcdfd7bcd8f641c8c76a8950343c73912d68ba341e8dd1074e663b784d3e76f4
40
steps:
41
- name: Check out source code
42
-
uses: https://code.forgejo.org/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
43
- name: Set up toolchain
44
uses: https://code.forgejo.org/actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0
45
with:
···
70
package:
71
if: ${{ forge.ref == 'refs/heads/main' || startsWith(forge.event.ref, 'refs/tags/v') }}
72
needs: [check]
73
-
runs-on: codeberg-small-lazy
74
container:
75
-
image: docker.io/library/node:24-trixie-slim@sha256:fcdfd7bcd8f641c8c76a8950343c73912d68ba341e8dd1074e663b784d3e76f4
76
steps:
77
- name: Install dependencies
78
run: |
79
apt-get -y update
80
-
apt-get -y install buildah ca-certificates
81
- name: Check out source code
82
-
uses: https://code.forgejo.org/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
83
- name: Build container
84
run: |
85
printf '[storage]\ndriver="vfs"\nrunroot="/run/containers/storage"\ngraphroot="/var/lib/containers/storage"\n' | tee /etc/containers/storage.conf
86
-
buildah build --arch=amd64 --tag=container:${VER}-amd64 .
87
-
buildah build --arch=arm64 --tag=container:${VER}-arm64 .
88
-
buildah manifest create container:${VER} \
89
-
container:${VER}-amd64 \
90
-
container:${VER}-arm64
91
env:
92
BUILDAH_ISOLATION: chroot
93
-
VER: ${{ startsWith(forge.event.ref, 'refs/tags/v') && forge.ref_name || 'latest' }}
94
- if: ${{ forge.repository == 'git-pages/git-pages-cli' }}
95
name: Push container to Codeberg
96
run: |
97
-
buildah login --authfile=/tmp/authfile-${FORGE}.json \
98
-u ${{ vars.PACKAGES_USER }} -p ${{ secrets.PACKAGES_TOKEN }} ${FORGE}
99
-
buildah manifest push --authfile=/tmp/authfile-${FORGE}.json \
100
-
--all container:${VER} "docker://${FORGE}/${{ forge.repository }}:${VER/v/}"
101
env:
102
-
BUILDAH_ISOLATION: chroot
103
FORGE: codeberg.org
104
VER: ${{ startsWith(forge.event.ref, 'refs/tags/v') && forge.ref_name || 'latest' }}
105
- if: ${{ forge.repository == 'git-pages/git-pages-cli' }}
106
name: Push container to code.forgejo.org
107
run: |
108
-
buildah login --authfile=/tmp/authfile-${FORGE}.json \
109
-u ${{ vars.PACKAGES_USER }} -p ${{ secrets.CFO_PACKAGES_TOKEN }} ${FORGE}
110
-
buildah manifest push --authfile=/tmp/authfile-${FORGE}.json \
111
-
--all container:${VER} "docker://${FORGE}/${{ forge.repository }}:${VER/v/}"
112
env:
113
-
BUILDAH_ISOLATION: chroot
114
FORGE: code.forgejo.org
115
VER: ${{ startsWith(forge.event.ref, 'refs/tags/v') && forge.ref_name || 'latest' }}
···
7
8
jobs:
9
check:
10
+
runs-on: debian-trixie
11
container:
12
+
image: docker.io/library/node:24-trixie-slim@sha256:b05474903f463ce4064c09986525e6588c3e66c51b69be9c93a39fb359f883ce
13
steps:
14
- name: Check out source code
15
+
uses: https://code.forgejo.org/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
16
- name: Set up toolchain
17
uses: https://code.forgejo.org/actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0
18
with:
···
34
# IMPORTANT: This workflow step will not work without the Releases unit enabled!
35
if: ${{ forge.ref == 'refs/heads/main' || startsWith(forge.event.ref, 'refs/tags/v') }}
36
needs: [check]
37
+
runs-on: debian-trixie
38
container:
39
+
image: docker.io/library/node:24-trixie-slim@sha256:b05474903f463ce4064c09986525e6588c3e66c51b69be9c93a39fb359f883ce
40
steps:
41
- name: Check out source code
42
+
uses: https://code.forgejo.org/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
43
- name: Set up toolchain
44
uses: https://code.forgejo.org/actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0
45
with:
···
70
package:
71
if: ${{ forge.ref == 'refs/heads/main' || startsWith(forge.event.ref, 'refs/tags/v') }}
72
needs: [check]
73
+
runs-on: debian-trixie
74
container:
75
+
image: docker.io/library/node:24-trixie-slim@sha256:b05474903f463ce4064c09986525e6588c3e66c51b69be9c93a39fb359f883ce
76
steps:
77
- name: Install dependencies
78
run: |
79
apt-get -y update
80
+
apt-get -y install ca-certificates buildah qemu-user-binfmt
81
- name: Check out source code
82
+
uses: https://code.forgejo.org/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
83
- name: Build container
84
run: |
85
printf '[storage]\ndriver="vfs"\nrunroot="/run/containers/storage"\ngraphroot="/var/lib/containers/storage"\n' | tee /etc/containers/storage.conf
86
+
buildah build --arch=amd64 --tag=container:amd64
87
+
buildah build --arch=arm64 --tag=container:arm64
88
+
buildah manifest create container container:amd64 container:arm64
89
env:
90
BUILDAH_ISOLATION: chroot
91
- if: ${{ forge.repository == 'git-pages/git-pages-cli' }}
92
name: Push container to Codeberg
93
run: |
94
+
buildah login --authfile=/tmp/authfile.json \
95
-u ${{ vars.PACKAGES_USER }} -p ${{ secrets.PACKAGES_TOKEN }} ${FORGE}
96
+
buildah manifest push --authfile=/tmp/authfile.json \
97
+
--all container "docker://${FORGE}/${{ forge.repository }}:${VER/v/}"
98
env:
99
FORGE: codeberg.org
100
VER: ${{ startsWith(forge.event.ref, 'refs/tags/v') && forge.ref_name || 'latest' }}
101
- if: ${{ forge.repository == 'git-pages/git-pages-cli' }}
102
name: Push container to code.forgejo.org
103
run: |
104
+
buildah login --authfile=/tmp/authfile.json \
105
-u ${{ vars.PACKAGES_USER }} -p ${{ secrets.CFO_PACKAGES_TOKEN }} ${FORGE}
106
+
buildah manifest push --authfile=/tmp/authfile.json \
107
+
--all container "docker://${FORGE}/${{ forge.repository }}:${VER/v/}"
108
env:
109
FORGE: code.forgejo.org
110
VER: ${{ startsWith(forge.event.ref, 'refs/tags/v') && forge.ref_name || 'latest' }}
+1
-1
Dockerfile
+1
-1
Dockerfile
+24
flake.lock
+24
flake.lock
···
18
"type": "github"
19
}
20
},
21
+
"gomod2nix": {
22
+
"inputs": {
23
+
"flake-utils": [
24
+
"flake-utils"
25
+
],
26
+
"nixpkgs": [
27
+
"nixpkgs"
28
+
]
29
+
},
30
+
"locked": {
31
+
"lastModified": 1763982521,
32
+
"narHash": "sha256-ur4QIAHwgFc0vXiaxn5No/FuZicxBr2p0gmT54xZkUQ=",
33
+
"owner": "nix-community",
34
+
"repo": "gomod2nix",
35
+
"rev": "02e63a239d6eabd595db56852535992c898eba72",
36
+
"type": "github"
37
+
},
38
+
"original": {
39
+
"owner": "nix-community",
40
+
"repo": "gomod2nix",
41
+
"type": "github"
42
+
}
43
+
},
44
"nix-filter": {
45
"locked": {
46
"lastModified": 1757882181,
···
75
"root": {
76
"inputs": {
77
"flake-utils": "flake-utils",
78
+
"gomod2nix": "gomod2nix",
79
"nix-filter": "nix-filter",
80
"nixpkgs": "nixpkgs"
81
}
+22
-4
flake.nix
+22
-4
flake.nix
···
3
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
4
flake-utils.url = "github:numtide/flake-utils";
5
nix-filter.url = "github:numtide/nix-filter";
6
};
7
8
outputs =
···
11
nixpkgs,
12
flake-utils,
13
nix-filter,
14
-
}:
15
flake-utils.lib.eachDefaultSystem (
16
system:
17
let
18
-
pkgs = nixpkgs.legacyPackages.${system};
19
20
-
git-pages-cli = pkgs.buildGo125Module {
21
pname = "git-pages-cli";
22
version = "0";
23
···
41
"-s -w"
42
];
43
44
-
vendorHash = "sha256-5vjUhN3lCr41q91lOD7v0F9c6a8GJj7wBGnnzgFBhJU=";
45
};
46
in
47
{
···
50
devShells.default = pkgs.mkShell {
51
inputsFrom = [
52
git-pages-cli
53
];
54
};
55
···
3
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
4
flake-utils.url = "github:numtide/flake-utils";
5
nix-filter.url = "github:numtide/nix-filter";
6
+
7
+
gomod2nix = {
8
+
url = "github:nix-community/gomod2nix";
9
+
inputs.nixpkgs.follows = "nixpkgs";
10
+
inputs.flake-utils.follows = "flake-utils";
11
+
};
12
};
13
14
outputs =
···
17
nixpkgs,
18
flake-utils,
19
nix-filter,
20
+
...
21
+
}@inputs:
22
flake-utils.lib.eachDefaultSystem (
23
system:
24
let
25
+
pkgs = import nixpkgs {
26
+
inherit system;
27
28
+
overlays = [
29
+
inputs.gomod2nix.overlays.default
30
+
];
31
+
};
32
+
33
+
git-pages-cli = pkgs.buildGoApplication {
34
pname = "git-pages-cli";
35
version = "0";
36
···
54
"-s -w"
55
];
56
57
+
go = pkgs.go_1_25;
58
+
modules = ./gomod2nix.toml;
59
};
60
in
61
{
···
64
devShells.default = pkgs.mkShell {
65
inputsFrom = [
66
git-pages-cli
67
+
];
68
+
69
+
packages = with pkgs; [
70
+
gomod2nix
71
];
72
};
73
+2
-2
go.mod
+2
-2
go.mod
+2
-2
go.sum
+2
-2
go.sum
···
1
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
2
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
3
-
github.com/klauspost/compress v1.18.1 h1:bcSGx7UbpBqMChDtsF28Lw6v/G94LPrrbMbdC3JH2co=
4
-
github.com/klauspost/compress v1.18.1/go.mod h1:ZQFFVG+MdnR0P+l6wpXgIL4NTtwiKIdBnrBd8Nrxr+0=
5
github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
6
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
···
1
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
2
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
3
+
github.com/klauspost/compress v1.18.2 h1:iiPHWW0YrcFgpBYhsA6D1+fqHssJscY/Tm/y2Uqnapk=
4
+
github.com/klauspost/compress v1.18.2/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4=
5
github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
6
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+12
gomod2nix.toml
+12
gomod2nix.toml
···
···
1
+
schema = 3
2
+
3
+
[mod]
4
+
[mod."github.com/google/uuid"]
5
+
version = "v1.6.0"
6
+
hash = "sha256-VWl9sqUzdOuhW0KzQlv0gwwUQClYkmZwSydHG2sALYw="
7
+
[mod."github.com/klauspost/compress"]
8
+
version = "v1.18.2"
9
+
hash = "sha256-mRa+6qEi5joqQao13ZFogmq67rOQzHCVbCCjKA+HKEc="
10
+
[mod."github.com/spf13/pflag"]
11
+
version = "v1.0.10"
12
+
hash = "sha256-uDPnWjHpSrzXr17KEYEA1yAbizfcsfo5AyztY2tS6ZU="
+1
-6
main.go
+1
-6
main.go
···
50
var pathFlag = pflag.String("path", "", "partially update site at specified path")
51
var parentsFlag = pflag.Bool("parents", false, "create parent directories of --path")
52
var atomicFlag = pflag.Bool("atomic", false, "require partial updates to be atomic")
53
-
var incrementalFlag = pflag.Bool("incremental", false, "only upload changed files")
54
var verboseFlag = pflag.BoolP("verbose", "v", false, "display more information for debugging")
55
var versionFlag = pflag.BoolP("version", "V", false, "display version information")
56
···
238
} else {
239
pathPrefix = strings.Trim(*pathFlag, "/") + "/"
240
}
241
-
}
242
-
243
-
if *incrementalFlag && *uploadDirFlag == "" {
244
-
fmt.Fprintf(os.Stderr, "--incremental requires --upload-dir")
245
-
os.Exit(usageExitCode)
246
}
247
248
var err error
···
50
var pathFlag = pflag.String("path", "", "partially update site at specified path")
51
var parentsFlag = pflag.Bool("parents", false, "create parent directories of --path")
52
var atomicFlag = pflag.Bool("atomic", false, "require partial updates to be atomic")
53
+
var incrementalFlag = pflag.Bool("incremental", false, "make --upload-dir only upload changed files")
54
var verboseFlag = pflag.BoolP("verbose", "v", false, "display more information for debugging")
55
var versionFlag = pflag.BoolP("version", "V", false, "display version information")
56
···
238
} else {
239
pathPrefix = strings.Trim(*pathFlag, "/") + "/"
240
}
241
}
242
243
var err error