# 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: 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: | 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 }}