diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 80c68b2d..ea9a34eb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -120,3 +120,66 @@ jobs: env: TARGETPLATFORM: ${{ env.PLATFORMS }},darwin/amd64,windows/amd64 CACHEDIR_FROM: /tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }} + + binaries: + runs-on: ubuntu-latest + needs: [test, cross] + steps: + - + name: Checkout + uses: actions/checkout@v2 + - + name: Prepare + id: prep + run: | + TAG=pr + if [[ $GITHUB_REF == refs/tags/v* ]]; then + TAG=${GITHUB_REF#refs/tags/} + elif [[ $GITHUB_REF == refs/heads/* ]]; then + TAG=$(echo ${GITHUB_REF#refs/heads/} | sed -r 's#/+#-#g') + fi + echo ::set-output name=tag::${TAG} + - + name: Cache ${{ env.CACHEKEY_BINARIES }} + uses: actions/cache@v2 + with: + path: /tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }} + key: ${{ runner.os }}-buildx-${{ env.CACHEKEY_BINARIES }}-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx-${{ env.CACHEKEY_BINARIES }}- + - + name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + with: + driver-opts: image=${{ env.REPO_SLUG_ORIGIN }} + - + name: Build ${{ steps.prep.outputs.tag }} + run: | + ./hack/release "${{ steps.prep.outputs.tag }}" release-out + env: + PLATFORMS: ${{ env.PLATFORMS }},darwin/amd64,windows/amd64 + CACHEDIR_FROM: /tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }} + - + name: Move artifacts + run: | + mv ./release-out/**/* ./release-out/ + - + name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: buildx + path: ./release-out/* + if-no-files-found: error + - + name: GitHub Release + if: startsWith(github.ref, 'refs/tags/v') + uses: softprops/action-gh-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + draft: true + files: ./release-out/* + name: ${{ steps.prep.outputs.tag }} diff --git a/.travis.yml b/.travis.yml index 0b2b439a..4447223a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,21 +29,3 @@ install: script: - make binaries validate-all - TARGETPLATFORM="${CROSS_PLATFORMS}" ./hack/cross - -deploy: - - provider: script - script: PLATFORMS="${CROSS_PLATFORMS}" ./hack/release $TRAVIS_TAG release-out - on: - repo: docker/buildx - tags: true - condition: $TRAVIS_TAG =~ ^v[0-9] - - provider: releases - api_key: - secure: "VKVL+tyS3BfqjM4VMGHoHJbcKY4mqq4AGrclVEvBnt0gm1LkGeKxSheCZgF1EC4oSV8rCy6dkoRWL0PLkl895MIl20Z4v53o1NOQ4Fn0A+eptnrld8jYUkL5PcD+kdEqv2GkBn7vO6E/fwYY/wH9FYlE+fXUa0c/YQGqNGS+XVDtgkftqBV+F2EzaIwk+D+QClFBRmKvIbXrUQASi1K6K2eT3gvzR4zh679TSdI2nbnTKtE06xG1PBFVmb1Ux3/Jz4yHFvf2d3M1mOyqIBsozKoyxisiFQxnm3FjhPrdlZJ9oy/nsQM3ahQKJ3DF8hiLI1LxcxRa6wo//t3uu2eJSYl/c5nu0T7gVw4sChQNy52fUhEGoDTDwYoAxsLSDXcpj1jevRsKvxt/dh2e2De1a9HYj5oM+z2O+pcyiY98cKDbhe2miUqUdiYMBy24xUunB46zVcJF3pIqCYtw5ts8ES6Ixn3u+4OGV/hMDrVdiG2bOZtNVkdbKMEkOEBGa3parPJ69jh6og639kdAD3DFxyZn3YKYuJlcNShn3tj6iPokBYhlLwwf8vuEV7gK7G0rDS9yxuF03jgkwpBBF2wy+u1AbJv241T7v2ZB8H8VlYyHA0E5pnoWbw+lIOTy4IAc8gIesMvDuFFi4r1okhiAt/24U0p4aAohjh1nPuU3spY=" - file: release-out/**/* - skip_cleanup: true - file_glob: true - on: - repo: docker/buildx - tags: true - condition: $TRAVIS_TAG =~ ^v[0-9] diff --git a/hack/release b/hack/release index 11994a74..41dee714 100755 --- a/hack/release +++ b/hack/release @@ -3,30 +3,29 @@ TAG=$1 OUT=$2 +. $(dirname $0)/util set -eu -o pipefail : ${PLATFORMS=linux/amd64} -: ${CONTINUOUS_INTEGRATION=} - -progressFlag="" -if [ "$CONTINUOUS_INTEGRATION" == "true" ]; then progressFlag="--progress=plain"; fi - usage() { echo "usage: ./hack/release " exit 1 } -if [ -z "$TAG" ] || [ -z "$OUT" ]; then +if [ -z "$TAG" ] || [ -z "$OUT" ]; then usage fi +importCacheFlags="" +if [[ -n "$cacheRefFrom" ]] && [[ "$cacheType" = "local" ]]; then + for ref in $cacheRefFrom; do + importCacheFlags="$importCacheFlags--cache-from=type=local,src=$ref " + done +fi -set -x - -buildctl build $progressFlag --frontend=dockerfile.v0 \ - --local context=. --local dockerfile=. \ - --opt target=release \ - --opt platform=$PLATFORMS \ - --exporter local \ - --exporter-opt output=$OUT \ No newline at end of file +buildxCmd build $importCacheFlags \ + --target "release" \ + --platform "$PLATFORMS" \ + --output "type=local,dest=$OUT" \ + $currentcontext