name: Go Release permissions: contents: write on: push: tags: - 'v*' jobs: build: runs-on: ubuntu-latest name: Build and Push Docker Image steps: - name: Checkout Code uses: actions/checkout@v4 - name: Checkout Frontend uses: actions/checkout@v4 with: repository: 'donetick/frontend' token: ${{ secrets.GITHUB_TOKEN }} path: 'frontend-code' # build frontend - name: Install Node.js uses: actions/setup-node@v2 with: node-version: '16' - name: Install Dependencies run: | cd frontend-code npm install - name: Build Frontend run: | cd frontend-code npm run build-selfhosted - name: Copy Frontend run: | rm -rf ./frontend/dist cp -r frontend-code/dist ./frontend/dist - name: Set up Go uses: actions/setup-go@v5 with: go-version: 1.22 check-latest: true cache: true - name: Run GoReleaser uses: goreleaser/goreleaser-action@v6 with: # either 'goreleaser' (default) or 'goreleaser-pro' distribution: goreleaser # 'latest', 'nightly', or a semver version: latest args: release --clean --skip=validate env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # I added QEMU Emulation support for non-native architectures and also Buildx to enables multi-architecture. not sure if there is better/faster way to do this - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to Docker Hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and push Docker image uses: docker/build-push-action@v5 with: context: . push: true tags: ${{ secrets.DOCKER_USERNAME }}/donetick:latest, ${{ secrets.DOCKER_USERNAME }}/donetick:${{ github.ref_name }} platforms: linux/amd64,linux/arm64,linux/arm/v7