The code and data behind xeiaso.net
5
fork

Configure Feed

Select the types of activity you want to include in your feed.

docker buildx bake

Signed-off-by: Xe Iaso <me@xeiaso.net>

+129 -177
+1 -1
.dockerignore
··· 3 3 .env 4 4 .git 5 5 manifest 6 - lume 6 + lume
-1
.envrc
··· 1 - use flake
+22 -13
.github/workflows/earthly.yml
··· 14 14 permissions: 15 15 contents: read 16 16 packages: write 17 - env: 18 - EARTHLY_TOKEN: ${{ secrets.EARTHLY_TOKEN }} 19 17 steps: 20 18 - name: Checkout repository 21 19 uses: actions/checkout@v4 22 - - uses: earthly/actions-setup@v1 23 - with: 24 - github-token: ${{ secrets.GITHUB_TOKEN }} 25 - version: "latest" # or pin to an specific version, e.g. "0.8.1" 20 + 21 + - name: Set up Docker Buildx 22 + uses: docker/setup-buildx-action@v3 23 + 26 24 - name: Log into registry 27 25 if: github.event_name != 'pull_request' 28 26 uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 ··· 30 28 registry: ghcr.io 31 29 username: xe 32 30 password: ${{ secrets.GITHUB_TOKEN }} 33 - - name: Build and push Docker image 31 + 32 + - name: Build and push 34 33 if: github.event_name != 'pull_request' 35 - id: build-and-push 36 - run: | 37 - earthly --org me-2625 --sat alpha --ci --push +all 34 + id: build 35 + uses: docker/bake-action@v6 36 + with: 37 + source: . 38 + push: true 39 + set: | 40 + patreon-saasproxy.tags=ghcr.io/xe/site/patreon-saasproxy:latest 41 + xesite.tags=ghcr.io/xe/site/bin:latest 42 + 38 43 - name: Build Docker image 39 44 if: github.event_name == 'pull_request' 40 - id: build 41 - run: | 42 - earthly --org me-2625 --sat alpha --ci +all 45 + uses: docker/bake-action@v6 46 + with: 47 + source: . 48 + push: true 49 + set: | 50 + patreon-saasproxy.tags=ghcr.io/xe/site/patreon-saasproxy:latest 51 + xesite.tags=ghcr.io/xe/site/bin:latest 43 52 44 53 deploy: 45 54 name: "Deploy xesite"
+39
docker-bake.hcl
··· 1 + variable "ALPINE_VERSION" { 2 + default = "edge" 3 + } 4 + 5 + variable "GO_VERSION" { 6 + default = "1.24" 7 + } 8 + 9 + group "default" { 10 + targets = [ "patreon-saasproxy", "xesite" ] 11 + } 12 + 13 + target "patreon-saasproxy" { 14 + args = { 15 + ALPINE_VERSION = null 16 + GO_VERSION = null 17 + } 18 + context = "." 19 + dockerfile = "./docker/patreon-saasproxy.Dockerfile" 20 + platforms = [ "linux/amd64", "linux/arm64" ] 21 + pull = true 22 + tags = [ 23 + "registry.int.xeserv.us/xe/site/patreon-saasproxy:main" 24 + ] 25 + } 26 + 27 + target "xesite" { 28 + args = { 29 + ALPINE_VERSION = null 30 + GO_VERSION = null 31 + } 32 + context = "." 33 + dockerfile = "./docker/xesite.Dockerfile" 34 + platforms = [ "linux/amd64", "linux/arm64" ] 35 + pull = true 36 + tags = [ 37 + "registry.int.xeserv.us/xe/site/bin:main" 38 + ] 39 + }
+23
docker/patreon-saasproxy.Dockerfile
··· 1 + ARG GO_VERSION=1.24 2 + ARG ALPINE_VERSION=edge 3 + FROM --platform=${BUILDPLATFORM} golang:${GO_VERSION}-alpine AS build 4 + 5 + ARG TARGETOS 6 + ARG TARGETARCH 7 + 8 + WORKDIR /app 9 + 10 + COPY go.mod go.sum ./ 11 + RUN go mod download 12 + 13 + COPY . . 14 + RUN --mount=type=cache,target=/root/.cache GOOS=${TARGETOS} GOARCH=${TARGETARCH} CGO_ENABLED=0 go build -gcflags "all=-N -l" -o /app/bin/patreon-saasproxy ./cmd/patreon-saasproxy 15 + 16 + FROM alpine:${ALPINE_VERSION} AS run 17 + WORKDIR /app 18 + 19 + COPY --from=build /app/bin/patreon-saasproxy /app/bin/patreon-saasproxy 20 + 21 + CMD ["/app/bin/patreon-saasproxy"] 22 + 23 + LABEL org.opencontainers.image.source="https://github.com/Xe/site"
+44
docker/xesite.Dockerfile
··· 1 + ARG GO_VERSION=1.24 2 + ARG ALPINE_VERSION=edge 3 + FROM --platform=${BUILDPLATFORM} golang:${GO_VERSION}-alpine AS build 4 + 5 + ARG TARGETOS 6 + ARG TARGETARCH 7 + 8 + WORKDIR /app 9 + 10 + COPY go.mod go.sum ./ 11 + RUN go mod download 12 + 13 + COPY . . 14 + RUN --mount=type=cache,target=/root/.cache GOOS=${TARGETOS} GOARCH=${TARGETARCH} CGO_ENABLED=0 go build -gcflags "all=-N -l" -o /app/bin/xesite ./cmd/xesite 15 + 16 + FROM --platform=${BUILDPLATFORM} alpine:${ALPINE_VERSION} AS fonts 17 + 18 + WORKDIR /fonts 19 + RUN apk add -U unzip ca-certificates curl \ 20 + && curl -Lo iosevka.zip https://cdn.xeiaso.net/static/pkg/iosevka/ttf.zip \ 21 + && unzip -d /fonts iosevka.zip 22 + 23 + FROM --platform=${BUILDPLATFORM} alpine:${ALPINE_VERSION} AS dhall-json 24 + 25 + RUN mkdir -p /app 26 + WORKDIR /app 27 + RUN apk add -U curl bzip2 ca-certificates \ 28 + && curl -L -o dhall-linux.tar.bz2 https://github.com/dhall-lang/dhall-haskell/releases/download/1.42.0/dhall-json-1.7.12-x86_64-linux.tar.bz2 \ 29 + && tar -xvjf dhall-linux.tar.bz2 \ 30 + && mv bin/dhall-to-json . 31 + 32 + FROM alpine:${ALPINE_VERSION} AS run 33 + WORKDIR /app 34 + 35 + RUN apk add -U ca-certificates deno typst mailcap 36 + ENV TYPST_FONT_PATHS=/app/fonts 37 + 38 + COPY --from=build /app/bin/xesite /app/bin/xesite 39 + COPY --from=fonts /fonts /app/fonts 40 + COPY --from=dhall-json /app/dhall-to-json /usr/local/bin/dhall-to-json 41 + 42 + CMD ["/app/bin/xesite"] 43 + 44 + LABEL org.opencontainers.image.source="https://github.com/Xe/site"
-162
gomod2nix.toml
··· 1 - schema = 3 2 - 3 - [mod] 4 - [mod."dario.cat/mergo"] 5 - version = "v1.0.0" 6 - hash = "sha256-jlpc8dDj+DmiOU4gEawBu8poJJj9My0s9Mvuk9oS8ww=" 7 - [mod."github.com/Microsoft/go-winio"] 8 - version = "v0.6.1" 9 - hash = "sha256-BL0BVaHtmPKQts/711W59AbHXjGKqFS4ZTal0RYnR9I=" 10 - [mod."github.com/ProtonMail/go-crypto"] 11 - version = "v1.0.0" 12 - hash = "sha256-Gflazvyv+457FpUTtPafJ+SdolYSalpsU0tragTxNi8=" 13 - [mod."github.com/bep/debounce"] 14 - version = "v1.2.1" 15 - hash = "sha256-7qHOp4vB0ifEseXXBuSH6W5YNImVcb8PTWSJJAMaGcU=" 16 - [mod."github.com/cloudflare/circl"] 17 - version = "v1.3.7" 18 - hash = "sha256-AkOpcZ+evLxLJStvvr01+TLeWDqcLxY3e/AhGggzh40=" 19 - [mod."github.com/cyphar/filepath-securejoin"] 20 - version = "v0.2.4" 21 - hash = "sha256-heCD0xMxlwnHCHcRBgTjVexHOLyWI2zRW3E8NFKoLzk=" 22 - [mod."github.com/davecgh/go-spew"] 23 - version = "v1.1.1" 24 - hash = "sha256-nhzSUrE1fCkN0+RL04N4h8jWmRFPPPWbCuDc7Ss0akI=" 25 - [mod."github.com/donatj/hmacsig"] 26 - version = "v1.1.0" 27 - hash = "sha256-/T7mWqQwZt+AFD/2QAYCAW/TsZptawFMl8CGWPmyhtE=" 28 - [mod."github.com/emicklei/proto"] 29 - version = "v1.11.2" 30 - hash = "sha256-1j9oAuZbq5F+eY0emvivv4G/46YRoL/QzqwomuFElsw=" 31 - [mod."github.com/emirpasic/gods"] 32 - version = "v1.18.1" 33 - hash = "sha256-hGDKddjLj+5dn2woHtXKUdd49/3xdsqnhx7VEdCu1m4=" 34 - [mod."github.com/facebookgo/ensure"] 35 - version = "v0.0.0-20200202191622-63f1cf65ac4c" 36 - hash = "sha256-ZvQLMu0LBtRB4lMgY4DlsKxiRUzmh8W4KvGYJF4icRc=" 37 - [mod."github.com/facebookgo/flagenv"] 38 - version = "v0.0.0-20160425205200-fcd59fca7456" 39 - hash = "sha256-Dx2QQ7FngN64CDL1I3jQG4JOzzCKnt6MsbnVRzzh7jA=" 40 - [mod."github.com/facebookgo/subset"] 41 - version = "v0.0.0-20200203212716-c811ad88dec4" 42 - hash = "sha256-oBhWz9Haw/ZuqJofQ7psThNrr1f6GHHgxq8agev7TOo=" 43 - [mod."github.com/getkin/kin-openapi"] 44 - version = "v0.120.0" 45 - hash = "sha256-x5BjdRncVOy3t7HqmA6IwfYDg/xy3BsGjFawrnrXcko=" 46 - [mod."github.com/go-faker/faker/v4"] 47 - version = "v4.3.0" 48 - hash = "sha256-Y70kJJAMfQ6CBvZO+28gpKGSni/EFMNIGKUzc299Sss=" 49 - [mod."github.com/go-git/gcfg"] 50 - version = "v1.5.1-0.20230307220236-3a3c6141e376" 51 - hash = "sha256-f4k0gSYuo0/q3WOoTxl2eFaj7WZpdz29ih6CKc8Ude8=" 52 - [mod."github.com/go-git/go-billy/v5"] 53 - version = "v5.5.0" 54 - hash = "sha256-4XUoD2bOCMCdu83egb/y8kY/Fm0s1rWgPMtiahh38OQ=" 55 - [mod."github.com/go-git/go-git/v5"] 56 - version = "v5.11.0" 57 - hash = "sha256-2yUM/FlV+nYxacVynJCnDZeMub4Iu8JL2WBHmlnwOkE=" 58 - [mod."github.com/go-openapi/jsonpointer"] 59 - version = "v0.20.2" 60 - hash = "sha256-z9IZxP+JvJ1WvrHE7qbAZQqJ3XMx1uD0S611shTMna8=" 61 - [mod."github.com/go-openapi/swag"] 62 - version = "v0.22.9" 63 - hash = "sha256-rH8EMuDAAKhyNjo+CpQmlmqTc9aPzEFkRptYCenw+xE=" 64 - [mod."github.com/golang/groupcache"] 65 - version = "v0.0.0-20210331224755-41bb18bfe9da" 66 - hash = "sha256-7Gs7CS9gEYZkbu5P4hqPGBpeGZWC64VDwraSKFF+VR0=" 67 - [mod."github.com/golang/protobuf"] 68 - version = "v1.5.3" 69 - hash = "sha256-svogITcP4orUIsJFjMtp+Uv1+fKJv2Q5Zwf2dMqnpOQ=" 70 - [mod."github.com/invopop/yaml"] 71 - version = "v0.2.0" 72 - hash = "sha256-RxeDuvwOSWYaLc8Q7T39rfFT3bZX3g9Bu0RFwxH6sLw=" 73 - [mod."github.com/jbenet/go-context"] 74 - version = "v0.0.0-20150711004518-d14ea06fba99" 75 - hash = "sha256-VANNCWNNpARH/ILQV9sCQsBWgyL2iFT+4AHZREpxIWE=" 76 - [mod."github.com/joho/godotenv"] 77 - version = "v1.5.1" 78 - hash = "sha256-kA0osKfsc6Kp+nuGTRJyXZZlJt1D/kuEazKMWYCWcQ8=" 79 - [mod."github.com/josharian/intern"] 80 - version = "v1.0.0" 81 - hash = "sha256-LJR0QE2vOQ2/2shBbO5Yl8cVPq+NFrE3ers0vu9FRP0=" 82 - [mod."github.com/kevinburke/ssh_config"] 83 - version = "v1.2.0" 84 - hash = "sha256-Ta7ZOmyX8gG5tzWbY2oES70EJPfI90U7CIJS9EAce0s=" 85 - [mod."github.com/mailru/easyjson"] 86 - version = "v0.7.7" 87 - hash = "sha256-NVCz8MURpxgOjHXqxOZExqV4bnpHggpeAOyZDArjcy4=" 88 - [mod."github.com/mohae/deepcopy"] 89 - version = "v0.0.0-20170929034955-c48cc78d4826" 90 - hash = "sha256-TQMmKqIYwVhmMVh4RYQkAui97Eyj7poLmcAuDcHXsEk=" 91 - [mod."github.com/perimeterx/marshmallow"] 92 - version = "v1.1.5" 93 - hash = "sha256-fFWjg0FNohDSV0/wUjQ8fBq1g8h6yIqTrHkxqL2Tt0s=" 94 - [mod."github.com/pjbgf/sha1cd"] 95 - version = "v0.3.0" 96 - hash = "sha256-kX9BdLh2dxtGNaDvc24NORO+C0AZ7JzbrXrtecCdB7w=" 97 - [mod."github.com/pmezard/go-difflib"] 98 - version = "v1.0.0" 99 - hash = "sha256-/FtmHnaGjdvEIKAJtrUfEhV7EVo5A/eYrtdnUkuxLDA=" 100 - [mod."github.com/sergi/go-diff"] 101 - version = "v1.3.1" 102 - hash = "sha256-XLA/BLIPuUU76yikXqIeRSXr7T7A3Uz6I27+mDxGj7w=" 103 - [mod."github.com/skeema/knownhosts"] 104 - version = "v1.2.1" 105 - hash = "sha256-u0jB6ahTdGa+SvcIvPNRLnbSHvgmW9X/ThRq0nWQrJs=" 106 - [mod."github.com/stretchr/testify"] 107 - version = "v1.8.4" 108 - hash = "sha256-MoOmRzbz9QgiJ+OOBo5h5/LbilhJfRUryvzHJmXAWjo=" 109 - [mod."github.com/twitchtv/twirp"] 110 - version = "v8.1.3+incompatible" 111 - hash = "sha256-j1h9YE3wl9h36DfPf92To1H/PwNk4CgerOARNO3HK1w=" 112 - [mod."github.com/xanzy/ssh-agent"] 113 - version = "v0.3.3" 114 - hash = "sha256-l3pGB6IdzcPA/HLk93sSN6NM2pKPy+bVOoacR5RC2+c=" 115 - [mod."go4.org/mem"] 116 - version = "v0.0.0-20220726221520-4f986261bf13" 117 - hash = "sha256-H2Fsuvzbqp/6JKzC03XPTQTSQBcGs+B5VGsBjrQDY3c=" 118 - [mod."golang.org/x/crypto"] 119 - version = "v0.19.0" 120 - hash = "sha256-Vi6vY/eWNlYQ9l3Y+gA+X2+h2CmzEOrBRVFO/cnrPWc=" 121 - [mod."golang.org/x/mod"] 122 - version = "v0.15.0" 123 - hash = "sha256-ANSnGmd525BfnkMZpCmu6deMPFGADtnZx3lmZpdm2aM=" 124 - [mod."golang.org/x/net"] 125 - version = "v0.21.0" 126 - hash = "sha256-LfiqMpPtqvW/eLkfx6Ebr5ksqKbQli6uq06c/+XrBsw=" 127 - [mod."golang.org/x/oauth2"] 128 - version = "v0.17.0" 129 - hash = "sha256-M2ZZQZt449RJL18YpzGiAiqfGsDVMsr1IVWbYp/G/go=" 130 - [mod."golang.org/x/sys"] 131 - version = "v0.17.0" 132 - hash = "sha256-e0qnE+SitE02IzvnJKI4Uzpq9EOZY+zvE8Wf5b2e6Kg=" 133 - [mod."golang.org/x/text"] 134 - version = "v0.14.0" 135 - hash = "sha256-yh3B0tom1RfzQBf1RNmfdNWF1PtiqxV41jW1GVS6JAg=" 136 - [mod."golang.org/x/tools"] 137 - version = "v0.18.0" 138 - hash = "sha256-JVz7W13vMPfpGQ1yW+LBlT6INu3ebpjvXyChmAkm5bQ=" 139 - [mod."google.golang.org/appengine"] 140 - version = "v1.6.8" 141 - hash = "sha256-decMa0MiWfW/Bzr8QPPzzpeya0YWGHhZAt4Cr/bD1wQ=" 142 - [mod."google.golang.org/protobuf"] 143 - version = "v1.32.0" 144 - hash = "sha256-GJuTkMGHCzHbyK4yD5kY4oMn8wQWqgkeBK//yVDqHJk=" 145 - [mod."gopkg.in/fsnotify.v1"] 146 - version = "v1.4.7" 147 - hash = "sha256-j/Ts92oXa3k1MFU7Yd8/AqafRTsFn7V2pDKCyDJLah8=" 148 - [mod."gopkg.in/mxpv/patreon-go.v1"] 149 - version = "v1.0.0-20171031001022-1d2f253ac700" 150 - hash = "sha256-vo6C8nU/lG0LdtrO4396YHvVEypkXFHia5FAGjb0qoQ=" 151 - [mod."gopkg.in/warnings.v0"] 152 - version = "v0.1.2" 153 - hash = "sha256-ATVL9yEmgYbkJ1DkltDGRn/auGAjqGOfjQyBYyUo8s8=" 154 - [mod."gopkg.in/yaml.v3"] 155 - version = "v3.0.1" 156 - hash = "sha256-FqL9TKYJ0XkNwJFnq9j0VvJ5ZUU1RvH/52h/f5bkYAU=" 157 - [mod."tailscale.com"] 158 - version = "v1.58.2" 159 - hash = "sha256-ok+xgZRbFkQcH9VR75bhHx+bRn8ymoYQeBYsMpvfGss=" 160 - [mod."within.website/x"] 161 - version = "v1.9.0" 162 - hash = "sha256-3sPyOHTN7M5Ns3X//85bKomaf8ZqZ9uu4uqiinXoQIQ="