name: Build and Release on: push: tags: - '*' jobs: build: name: Build runs-on: self-hosted permissions: contents: read packages: write steps: - name: Set version id: version run: echo "::set-output name=version::$(echo ${GITHUB_REF#refs/tags/})" - name: Set up Go uses: actions/setup-go@v4 with: go-version: '1.21' - name: Check out code uses: actions/checkout@v4 - name: Cross-compile with xgo uses: crazy-max/ghaction-xgo@v3 with: xgo_version: latest go_version: 1.21 pkg: ./cmd/zurg dest: artifacts prefix: zurg targets: windows/amd64,linux/amd64,linux/arm64,darwin/arm64 v: true x: false race: false ldflags: > -s -w -X 'github.com/debridmediamanager/zurg/internal.BuiltAt=$(date +%Y-%m-%dT%H:%M:%S)' -X 'github.com/debridmediamanager/zurg/internal.GoVersion=$(go version | cut -d ' ' -f 3)' -X 'github.com/debridmediamanager/zurg/internal.GitCommit=$(git rev-parse HEAD)' -X 'github.com/debridmediamanager/zurg/internal.Version=${{ steps.version.outputs.version }}' buildmode: default trimpath: true - name: Compress artifacts run: | mkdir -p compressed_artifacts for platform in windows-amd64.exe linux-amd64 linux-arm64 darwin-arm64; do # check if windows extension="" if [[ $platform == *".exe" ]]; then platform=$(echo $platform | sed 's/.exe//g') extension=".exe" fi cd artifacts cp -f "zurg-$platform$extension" zurg zip -r "../compressed_artifacts/zurg-${{ steps.version.outputs.version }}-$platform.zip" zurg cd .. done - name: Upload artifacts to workflow uses: actions/upload-artifact@v3 with: name: compiled-binaries path: compressed_artifacts/ release: name: Release needs: build runs-on: ubuntu-latest permissions: contents: write steps: - name: Set version id: version run: echo "::set-output name=version::$(echo ${GITHUB_REF#refs/tags/})" - name: Download artifacts uses: actions/download-artifact@v3 with: name: compiled-binaries path: compressed_artifacts - name: Publish to zurg-testing run: | git config --global user.name "Zurg" git config --global user.email "zurg@debridmediamanager.com" git lfs install - name: Publish to zurg-early-releases run: | git clone https://x-access-token:${{ secrets.TOKEN }}@github.com/debridmediamanager/zurg-early-releases.git mkdir -p zurg-early-releases/releases/${{ steps.version.outputs.version }} cp -fR compressed_artifacts/* zurg-early-releases/releases/${{ steps.version.outputs.version }} cd zurg-early-releases/releases/${{ steps.version.outputs.version }} git lfs track "*.zip" git add . git commit -m "Release ${{ steps.version.outputs.version }}" git push - name: Publish to zurg-testing if: startsWith(github.ref, 'refs/tags/v') run: | git clone https://x-access-token:${{ secrets.TOKEN }}@github.com/debridmediamanager/zurg-testing.git mkdir -p zurg-testing/releases/${{ steps.version.outputs.version }} cp -fR compressed_artifacts/* zurg-testing/releases/${{ steps.version.outputs.version }} cd zurg-testing/releases/${{ steps.version.outputs.version }} git lfs track "*.zip" git add . git commit -m "Release ${{ steps.version.outputs.version }}" git push