name: release-snapshot on: push: branches: - "main" - "demo-*" workflow_dispatch: jobs: goreleaser: runs-on: ubuntu-latest steps: - name: Checkout repository and submodules uses: actions/checkout@v3 - name: Unshallow run: git fetch --prune --unshallow - name: Setup Go id: go uses: actions/setup-go@v3 with: go-version: 1.21.0 - name: Locate cache paths id: cache run: | echo "GOMODCACHE=$(go env GOMODCACHE)" >> $GITHUB_OUTPUT echo "GOCACHE=$(go env GOCACHE)" >> $GITHUB_OUTPUT # Note: use custom caching because below performs a cross platform build # through goreleaser and don't want to share a cache with the test builds. - name: Setup caching uses: actions/cache@v3 with: path: | ${{ steps.cache.outputs.GOMODCACHE }} ${{ steps.cache.outputs.GOCACHE }} key: release-${{ runner.os }}-go-${{ steps.go.outputs.go-version }}-${{ hashFiles('go.sum', '.goreleaser.yaml') }} - name: Hide snapshot tag to outsmart GoReleaser run: git tag -d snapshot || true - name: Run GoReleaser uses: goreleaser/goreleaser-action@v4 with: version: latest args: release --snapshot - name: Upload macOS binaries uses: actions/upload-artifact@v3 with: name: cli_darwin_snapshot path: | dist/*_darwin_*/ - name: Upload Linux binaries uses: actions/upload-artifact@v3 with: name: cli_linux_snapshot path: | dist/*_linux_*/ - name: Upload Windows binaries uses: actions/upload-artifact@v3 with: name: cli_windows_snapshot path: | dist/*_windows_*/ - name: Update snapshot tag # Snapshot release may only be updated for commits to the main branch. # if: github.ref == 'refs/heads/main' run: | git tag snapshot git push origin snapshot --force - name: Update snapshot release # Snapshot release may only be updated for commits to the main branch. # if: github.ref == 'refs/heads/main' uses: softprops/action-gh-release@v1 with: name: Snapshot prerelease: true tag_name: snapshot token: ${{ secrets.GITHUB_TOKEN }} files: | dist/databricks_cli_*.zip