mirror of
https://github.com/tarampampam/error-pages.git
synced 2024-08-30 18:22:40 +00:00
106 lines
4.3 KiB
YAML
106 lines
4.3 KiB
YAML
# 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: 🚀 Release
|
|
|
|
on:
|
|
release: # Docs: <https://git.io/JeBz1#release-event-release>
|
|
types: [published]
|
|
|
|
jobs:
|
|
build:
|
|
name: Build for ${{ matrix.os }} (${{ matrix.arch }})
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [linux, darwin, windows] # freebsd
|
|
arch: [amd64, arm64] # 386
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- {uses: actions/setup-go@v5, with: {go-version-file: go.mod}}
|
|
- {uses: gacts/github-slug@v1, id: slug}
|
|
- id: values
|
|
run: echo "binary-name=error-pages-${{ matrix.os }}-${{ matrix.arch }}`[ ${{ matrix.os }} = 'windows' ] && echo '.exe'`" >> $GITHUB_OUTPUT
|
|
- env:
|
|
GOOS: ${{ matrix.os }}
|
|
GOARCH: ${{ matrix.arch }}
|
|
CGO_ENABLED: 0
|
|
LDFLAGS: -s -w -X gh.tarampamp.am/error-pages/internal/version.version=${{ steps.slug.outputs.version }}
|
|
run: go build -trimpath -ldflags "$LDFLAGS" -o "./${{ steps.values.outputs.binary-name }}" ./cmd/error-pages/
|
|
- uses: svenstaro/upload-release-action@v2
|
|
with:
|
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
file: ${{ steps.values.outputs.binary-name }}
|
|
asset_name: ${{ steps.values.outputs.binary-name }}
|
|
tag: ${{ github.ref }}
|
|
|
|
- if: matrix.os == 'linux' && matrix.arch == 'amd64'
|
|
run: mkdir ./out && ./${{ steps.values.outputs.binary-name }} build --index --target-dir ./out
|
|
- if: matrix.os == 'linux' && matrix.arch == 'amd64'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: error-pages-static
|
|
path: out/
|
|
if-no-files-found: error
|
|
retention-days: 1
|
|
- if: matrix.os == 'linux' && matrix.arch == 'amd64'
|
|
working-directory: ./out
|
|
run: zip -r ./../templates.zip .
|
|
- if: matrix.os == 'linux' && matrix.arch == 'amd64'
|
|
uses: svenstaro/upload-release-action@v2
|
|
with:
|
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
file: templates.zip
|
|
asset_name: error-pages-static.zip
|
|
tag: ${{ github.ref }}
|
|
|
|
demo:
|
|
name: Update the demo (GitHub Pages)
|
|
runs-on: ubuntu-latest
|
|
needs: [build]
|
|
steps:
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
name: error-pages-static
|
|
path: .artifact
|
|
- uses: peaceiris/actions-gh-pages@v4
|
|
with:
|
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
publish_dir: ./.artifact
|
|
|
|
docker-image:
|
|
name: Build the docker image
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- {uses: gacts/github-slug@v1, id: slug}
|
|
- uses: docker/setup-qemu-action@v3
|
|
- uses: docker/setup-buildx-action@v3
|
|
- uses: docker/login-action@v3
|
|
with:
|
|
username: ${{ secrets.DOCKER_LOGIN }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
- uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
- uses: docker/build-push-action@v6
|
|
with:
|
|
context: .
|
|
file: Dockerfile
|
|
push: true
|
|
platforms: linux/amd64,linux/arm/v7,linux/arm64/v8
|
|
build-args: "APP_VERSION=${{ steps.slug.outputs.version }}"
|
|
tags: ghcr.io/${{ github.actor }}/${{ github.event.repository.name }}:${{ steps.slug.outputs.version }}
|
|
# tags: | # TODO: uncomment after the stable release
|
|
# tarampampam/error-pages:latest
|
|
# tarampampam/error-pages:${{ steps.slug.outputs.version }}
|
|
# tarampampam/error-pages:${{ steps.slug.outputs.version-major }}.${{ steps.slug.outputs.version-minor }}
|
|
# tarampampam/error-pages:${{ steps.slug.outputs.version-major }}
|
|
# ghcr.io/${{ github.actor }}/${{ github.event.repository.name }}:latest
|
|
# ghcr.io/${{ github.actor }}/${{ github.event.repository.name }}:${{ steps.slug.outputs.version }}
|
|
# ghcr.io/${{ github.actor }}/${{ github.event.repository.name }}:${{ steps.slug.outputs.version-major }}.${{ steps.slug.outputs.version-minor }}
|
|
# ghcr.io/${{ github.actor }}/${{ github.event.repository.name }}:${{ steps.slug.outputs.version-major }}
|