name: Release on: push: tags: - "v*" workflow_dispatch: jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Extract branch name run: | export TAG_NAME=$(echo ${GITHUB_REF#refs/tags/}) echo "tag=$TAG_NAME" >> $GITHUB_OUTPUT id: extract_branch - name: xgo build uses: crazy-max/ghaction-xgo@v2 with: xgo_version: latest go_version: 1.21.x dest: dist pkg: cmd/dashboard prefix: dashboard targets: linux/amd64,linux/arm64,linux/arm-7,linux/s390x,linux/riscv64,windows/amd64,windows/386,windows/arm64 # linux/386, v: true x: false race: false tags: timetzdata ldflags: -s -w --extldflags '-static -fpic' -X github.com/naiba/nezha/service/singleton.Version=${{ steps.extract_branch.outputs.tag }} buildmode: default - name: fix dist run: | ls -al dist/ mv dist/dashboard-linux-arm-7 dist/dashboard-linux-arm - name: Log in to the GHCR uses: docker/login-action@master with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Log in to the AliyunCS uses: docker/login-action@master with: registry: registry.cn-shanghai.aliyuncs.com username: ${{ secrets.ALI_USER }} password: ${{ secrets.ALI_PAT }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Set up image name run: | GHRC_IMAGE_NAME=$(echo "ghcr.io/${{ github.repository_owner }}/nezha-dashboard" | tr '[:upper:]' '[:lower:]') if [ ${{ github.repository_owner }} = "naiba" ] then ALI_IMAGE_NAME=$(echo "registry.cn-shanghai.aliyuncs.com/naibahq/nezha-dashboard") else ALI_IMAGE_NAME=$(echo "registry.cn-shanghai.aliyuncs.com/${{ github.repository_owner }}/nezha-dashboard" | tr '[:upper:]' '[:lower:]') fi echo "::set-output name=GHRC_IMAGE_NAME::$GHRC_IMAGE_NAME" echo "::set-output name=ALI_IMAGE_NAME::$ALI_IMAGE_NAME" id: image-name - name: Build dasbboard image And Push uses: docker/build-push-action@v5 with: context: . file: ./Dockerfile platforms: linux/amd64,linux/arm64,linux/arm,linux/s390x,linux/riscv64 # linux/386, push: true tags: | ${{ steps.image-name.outputs.GHRC_IMAGE_NAME }}:latest ${{ steps.image-name.outputs.GHRC_IMAGE_NAME }}:${{ steps.extract_branch.outputs.tag }} ${{ steps.image-name.outputs.ALI_IMAGE_NAME }}:latest ${{ steps.image-name.outputs.ALI_IMAGE_NAME }}:${{ steps.extract_branch.outputs.tag }} - name: Compress dist files run: | for file in dist/*; do if [ -f "$file" ]; then zip -r "$file.zip" "$file" fi done - name: Release uses: ncipollo/release-action@v1 with: artifacts: "dist/*.zip" generateReleaseNotes: true - name: Purge jsdelivr cache run: | curl -s https://purge.jsdelivr.net/gh/${{ github.repository_owner }}/nezha@master/script/install.sh curl -s https://purge.jsdelivr.net/gh/${{ github.repository_owner }}/nezha@master/script/nezha-agent.service curl -s https://purge.jsdelivr.net/gh/${{ github.repository_owner }}/nezha@master/script/docker-compose.yaml curl -s https://purge.jsdelivr.net/gh/${{ github.repository_owner }}/nezha@master/script/config.yaml LOWER_USERNAME=$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]') curl -s https://purge.jsdelivr.net/gh/$LOWER_USERNAME/nezha@master/script/install.sh curl -s https://purge.jsdelivr.net/gh/$LOWER_USERNAME/nezha@master/script/nezha-agent.service curl -s https://purge.jsdelivr.net/gh/$LOWER_USERNAME/nezha@master/script/docker-compose.yaml curl -s https://purge.jsdelivr.net/gh/$LOWER_USERNAME/nezha@master/script/config.yaml