name: Package on: push: tags: - 'v*.*.*' workflow_dispatch: inputs: build-target: description: 'Build Target (Release Type)' type: choice required: true options: - nightly default: "nightly" git-ref: description: "Release Git Ref (Which branch or tag to build?)" required: true default: "master" is-draft: description: 'Draft Release? (Beta only, Nightly will always be a non-draft)' type: boolean required: true default: true is-pre-release: description: 'Pre Release? (labeled as "PreRelease")' type: boolean required: true default: true schedule: - cron: "0 3 * * *" jobs: build-docker-image: runs-on: ubuntu-latest env: VITE_BASE_API: /api/ steps: - name: Checkout uses: actions/checkout@v4 - uses: pnpm/action-setup@v3 name: Install pnpm with: version: 8 run_install: false - name: Use Node.js uses: actions/setup-node@v4 with: node-version: '20.x' - name: Install dependencies run: pnpm install working-directory: ./dashboard/ - name: Build Dashboard run: npm run build -- --outDir dist --base '/dashboard/' working-directory: ./dashboard/ - 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: ${{ vars.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push if: ${{ github.event_name == 'push' }} uses: docker/build-push-action@v5 with: context: . platforms: linux/amd64,linux/arm64 push: true tags: | dawsh/marzneshin:latest dawsh/marzneshin:${{github.ref_name}} - name: Nightly build and push for docker if: ${{ github.event_name == 'schedule' || github.event.inputs.build-target == 'nightly'}} uses: docker/build-push-action@v5 with: context: . platforms: linux/amd64,linux/arm64 push: true tags: | dawsh/marzneshin:nightly - name: Update Nightly Release if: ${{ github.event_name == 'schedule' || github.event.inputs.build-target == 'nightly'}} uses: andelf/nightly-release@main env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: nightly name: 'Marzneshin nightly release $$' prerelease: true draft: false body: | This is a nightly release of Marzneshin. It's unstable compared to the official releases, **use it with caution**!