diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..8103ef2 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,257 @@ +name: Release +on: + push: + tags: + - "[0-9]+.[0-9]+.[0-9]+" +jobs: + build: + name: Build + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Setup Go + uses: actions/setup-go@v2 + with: + go-version: '1.15.2' + + - name: Install dependencies + run: | + go version + go get -u golang.org/x/lint/golint + + - name: Run vet & lint + run: | + go vet . + golint . + + - name: Run build + run: go build -v . + + # - name: Run testing + # run: cd test && go test -v + + release: + name: Release + needs: build + runs-on: ubuntu-latest + if: github.event_name == 'push' + + steps: + - name: Check out repository + uses: actions/checkout@v2 + + - name: Changelog + run: | + export CHANGELOG=`git log $(git tag --sort=-version:refname | head -n 2 | tail -n 1)...${{ github.ref }} --pretty=format:'
  • view commit • %s
  • ' --reverse` + echo "::set-env name=CHANGELOG::$CHANGELOG" + + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ github.ref }} + body: ${{ env.CHANGELOG }} + draft: false + prerelease: false + + - name: Run release builds + run: | + declare -a arr=("linux_386" "linux_amd64" "linux_arm" "linux_arm64" "darwin_amd64" "freebsd_386" "freebsd_amd64" "freebsd_arm" "netbsd_386" "netbsd_amd64" "netbsd_arm" "openbsd_386" "openbsd_amd64" "openbsd_arm" "openbsd_arm64" "plan9_386" "plan9_amd64" "plan9_arm") + for i in "${arr[@]}" + do + export GOOS=$(echo $i | cut -f1 -d_) + export GOARCH=$(echo $i | cut -f2 -d_) + + echo "" + echo "=== Building ${GOOS} ${GOARCH} ===" + + go build -v . + + tar -czf ./zeit_${GOOS}_${GOARCH}.tar.gz zeit + go clean + done + + - name: Upload linux_386 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./zeit_linux_386.tar.gz + asset_name: zeit_linux_386.tar.gz + asset_content_type: application/zip + + - name: Upload linux_amd64 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./zeit_linux_amd64.tar.gz + asset_name: zeit_linux_amd64.tar.gz + asset_content_type: application/zip + + - name: Upload linux_arm + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./zeit_linux_arm.tar.gz + asset_name: zeit_linux_arm.tar.gz + asset_content_type: application/zip + + - name: Upload linux_arm64 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./zeit_linux_arm64.tar.gz + asset_name: zeit_linux_arm64.tar.gz + asset_content_type: application/zip + + - name: Upload darwin_amd64 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./zeit_darwin_amd64.tar.gz + asset_name: zeit_darwin_amd64.tar.gz + asset_content_type: application/zip + + - name: Upload freebsd_386 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./zeit_freebsd_386.tar.gz + asset_name: zeit_freebsd_386.tar.gz + asset_content_type: application/zip + + - name: Upload freebsd_amd64 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./zeit_freebsd_amd64.tar.gz + asset_name: zeit_freebsd_amd64.tar.gz + asset_content_type: application/zip + + - name: Upload freebsd_arm + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./zeit_freebsd_arm.tar.gz + asset_name: zeit_freebsd_arm.tar.gz + asset_content_type: application/zip + + - name: Upload netbsd_386 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./zeit_netbsd_386.tar.gz + asset_name: zeit_netbsd_386.tar.gz + asset_content_type: application/zip + + - name: Upload netbsd_amd64 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./zeit_netbsd_amd64.tar.gz + asset_name: zeit_netbsd_amd64.tar.gz + asset_content_type: application/zip + + - name: Upload netbsd_arm + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./zeit_netbsd_arm.tar.gz + asset_name: zeit_netbsd_arm.tar.gz + asset_content_type: application/zip + + - name: Upload openbsd_386 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./zeit_openbsd_386.tar.gz + asset_name: zeit_openbsd_386.tar.gz + asset_content_type: application/zip + + - name: Upload openbsd_amd64 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./zeit_openbsd_amd64.tar.gz + asset_name: zeit_openbsd_amd64.tar.gz + asset_content_type: application/zip + + - name: Upload openbsd_arm + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./zeit_openbsd_arm.tar.gz + asset_name: zeit_openbsd_arm.tar.gz + asset_content_type: application/zip + + - name: Upload openbsd_arm64 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./zeit_openbsd_arm64.tar.gz + asset_name: zeit_openbsd_arm64.tar.gz + asset_content_type: application/zip + + - name: Upload plan9_386 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./zeit_plan9_386.tar.gz + asset_name: zeit_plan9_386.tar.gz + asset_content_type: application/zip + + - name: Upload plan9_amd64 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./zeit_plan9_amd64.tar.gz + asset_name: zeit_plan9_amd64.tar.gz + asset_content_type: application/zip + + - name: Upload plan9_arm + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./zeit_plan9_arm.tar.gz + asset_name: zeit_plan9_arm.tar.gz + asset_content_type: application/zip