Skip to content

Add website import functionality with secure headless browser support and image URL preservation #54

Add website import functionality with secure headless browser support and image URL preservation

Add website import functionality with secure headless browser support and image URL preservation #54

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
GO_VERSION: "1.22"
jobs:
test:
name: Test
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
go: ["1.22", "1.23"]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go }}
- name: Cache Go modules
uses: actions/cache@v4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Download dependencies
run: go mod download
- name: Run tests
run: go test -v -race -coverprofile=coverage.out ./...
- name: Upload coverage
uses: codecov/codecov-action@v4
if: matrix.os == 'ubuntu-latest' && matrix.go == '1.22'
with:
file: ./coverage.out
flags: unittests
name: codecov-umbrella
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
- name: Run golangci-lint
uses: golangci/golangci-lint-action@v6
with:
version: latest
args: --timeout=5m
build:
name: Build
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-latest
goos: linux
goarch: amd64
name: linux-amd64
ext: ""
- os: macos-latest
goos: darwin
goarch: amd64
name: darwin-amd64
ext: ""
- os: macos-latest
goos: darwin
goarch: arm64
name: darwin-arm64
ext: ""
- os: windows-latest
goos: windows
goarch: amd64
name: windows-amd64
ext: ".exe"
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
- name: Setup Windows build environment
if: matrix.goos == 'windows'
shell: bash
run: |
# Install MSYS2 for complete build environment
choco install msys2 -y
# Initialize MSYS2 and install required packages
C:/tools/msys64/usr/bin/bash -lc 'pacman --noconfirm -S mingw-w64-x86_64-gcc mingw-w64-x86_64-pkg-config mingw-w64-x86_64-sqlite3'
# Add MSYS2 MinGW64 to PATH
echo "C:\\tools\\msys64\\mingw64\\bin" >> $GITHUB_PATH
# Verify installation
C:/tools/msys64/mingw64/bin/gcc --version || echo "GCC not found"
- name: Build binary
shell: bash
run: |
if [ "${{ matrix.goos }}" = "windows" ]; then
# Set up CGO environment for Windows with MSYS2
export CGO_ENABLED=1
export CC=C:/tools/msys64/mingw64/bin/gcc.exe
export CXX=C:/tools/msys64/mingw64/bin/g++.exe
export PKG_CONFIG_PATH="C:/tools/msys64/mingw64/lib/pkgconfig"
export PATH="C:/tools/msys64/mingw64/bin:$PATH"
fi
CGO_ENABLED=1 GOOS=${{ matrix.goos }} GOARCH=${{ matrix.goarch }} go build -v -o ml-notes-${{ matrix.name }}${{ matrix.ext }}
- name: Test binary
if: matrix.goarch == 'amd64' # Only test on native architecture
shell: bash
run: |
./ml-notes-${{ matrix.name }}${{ matrix.ext }} --help