# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json # docs: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions name: 🧪 Tests on: push: branches: [master, main] tags-ignore: ['**'] paths-ignore: ['**.md'] pull_request: paths-ignore: ['**.md'] concurrency: group: ${{ github.ref }} cancel-in-progress: true jobs: gitleaks: name: Check for GitLeaks runs-on: ubuntu-latest steps: - {uses: actions/checkout@v4, with: {fetch-depth: 0}} - uses: gacts/gitleaks@v1 golangci-lint: name: Run golangci-lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - {uses: actions/setup-go@v5, with: {go-version-file: go.mod}} - uses: golangci/golangci-lint-action@v6 go-test: name: Unit tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - {uses: actions/setup-go@v5, with: {go-version-file: go.mod}} - run: go test -race ./... build: name: Build for ${{ matrix.os }} (${{ matrix.arch }}) runs-on: ubuntu-latest strategy: fail-fast: false matrix: os: [linux, darwin] # linux, freebsd, darwin, windows arch: [amd64] # amd64, 386 needs: [golangci-lint, go-test] steps: - uses: actions/checkout@v4 - {uses: actions/setup-go@v5, with: {go-version-file: go.mod}} - {uses: gacts/github-slug@v1, id: slug} - env: GOOS: ${{ matrix.os }} GOARCH: ${{ matrix.arch }} CGO_ENABLED: 0 LDFLAGS: -s -w -X gh.tarampamp.am/error-pages/internal/appmeta.version=${{ steps.slug.outputs.commit-hash-short }} run: go build -trimpath -ldflags "$LDFLAGS" -o ./error-pages ./cmd/error-pages/ - {if: matrix.os == 'linux', run: ./error-pages --version && ./error-pages -h} - uses: actions/upload-artifact@v4 with: name: error-pages-${{ matrix.os }}-${{ matrix.arch }} path: error-pages if-no-files-found: error retention-days: 1 generate: name: Run the templates generator runs-on: ubuntu-latest needs: [build] steps: - uses: actions/checkout@v4 - uses: actions/download-artifact@v4 with: {name: error-pages-linux-amd64, path: .artifact} - working-directory: .artifact run: mv ./error-pages ./../error-pages && chmod +x ./../error-pages - run: mkdir ./out && ./error-pages --log-level=debug build --index --target-dir ./out - run: | test -f ./out/index.html test -f ./out/ghost/404.html test -f ./out/l7-dark/404.html test -f ./out/l7-light/404.html test -f ./out/shuffle/404.html test -f ./out/noise/404.html test -f ./out/hacker-terminal/404.html test -f ./out/cats/404.html test -f ./out/lost-in-space/404.html test -f ./out/app-down/404.html test -f ./out/connection/404.html test -f ./out/orient/404.html docker-image: name: Build the docker image runs-on: ubuntu-latest needs: [golangci-lint, go-test] steps: - uses: actions/checkout@v4 - {uses: gacts/github-slug@v1, id: slug} - uses: docker/build-push-action@v5 with: push: false build-args: "APP_VERSION=${{ steps.slug.outputs.commit-hash-short }}" tags: app:ci - run: docker save app:ci > ./docker-image.tar - uses: actions/upload-artifact@v4 with: {name: docker-image, path: ./docker-image.tar, retention-days: 1}