Skip to content

Remove CGO_LDFLAGS on linux-amd64 #33

Remove CGO_LDFLAGS on linux-amd64

Remove CGO_LDFLAGS on linux-amd64 #33

Workflow file for this run

name: pixlet
on:
push:
branches:
- main
tags:
- "v[0-9]+.[0-9]+.[0-9]+"
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
lint:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.24.0"
- name: Install buildifier
run: make install-buildifier
- name: Run buildifier
run: buildifier -d -r ./
build-and-test-release:
name: Build and Test Release Artifacts
strategy:
matrix:
os: [ubuntu-24.04, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: "1.24.0"
- name: Install Node
uses: actions/setup-node@v4
with:
node-version: "16"
- name: Setup MSYS2
uses: msys2/setup-msys2@v2
if: matrix.os == 'windows-latest'
with:
msystem: mingw64
update: true
install: >-
make
curl
mingw-w64-x86_64-go
mingw-w64-x86_64-toolchain
- name: Install Linux dependencies
if: matrix.os == 'ubuntu-24.04'
run: sudo ./scripts/setup-linux.sh
- name: Install macOS dependencies
if: matrix.os == 'macos-latest'
run: ./scripts/setup-macos.sh
- name: Install Windows dependencies
if: matrix.os == 'windows-latest'
shell: msys2 {0}
run: |
set MSYSTEM=MINGW64
curl -LO https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-libwebp-1.5.0-1-any.pkg.tar.zst
pacman -U --noconfirm mingw-w64-x86_64-libwebp-1.5.0-1-any.pkg.tar.zst
- name: Install frontend dependencies
run: npm install
- name: Build frontend
run: npm run build
- name: Build Linux
run: make build
if: matrix.os == 'ubuntu-24.04'
- name: Build macOS
run: make build
if: matrix.os == 'macos-latest'
env:
LIBRARY_PATH: "/opt/homebrew/lib"
CGO_CPPFLAGS: "-I/opt/homebrew/include"
- name: Build Windows
shell: msys2 {0}
run: |
set MSYSTEM=MINGW64
make build
if: matrix.os == 'windows-latest'
- name: Test Linux
run: make test
if: matrix.os == 'ubuntu-24.04'
- name: Test macOS
run: make test
if: matrix.os == 'macos-latest'
env:
LIBRARY_PATH: "/opt/homebrew/lib"
CGO_CPPFLAGS: "-I/opt/homebrew/include"
- name: Test Windows
shell: msys2 {0}
run: |
set MSYSTEM=MINGW64
make test
if: matrix.os == 'windows-latest'
- name: Set pixlet version
id: vars
run: echo "tag=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT
if: matrix.os == 'ubuntu-24.04' || matrix.os == 'macos-latest'
- name: Set Windows pixlet version
id: windowsvars
shell: msys2 {0}
run: |
set MSYSTEM=MINGW64
echo "tag=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT
if: matrix.os == 'windows-latest'
- name: Build Release Linux
if: matrix.os == 'ubuntu-24.04'
run: make release-linux
env:
PIXLET_VERSION: ${{ steps.vars.outputs.tag }}
- name: Build Release macOS
if: matrix.os == 'macos-latest'
run: make release-macos
env:
PIXLET_VERSION: ${{ steps.vars.outputs.tag }}
LIBRARY_PATH: "/opt/homebrew/lib"
CGO_CPPFLAGS: "-I/opt/homebrew/include"
- name: Build Release Windows
if: matrix.os == 'windows-latest'
shell: msys2 {0}
run: |
set MSYSTEM=MINGW64
make release-windows
env:
PIXLET_VERSION: ${{ steps.windowsvars.outputs.tag }}
- name: Upload Release Artifacts
uses: actions/upload-artifact@v4
with:
name: release-artifacts-${{ matrix.os }}
path: build
create-release:
name: Create Github Release
runs-on: ubuntu-latest
needs: build-and-test-release
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Fetch Release Artifacts
uses: actions/download-artifact@v4
with:
path: build
pattern: release-artifacts-*
merge-multiple: true
- name: Create Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref_name }}
run: |
gh release create "$tag" \
--repo="${GITHUB_REPOSITORY}" \
--title="${GITHUB_REPOSITORY#*/} ${tag#v}" \
--generate-notes \
build/*.tar.gz
build-and-push-image:
runs-on: ubuntu-latest
# Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.
permissions:
contents: read
packages: write
attestations: write
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
flavor: |
latest=true
prefix=
suffix=
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push Docker image
id: push
uses: docker/build-push-action@v6
with:
context: .
push: true
platforms: linux/amd64,linux/arm64
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
- name: Generate artifact attestation
uses: actions/attest-build-provenance@v2
with:
subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}}
subject-digest: ${{ steps.push.outputs.digest }}
push-to-registry: true