name: Build Dev on: workflow_dispatch: push: branches: - 'main' paths: - 'DEV-VERSION' jobs: build: runs-on: ubuntu-latest strategy: matrix: goos: [linux] goarch: [amd64, arm64] env: OUTPUT_BINARY: ghproxy GO_VERSION: 1.23.2 steps: - uses: actions/checkout@v3 - name: Load VERSION run: | if [ -f DEV-VERSION ]; then echo "VERSION=$(cat DEV-VERSION)" >> $GITHUB_ENV else echo "DEV-VERSION file not found!" && exit 1 fi - name: Set up Go uses: actions/setup-go@v3 with: go-version: ${{ env.GO_VERSION }} - name: Install UPX run: | sudo apt update sudo apt install upx -y - name: Build env: GOOS: ${{ matrix.goos }} GOARCH: ${{ matrix.goarch }} run: | CGO_ENABLED=0 go build -o ${{ env.OUTPUT_BINARY }}-${{matrix.goos}}-${{matrix.goarch}} ./main.go upx -9 ${{ env.OUTPUT_BINARY }}-${{matrix.goos}}-${{matrix.goarch}} - name: Package run: | tar -czvf ${{ env.OUTPUT_BINARY }}-${{matrix.goos}}-${{matrix.goarch}}.tar.gz ./${{ env.OUTPUT_BINARY }}-${{matrix.goos}}-${{matrix.goarch}} - name: Upload to GitHub Artifacts uses: actions/upload-artifact@v3 with: name: ${{ env.OUTPUT_BINARY }} path: | ./${{ env.OUTPUT_BINARY }}* - name: 上传至Release id: create_release uses: ncipollo/release-action@v1 with: name: ${{ env.VERSION }} artifacts: ./${{ env.OUTPUT_BINARY }}* token: ${{ secrets.GITHUB_TOKEN }} tag: ${{ env.VERSION }} allowUpdates: true prerelease: true env: export PATH: $PATH:/usr/local/go/bin docker: runs-on: ubuntu-latest needs: build env: IMAGE_NAME: wjqserver/ghproxy PROG_NAME: ghproxy DOCKERFILE: docker/dockerfile/dev/Dockerfile steps: - name: Checkout uses: actions/checkout@v4 - name: Load VERSION run: | if [ -f DEV-VERSION ]; then echo "VERSION=$(cat DEV-VERSION)" >> $GITHUB_ENV else echo "DEV-VERSION file not found!" && exit 1 fi - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build Docker image run: | docker buildx build --platform linux/amd64,linux/arm64 -t ${{ env.PROG_NAME }}:dev,${{ env.PROG_NAME }}:${{ env.VERSION }} -f ./${{ env.DOCKERFILE }} - name: Install Slim run: | curl -L -o ds.tar.gz https://github.com/slimtoolkit/slim/releases/download/1.40.11/dist_linux.tar.gz tar -xvf ds.tar.gz mv dist_linux/slim /usr/local/bin/ mv dist_linux/slim-sensor /usr/local/bin/ rm -rf ds.tar.gz dist_linux - name: Optimize Docker image using Slim run: | slimlim build --include-path /data --http-probe --continue-after 20 --tag ${{ env.PROG_NAME }}:${{ env.VERSION }} ${{ env.PROG_NAME }}:dev - name: Push Docker image run: | docker tag ${{ env.PROG_NAME }}:${{ env.VERSION }} ${{ env.IMAGE_NAME }}:${{ env.VERSION }} docker tag ${{ env.PROG_NAME }}:dev ${{ env.IMAGE_NAME }}:dev docker push ${{ env.IMAGE_NAME }}:${{ env.VERSION }} docker push ${{ env.IMAGE_NAME }}:dev