name: release on: push: branches: - main jobs: docker: runs-on: ubuntu-latest steps: - name: Git describe id: ghd uses: proudust/gh-describe@v2 - name: Login to GHCR uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build and push uses: docker/build-push-action@v6 with: platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8 push: true tags: ghcr.io/go-vikunja/vikunja:unstable build-args: | RELEASE_VERSION=${{ steps.ghd.outputs.describe }} desktop: strategy: matrix: os: - ubuntu-latest - windows-latest - macos-latest runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - name: Git describe id: ghd uses: proudust/gh-describe@v2 - name: Install pnpm uses: pnpm/action-setup@v4 with: package_json_file: desktop/package.json - name: Setup Node uses: actions/setup-node@v4 with: node-version: 22 cache: pnpm cache-dependency-path: desktop/pnpm-lock.yaml - name: Install Linux dependencies if: ${{ runner.os == 'Linux' }} run: sudo apt-get install --no-install-recommends -y libopenjp2-tools rpm libarchive-tools - name: Build desktop app working-directory: desktop run: | pnpm install --fetch-timeout 100000 # TODO use the built output from a previous frontend build step node build.js "${{ steps.ghd.outputs.describe }}" ${{ github.ref_type == 'tag' }} - name: Upload to S3 uses: kolaente/s3-action@v1.0.1 with: s3-access-key-id: ${{ secrets.HETZNER_S3_ACCESS_KEY }} s3-secret-access-key: ${{ secrets.HETZNER_S3_SECRET_KEY }} s3-endpoint: 'https://fsn1.your-objectstorage.com' s3-bucket: 'vikunja' files: 'desktop/dist/Vikunja*' target-path: /desktop/${{ github.ref_type == 'tag' && steps.ghd.outputs.describe || 'unstable' }} s3-region: 'fsn1' strip-path-prefix: desktop/dist/ exclude: 'desktop/dist/*.blockmap'