donetick/.github/workflows/go-release.yml

78 lines
2.2 KiB
YAML

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