diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..c524150a --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,189 @@ +name: Build and Push + +on: + workflow_dispatch: + push: + branches: + - 'master' + tags: + - 'v*' + +jobs: + build-binaries: + name: Build binaries + runs-on: ubuntu-latest + env: { CGO_ENABLED: 0 } + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Go + uses: actions/setup-go@v4 + with: { go-version: '1.20' } + + - name: Build go2rtc_win64 + env: { GOOS: windows, GOARCH: amd64 } + run: go build -ldflags "-s -w" -trimpath + - name: Upload go2rtc_win64 + uses: actions/upload-artifact@v3 + with: { name: go2rtc_win64, path: go2rtc.exe } + + - name: Build go2rtc_win32 + env: { GOOS: windows, GOARCH: 386 } + run: go build -ldflags "-s -w" -trimpath + - name: Upload go2rtc_win32 + uses: actions/upload-artifact@v3 + with: { name: go2rtc_win32, path: go2rtc.exe } + + - name: Build go2rtc_win_arm64 + env: { GOOS: windows, GOARCH: arm64 } + run: go build -ldflags "-s -w" -trimpath + - name: Upload go2rtc_win_arm64 + uses: actions/upload-artifact@v3 + with: { name: go2rtc_win_arm64, path: go2rtc.exe } + + - name: Build go2rtc_linux_amd64 + env: { GOOS: linux, GOARCH: amd64 } + run: go build -ldflags "-s -w" -trimpath + - name: Upload go2rtc_linux_amd64 + uses: actions/upload-artifact@v3 + with: { name: go2rtc_linux_amd64, path: go2rtc } + + - name: Build go2rtc_linux_i386 + env: { GOOS: linux, GOARCH: 386 } + run: go build -ldflags "-s -w" -trimpath + - name: Upload go2rtc_linux_i386 + uses: actions/upload-artifact@v3 + with: { name: go2rtc_linux_i386, path: go2rtc } + + - name: Build go2rtc_linux_arm64 + env: { GOOS: linux, GOARCH: arm64 } + run: go build -ldflags "-s -w" -trimpath + - name: Upload go2rtc_linux_arm64 + uses: actions/upload-artifact@v3 + with: { name: go2rtc_linux_arm64, path: go2rtc } + + - name: Build go2rtc_linux_arm + env: { GOOS: linux, GOARCH: arm, GOARM: 7 } + run: go build -ldflags "-s -w" -trimpath + - name: Upload go2rtc_linux_arm + uses: actions/upload-artifact@v3 + with: { name: go2rtc_linux_arm, path: go2rtc } + + - name: Build go2rtc_linux_armv6 + env: { GOOS: linux, GOARCH: arm, GOARM: 6 } + run: go build -ldflags "-s -w" -trimpath + - name: Upload go2rtc_linux_armv6 + uses: actions/upload-artifact@v3 + with: { name: go2rtc_linux_armv6, path: go2rtc } + + - name: Build go2rtc_linux_mipsel + env: { GOOS: linux, GOARCH: mipsle } + run: go build -ldflags "-s -w" -trimpath + - name: Upload go2rtc_linux_mipsel + uses: actions/upload-artifact@v3 + with: { name: go2rtc_linux_mipsel, path: go2rtc } + + - name: Build go2rtc_mac_amd64 + env: { GOOS: darwin, GOARCH: amd64 } + run: go build -ldflags "-s -w" -trimpath + - name: Upload go2rtc_mac_amd64 + uses: actions/upload-artifact@v3 + with: { name: go2rtc_mac_amd64, path: go2rtc } + + - name: Build go2rtc_mac_arm64 + env: { GOOS: darwin, GOARCH: arm64 } + run: go build -ldflags "-s -w" -trimpath + - name: Upload go2rtc_mac_arm64 + uses: actions/upload-artifact@v3 + with: { name: go2rtc_mac_arm64, path: go2rtc } + + docker-master: + name: Build docker master + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + images: ${{ github.repository }} + tags: | + type=ref,event=branch + type=semver,pattern={{version}},enable=false + type=match,pattern=v(.*),group=1 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to DockerHub + if: github.event_name != 'pull_request' + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v4 + with: + context: . + platforms: | + linux/amd64 + linux/386 + linux/arm/v7 + linux/arm64/v8 + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max + + docker-hardware: + name: Build docker hardware + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Docker meta + id: meta-hw + uses: docker/metadata-action@v4 + with: + images: ${{ github.repository }} + flavor: | + suffix=-hardware + latest=false + tags: | + type=ref,event=branch + type=semver,pattern={{version}},enable=false + type=match,pattern=v(.*),group=1 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to DockerHub + if: github.event_name != 'pull_request' + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v4 + with: + context: . + file: hardware.Dockerfile + platforms: linux/amd64 + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta-hw.outputs.tags }} + labels: ${{ steps.meta-hw.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml deleted file mode 100644 index ae188ff3..00000000 --- a/.github/workflows/docker.yml +++ /dev/null @@ -1,78 +0,0 @@ -name: docker - -on: - workflow_dispatch: - push: - branches: - - 'master' - tags: - - 'v*' - -jobs: - build-and-push: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Docker meta - id: meta - uses: docker/metadata-action@v4 - with: - images: ${{ github.repository }} - tags: | - type=ref,event=branch - type=semver,pattern={{version}},enable=false - type=match,pattern=v(.*),group=1 - - - name: Docker meta Hardware - id: meta-hw - uses: docker/metadata-action@v4 - with: - images: ${{ github.repository }} - flavor: | - suffix=-hardware - latest=false - tags: | - type=ref,event=branch - type=semver,pattern={{version}},enable=false - type=match,pattern=v(.*),group=1 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Login to DockerHub - if: github.event_name != 'pull_request' - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v4 - with: - context: . - platforms: | - linux/amd64 - linux/386 - linux/arm/v7 - linux/arm64/v8 - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max - - name: Build and push Hardware - uses: docker/build-push-action@v4 - with: - context: . - file: hardware.Dockerfile - platforms: linux/amd64 - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ steps.meta-hw.outputs.tags }} - labels: ${{ steps.meta-hw.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index e272da7c..00000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,99 +0,0 @@ -name: release - -on: - workflow_dispatch: -# push: -# tags: -# - 'v*' - -jobs: - build-and-release: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Generate changelog - run: | - echo -e "$(git log $(git describe --tags --abbrev=0)..HEAD --oneline | awk '{print "- "$0}')" > CHANGELOG.md - - name: install lipo - run: | - curl -L -o /tmp/lipo https://github.com/konoui/lipo/releases/latest/download/lipo_Linux_amd64 - chmod +x /tmp/lipo - mv /tmp/lipo /usr/local/bin - - name: Build Go binaries - run: | - #!/bin/bash - - export CGO_ENABLED=0 - - mkdir -p artifacts - - export GOOS=windows - export GOARCH=amd64 - export FILENAME=artifacts/go2rtc_win64.zip - go build -ldflags "-s -w" -trimpath && 7z a -mx9 -sdel "$FILENAME" go2rtc.exe - - export GOOS=windows - export GOARCH=386 - export FILENAME=artifacts/go2rtc_win32.zip - go build -ldflags "-s -w" -trimpath && 7z a -mx9 -sdel "$FILENAME" go2rtc.exe - - export GOOS=windows - export GOARCH=arm64 - export FILENAME=artifacts/go2rtc_win_arm64.zip - go build -ldflags "-s -w" -trimpath && 7z a -mx9 -sdel "$FILENAME" go2rtc.exe - - export GOOS=linux - export GOARCH=amd64 - export FILENAME=artifacts/go2rtc_linux_amd64 - go build -ldflags "-s -w" -trimpath -o "$FILENAME" - - export GOOS=linux - export GOARCH=386 - export FILENAME=artifacts/go2rtc_linux_i386 - go build -ldflags "-s -w" -trimpath -o "$FILENAME" - - export GOOS=linux - export GOARCH=arm64 - export FILENAME=artifacts/go2rtc_linux_arm64 - go build -ldflags "-s -w" -trimpath -o "$FILENAME" - - export GOOS=linux - export GOARCH=arm - export GOARM=7 - export FILENAME=artifacts/go2rtc_linux_arm - go build -ldflags "-s -w" -trimpath -o "$FILENAME" - - export GOOS=linux - export GOARCH=mipsle - export FILENAME=artifacts/go2rtc_linux_mipsel - go build -ldflags "-s -w" -trimpath -o "$FILENAME" - - export GOOS=darwin - export GOARCH=amd64 - go build -ldflags "-s -w" -trimpath -o go2rtc.amd64 - - export GOOS=darwin - export GOARCH=arm64 - go build -ldflags "-s -w" -trimpath -o go2rtc.arm64 - - export FILENAME=artifacts/go2rtc_mac_universal.zip - lipo -output go2rtc -create go2rtc.arm64 go2rtc.amd64 && 7z a -mx9 -sdel "$FILENAME" go2rtc - - parallel --jobs $(nproc) "upx {}" ::: artifacts/go2rtc_linux_* - - name: Setup tmate session - uses: mxschmitt/action-tmate@v3 - if: ${{ failure() }} - - name: Set env - run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV - - name: Create GitHub release - uses: softprops/action-gh-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - files: artifacts/* - generate_release_notes: true - name: Release ${{ env.RELEASE_VERSION }} - body_path: CHANGELOG.md - draft: false - prerelease: false diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 23f14520..99ec86bc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,11 +1,11 @@ name: Test Build and Run on: - push: - branches: - - '*' - pull_request: - merge_group: +# push: +# branches: +# - '*' +# pull_request: +# merge_group: workflow_dispatch: jobs: