Skip to content

cccc

cccc #1

Workflow file for this run

name: Build And Release
on:
push:
tags:
- "v*"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version: "20"
- name: Setup Go
uses: actions/setup-go@v6
with:
go-version-file: go.mod
- name: Install frontend deps
working-directory: web
run: npm ci
- name: Build frontend
working-directory: web
run: npm run build:web
- name: Build Linux binary
run: |
mkdir -p dist
GOOS=linux GOARCH=amd64 go build -o dist/codexsess-linux-amd64 .
- name: Prepare Linux desktop assets
run: |
mkdir -p dist/linux
go run ./scripts/gen_default_icon.go dist/linux/codexsess.png
cp packaging/linux/codexsess.desktop dist/linux/codexsess.desktop
chmod +x packaging/linux/postinstall.sh packaging/linux/postremove.sh
- name: Install nFPM
run: go install github.com/goreleaser/nfpm/v2/cmd/nfpm@latest
- name: Build DEB and RPM packages
env:
VERSION: ${{ github.ref_name }}
run: |
mkdir -p dist/packages
PKG_VERSION="${VERSION#v}"
cat > dist/nfpm.yaml <<EOF
name: codexsess
arch: amd64
platform: linux
version: ${PKG_VERSION}
section: default
priority: optional
maintainer: rickicode
description: CodexSess - Codex account management gateway
vendor: CodexSess
homepage: https://github.com/rickicode/CodexSess
license: MIT
contents:
- src: ./dist/codexsess-linux-amd64
dst: /usr/bin/codexsess
file_info:
mode: 0755
- src: ./dist/linux/codexsess.desktop
dst: /usr/share/applications/codexsess.desktop
file_info:
mode: 0644
- src: ./dist/linux/codexsess.png
dst: /usr/share/icons/hicolor/64x64/apps/codexsess.png
file_info:
mode: 0644
scripts:
postinstall: ./packaging/linux/postinstall.sh
postremove: ./packaging/linux/postremove.sh
EOF
"$(go env GOPATH)/bin/nfpm" package --config dist/nfpm.yaml --packager deb --target dist/packages/codexsess_${PKG_VERSION}_amd64.deb
"$(go env GOPATH)/bin/nfpm" package --config dist/nfpm.yaml --packager rpm --target dist/packages/codexsess-${PKG_VERSION}-1.x86_64.rpm
- name: Build Windows binary with icon
run: |
mkdir -p build/windows
go run ./scripts/gen_default_icon.go build/windows/app.ico
go run github.com/akavel/rsrc@latest -ico build/windows/app.ico -o codexsess_windows_amd64.syso
GOOS=windows GOARCH=amd64 go build -o dist/codexsess-windows-amd64.exe .
- name: Checksums
run: |
cd dist
sha256sum codexsess-linux-amd64 codexsess-windows-amd64.exe > SHA256SUMS.txt
sha256sum packages/*.deb packages/*.rpm >> SHA256SUMS.txt
- name: Upload artifacts
uses: actions/upload-artifact@v7
with:
name: codexsess-build-${{ github.run_number }}
path: |
dist/codexsess-linux-amd64
dist/codexsess-windows-amd64.exe
dist/SHA256SUMS.txt
dist/packages/*.deb
dist/packages/*.rpm
- name: Upload to release
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v2.6.1
with:
files: |
dist/codexsess-linux-amd64
dist/codexsess-windows-amd64.exe
dist/SHA256SUMS.txt
dist/packages/*.deb
dist/packages/*.rpm