mirror of
https://github.com/containous/traefik.git
synced 2025-01-05 09:17:52 +03:00
128 lines
3.3 KiB
YAML
128 lines
3.3 KiB
YAML
name: Release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*.*.*'
|
|
|
|
env:
|
|
GO_VERSION: '1.23'
|
|
CGO_ENABLED: 0
|
|
VERSION: ${{ github.ref_name }}
|
|
TRAEFIKER_EMAIL: "traefiker@traefik.io"
|
|
CODENAME: mimolette
|
|
|
|
jobs:
|
|
|
|
build-webui:
|
|
if: github.ref_type == 'tag'
|
|
uses: ./.github/workflows/template-webui.yaml
|
|
|
|
build:
|
|
if: github.ref_type == 'tag'
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
os: [ linux-amd64, linux-386, linux-arm, linux-arm64, linux-ppc64le, linux-s390x, linux-riscv64, darwin, windows-amd64, windows-arm64, windows-386, freebsd, openbsd ]
|
|
needs:
|
|
- build-webui
|
|
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Set up Go ${{ env.GO_VERSION }}
|
|
uses: actions/setup-go@v5
|
|
env:
|
|
# Ensure cache consistency on Linux, see https://github.com/actions/setup-go/pull/383
|
|
ImageOS: ${{ matrix.os }}
|
|
with:
|
|
go-version: ${{ env.GO_VERSION }}
|
|
|
|
- name: Artifact webui
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: webui.tar.gz
|
|
|
|
- name: Untar webui
|
|
run: |
|
|
tar xvf webui.tar.gz
|
|
rm webui.tar.gz
|
|
|
|
- name: Go generate
|
|
run: go generate
|
|
|
|
|
|
- name: Generate goreleaser file
|
|
run: |
|
|
GORELEASER_CONFIG_FILE_PATH=$(go run ./internal/release "${{ matrix.os }}")
|
|
echo "GORELEASER_CONFIG_FILE_PATH=$GORELEASER_CONFIG_FILE_PATH" >> $GITHUB_ENV
|
|
|
|
- name: Build with goreleaser
|
|
uses: goreleaser/goreleaser-action@v6
|
|
with:
|
|
distribution: goreleaser
|
|
# 'latest', 'nightly', or a semver
|
|
version: '~> v2'
|
|
args: release --clean --timeout="90m" --config "${{ env.GORELEASER_CONFIG_FILE_PATH }}"
|
|
|
|
- name: Artifact binaries
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ matrix.os }}-binaries
|
|
path: |
|
|
dist/**/*_checksums.txt
|
|
dist/**/*.tar.gz
|
|
dist/**/*.zip
|
|
retention-days: 1
|
|
|
|
release:
|
|
if: github.ref_type == 'tag'
|
|
runs-on: ubuntu-latest
|
|
|
|
needs:
|
|
- build
|
|
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Retrieve the secret and decode it to a file
|
|
env:
|
|
TRAEFIKER_RSA: ${{ secrets.TRAEFIKER_RSA }}
|
|
run: |
|
|
mkdir -p ~/.ssh
|
|
echo "${TRAEFIKER_RSA}" | base64 --decode > ~/.ssh/traefiker_rsa
|
|
|
|
- name: Download All Artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: dist/
|
|
pattern: "*-binaries"
|
|
merge-multiple: true
|
|
|
|
- name: Publish Release
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
run: |
|
|
cat dist/**/*_checksums.txt >> "dist/traefik_${VERSION}_checksums.txt"
|
|
rm dist/**/*_checksums.txt
|
|
tar cfz "dist/traefik-${VERSION}.src.tar.gz" \
|
|
--exclude-vcs \
|
|
--exclude .idea \
|
|
--exclude .travis \
|
|
--exclude .semaphoreci \
|
|
--exclude .github \
|
|
--exclude dist .
|
|
|
|
chown -R "$(id -u)":"$(id -g)" dist/
|
|
gh release create ${VERSION} ./dist/**/traefik*.{zip,tar.gz} ./dist/traefik*.{tar.gz,txt} --repo traefik/traefik --title ${VERSION} --notes ${VERSION}
|
|
|
|
./script/deploy.sh
|
|
|