name: Release on: workflow_dispatch: inputs: version: description: The version to release (e.g. v1.0.0) required: true type: string jobs: release: name: Release permissions: contents: write runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: 1.22.x - run: go mod download - run: go install github.com/a-h/templ/cmd/templ@v0.2.771 - name: Generate Templ Files run: make generate-templ - name: Generate CSS run: | curl -sLO https://github.com/tailwindlabs/tailwindcss/releases/latest/download/tailwindcss-linux-x64 chmod +x tailwindcss-linux-x64 mv tailwindcss-linux-x64 tailwindcss ./tailwindcss -i ./styles/input.css -o ./dist/assets/css/output@${{ github.event.inputs.version }}.css --minify - uses: sqlc-dev/setup-sqlc@v4 with: sqlc-version: '1.27.0' - run: sqlc generate - name: Build Application run: go build -o ./app -ldflags="-s -w -X version.Value=${{ github.event.inputs.version }}" - name: Create Tag uses: piszmog/create-tag@v1 with: version: ${{ github.event.inputs.version }} token: ${{ secrets.GITHUB_TOKEN }} - name: Release uses: softprops/action-gh-release@v2 with: name: ${{ github.event.inputs.version }} tag_name: ${{ github.event.inputs.version }} generate_release_notes: true files: app publish: name: Publish Docker runs-on: ubuntu-latest permissions: contents: read packages: write needs: - release steps: - uses: actions/checkout@v4 - uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - uses: docker/metadata-action@v5 id: meta with: images: ghcr.io/piszmog/my-app tags: | type=raw,value=${{ github.event.inputs.version }} - uses: docker/build-push-action@v5 with: push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | VERSION=$${{ github.event.inputs.version }}