From 2ad5b9c16fbaae7d0eead6542900e783d6537301 Mon Sep 17 00:00:00 2001 From: haoran Date: Mon, 2 Dec 2024 20:17:23 +0800 Subject: [PATCH] Create caddy.yml --- .github/workflows/caddy.yml | 155 ++++++++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 .github/workflows/caddy.yml diff --git a/.github/workflows/caddy.yml b/.github/workflows/caddy.yml new file mode 100644 index 00000000000..ffef4c74584 --- /dev/null +++ b/.github/workflows/caddy.yml @@ -0,0 +1,155 @@ +name: Build caddy + +on: + workflow_dispatch: + + release: + types: + - 'prereleased' + - 'published' + - 'released' + +jobs: + build: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + config: + - { + name: "windows-386", + GOARCH: 386, + GOOS: windows, + release: true + } + - { + name: "windows-amd64", + GOARCH: amd64, + GOOS: windows, + release: true + } + - { + name: "linux-amd64", + GOARCH: amd64, + GOOS: linux, + release: true + } + - { + name: "linux-arm64", + GOARCH: arm64, + GOOS: linux, + release: true + } + - { + name: "linux-armv5", + GOARCH: arm, + GOARM: 5, + GOOS: linux, + release: true + } + - { + name: "linux-s390x", + GOARCH: s390x, + GOOS: linux, + release: true + } + - { + name: "freebsd-amd64", + GOARCH: amd64, + GOOS: freebsd, + release: true + } + - { + name: "freebsd-arm64", + GOARCH: arm64, + GOOS: linux, + release: true + } + - { + name: "darwin-amd64", + GOARCH: amd64, + GOOS: darwin, + release: true + } + - { + name: "darwin-arm64", + GOARCH: arm64, + GOOS: darwin, + release: true + } + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install go + uses: actions/setup-go@v5 + with: + go-version: '1.23' + check-latest: true + + - name: Install xcaddy + run: go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest + + - name: Build caddy + run: | + mkdir release-tmp + export GOARCH=${{ matrix.config.GOARCH }} + export GOOS=${{ matrix.config.GOOS }} + ~/go/bin/xcaddy build \ + --with github.com/mholt/caddy-l4 \ + --with github.com/caddy-dns/duckdns \ + --with github.com/mholt/caddy-events-exec \ + --with github.com/WeidiDeng/caddy-cloudflare-ip \ + --with github.com/caddyserver/forwardproxy=github.com/klzgrad/forwardproxy@naive \ + --with github.com/imgk/caddy-trojan \ + --with github.com/mholt/caddy-webdav \ + --output ./release-tmp/caddy + + - name: Rename for Windows + if: matrix.config.GOOS == 'windows' + run: | + mv ./release-tmp/caddy ./release-tmp/caddy.exe + + - name: Calculate Hash + run: | + cd ./release-tmp || exit 1 + sha256sum * > sha256 + + - name: Generate zip for Windows + if: matrix.config.GOOS == 'windows' + run: | + mkdir release-ready + cd ./release-tmp + zip -r ../release-ready/caddy-${{ matrix.config.name }}.zip * + + - name: Generate tar for other platform + if: matrix.config.GOOS != 'windows' + run: | + mkdir release-ready + cd ./release-tmp + tar -zcvf ../release-ready/caddy-${{ matrix.config.name }}.tar.gz * + + - name: Upload a Build Artifact + uses: actions/upload-artifact@v4 + with: + name: caddy-${{ github.sha }}-${{ matrix.config.name }} + path: ./release-ready/* + + - name: Upload to GitHub Release for Windows + uses: svenstaro/upload-release-action@v2 + if: github.event_name == 'release' && matrix.config.release && matrix.config.GOOS == 'windows' + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ./release-ready/caddy-${{ matrix.config.name }}.zip + tag: ${{ github.ref }} + overwrite: true + + - name: Upload to GitHub Release for other platform + uses: svenstaro/upload-release-action@v2 + if: github.event_name == 'release' && matrix.config.release && matrix.config.GOOS != 'windows' + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ./release-ready/caddy-${{ matrix.config.name }}.tar.gz + tag: ${{ github.ref }} + overwrite: true