name: Build releases run-name: ${{ gitea.actor }} is runs ci pipeline on: push: tags: - "v*" jobs: build-docker: runs-on: ubuntu-latest container: image: catthehacker/ubuntu:act-latest strategy: matrix: include: - context: ./backend image: focus-backend - context: ./frontend dockerfile: ./frontend/Dockerfile image: focus-frontend - context: . image: focus env: RUNNER_TOOL_CACHE: /toolcaches steps: - name: Checkout uses: actions/checkout@v4 - name: Extract tag uses: olegtarasov/get-tag@v2.1.2 id: tagName with: tagRegex: "v(.*)" - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 with: config-inline: | [registry."git.bhasher.com"] http = true insecure = true - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Login uses: docker/login-action@v2 with: registry: git.bhasher.com username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and push ${{ matrix.image }} uses: docker/build-push-action@v5 with: context: ${{ matrix.context }} file: ${{ matrix.context }}/Dockerfile push: true platforms: | linux/amd64 linux/arm64 tags: | git.bhasher.com/bhasher/${{ matrix.image }}:latest git.bhasher.com/bhasher/${{ matrix.image }}:${{ steps.tagName.outputs.tag }} build-tauri: runs-on: ubuntu-latest container: image: catthehacker/ubuntu:act-latest env: RUNNER_TOOL_CACHE: /toolcache steps: - name: Checkout uses: actions/checkout@v4 - name: Extract tag uses: olegtarasov/get-tag@v2.1.2 id: tagName with: tagRegex: "v(.*)" - name: Set up node uses: actions/setup-node@v4 with: node-version: 20 - name: Install Rust stable uses: dtolnay/rust-toolchain@stable - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.0-dev libgtk-3-dev libappindicator3-dev librsvg2-dev patchelf - name: Install frontend dependencies run: | cd frontend npm install cd .. - name: Build desktop app run: | cd frontend npm run tauri build cd .. - name: Publish desktop app uses: akkuman/gitea-release-action@v1 with: name: Focus ${{ steps.tagName.outputs.tag }} prerelease: true files: |- frontend/src-tauri/target/release/focus-desktop frontend/src-tauri/target/release/bundle/deb/*.deb frontend/src-tauri/target/release/bundle/appimage/*.AppImage - name: Generate sha256sum run: | mkdir -p ./ci/pkgbuild/desktop-bin sha256sum frontend/src-tauri/target/release/bundle/deb/*.deb | cut -d" " -f 1 > ./ci/pkgbuild/desktop-bin/sha256sum - name: Generate PKGBUILD env: RELEASE_TAG: ${{ steps.tagName.outputs.tag }} run: ./ci/generate-pkgbuild-desktop.py - name: Publish AUR package uses: KSXGitHub/github-actions-deploy-aur@v2.7.0 with: pkgname: focus-desktop-bin pkgbuild: ./ci/pkgbuild/desktop-bin/PKGBUILD commit_username: ${{ secrets.AUR_USERNAME }} commit_email: ${{ secrets.AUR_EMAIL }} ssh_private_key: ${{ secrets.AUR_SSH_KEY }} commit_message: Update focus-desktop-bin to ${{ steps.tagName.outputs.tag }} build-server: runs-on: ubuntu-latest container: image: catthehacker/ubuntu:act-latest env: RUNNER_TOOL_CACHE: /toolcache steps: - name: Checkout uses: actions/checkout@v4 - name: Extract tag uses: olegtarasov/get-tag@v2.1.2 id: tagName with: tagRegex: "v(.*)" - name: Set up go uses: actions/setup-go@v3 with: go-version: 1.21.5 - name: Build server run: | cd backend go build -o focus-server . cd .. - name: Publish server uses: akkuman/gitea-release-action@v1 with: name: Focus ${{ steps.tagName.outputs.tag }} prerelease: true files: |- backend/focus-server - name: Generate sha256sum run: | mkdir -p ./ci/pkgbuild/server-bin sha256sum backend/focus-server | cut -d" " -f 1 > ./ci/pkgbuild/server-bin/sha256sum - name: Generate PKGBUILD env: RELEASE_TAG: ${{ steps.tagName.outputs.tag }} run: ./ci/generate-pkgbuild-server-bin.py - name: Publish AUR package uses: KSXGitHub/github-actions-deploy-aur@v2.7.0 with: pkgname: focus-server-bin pkgbuild: ./ci/pkgbuild/server-bin/PKGBUILD commit_username: ${{ secrets.AUR_USERNAME }} commit_email: ${{ secrets.AUR_EMAIL }} ssh_private_key: ${{ secrets.AUR_SSH_KEY }} commit_message: Update focus-server-bin to ${{ steps.tagName.outputs.tag }}