name: Test, Build, and Release on: push: tags: - '*' jobs: test: container: image: docker.matri.cx/nix-runner:v0.1.0 credentials: username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_PASSWORD }} steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Set up cache for Cabal uses: actions/cache@v4 with: path: | ~/.cache/cabal ~/.config/cabal ~/.local/state/cabal key: cabal-${{ hashFiles('tricu.cabal') }} restore-keys: | cabal- - name: Set up cache for Nix uses: DeterminateSystems/magic-nix-cache-action@v2 - name: Initialize Cabal and update package list run: | nix develop --command cabal update - name: Run test suite run: | nix develop --command cabal test build: needs: test container: image: docker.matri.cx/nix-runner:v0.1.0 credentials: username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_PASSWORD }} steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Set up cache for Nix uses: DeterminateSystems/magic-nix-cache-action@v2 - name: Build and shrink binary run: | nix build cp -L ./result/bin/tricu ./tricu chmod 755 ./tricu nix develop --command upx ./tricu - name: Setup go for release action uses: actions/setup-go@v5 with: go-version: '>=1.20.1' - name: Release binary uses: https://gitea.com/actions/release-action@main with: files: |- ./tricu api_key: '${{ secrets.RELEASE_TOKEN }}' pre_release: true