diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..786a00d6 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,150 @@ +name: Create Release + +on: + push: + tags: [ "v*.*.*" ] + +jobs: + testing: + name: Testing + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + steps: + - name: Set up Go 1.x + uses: actions/setup-go@v2 + with: + go-version: ^1.14 + id: go + + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + + - name: Check + run: make check + + create_release: + name: Create Release + needs: [testing] + runs-on: ubuntu-latest + steps: + - 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 }} + prerelease: true + + - name: Output Release URL File + run: echo "${{ steps.create_release.outputs.upload_url }}" > release_url.txt + + - name: Save Release URL File for publish + uses: actions/upload-artifact@v1 + with: + name: release_url + path: release_url.txt + + publish: + name: Publish + needs: [testing, create_release] + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + steps: + - name: Set up Go 1.x + uses: actions/setup-go@v2 + with: + go-version: ^1.14 + id: go + + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + + - name: Load Release URL File from release job + uses: actions/download-artifact@v1 + with: + name: release_url + + - name: Distribute + run: make dist + + - name: Get Release File Name & Upload URL + id: get_release_info + shell: bash + run: | + value=`cat release_url/release_url.txt` + echo ::set-output name=upload_url::$value + env: + TAG_REF_NAME: ${{ github.ref }} + REPOSITORY_NAME: ${{ github.repository }} + + - name: Upload Linux Binary + if: runner.os == 'Linux' + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.get_release_info.outputs.upload_url }} + asset_path: ./bin/wire-linux-amd64 + asset_name: wire-linux-amd64 + asset_content_type: application/octet-stream + + - name: Upload macOS Binary + if: runner.os == 'macOS' + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.get_release_info.outputs.upload_url }} + asset_path: ./bin/wire-darwin-amd64 + asset_name: wire-darwin-amd64 + asset_content_type: application/octet-stream + + - name: Upload Windows Binary + if: runner.os == 'Windows' + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.get_release_info.outputs.upload_url }} + asset_path: ./bin/wire.exe + asset_name: wire.exe + asset_content_type: application/octet-stream + + docker: + name: Docker + needs: [testing, create_release] + runs-on: ubuntu-latest + steps: + - name: Set up Go 1.x + uses: actions/setup-go@v2 + with: + go-version: ^1.14 + id: go + + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + + - name: Docker + run: make docker + + - name: Docker Push + run: |+ + echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + make release-push + env: + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + + - name: Quay.io Push + run: |+ + echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin quay.io + make quay-push + env: + DOCKER_USERNAME: ${{ secrets.QUAY_USERNAME }} + DOCKER_PASSWORD: ${{ secrets.QUAY_PASSWORD }} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index f6aa537b..00000000 --- a/.travis.yml +++ /dev/null @@ -1,33 +0,0 @@ -language: go -dist: xenial -sudo: false -services: [docker] - -matrix: - include: - - os: linux - go: 1.14.x - -before_deploy: - - make dist - -deploy: - provider: releases - api_key: - secure: Qhweoc+1/wLjbq6uNUHti8ZSaFFhuYTrGLaUKVR/QMNJtIbIuEjIXYhPYdKOl67vId2SDjTYW9tsAEpYReWmpzRZ33uVke/G1tXovrGVZFiIxgytndDKintJzC1LKMWdy0k9X9CVIg5e1jd7DiJOKauwM4/y4quJiTgy1z66rkrYH/HIM3h47gDno74y7/8OSpgNcdYr5iashwWdT7eWE5Dn1Fr8v6+/ClLQpbxczB0la8cU3zQl+o8qvZ3Y5lNEBOcCV7FtFpXhFnYEDGtVpZBIUXFJLIRCj4+HQ0DqZ+wC4RGb7lSkRLvTqhpIPn2a4gIOkKXeS3J9dgBYXHkWYF+wLUmbtqgWW7a6jK2n1G8MFNrbQiLi+AgIcbop8h96Q1W8ueBYj7cMXlKKlWAX5PGt2zryvD4DR3P/iFhC6h1jf/ISVVl2BJUbLSCmzv+qR8Y41ptzWUR2lC3lR2/OCbEpgnU5AiZfPhJNrooKm4fHxTGH23d6HCWDw1NthYUMBkn22Jkf3pEZYQsGXj7Q00jgQ6WfAlbb7SHWgbxVb+fSgkU0tWtWInf76VZhROfdCqtvmkqJV3ThLi0RRzXi7CHilx9mL05ISkaDmoJWULDgUb5qdrIvg8Bhi/5EDWQ8sEDJEN239F7go1I6HPtD6P9BYXgS09tu8cidzF4mtyw= - file_glob: true - file: - - bin/wire-* - on: - repo: moov-io/wire - tags: true - go: 1.14.x - skip_cleanup: true - -after_deploy: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - make release-push - -notifications: - slack: - secure: POMpq1kBtVB3z/7kzQtMq39V4ulipVzEoes90BsIHxV3aXcNP9PChdzJSacD7NlTLlq7xLV0xAs33rHxVGri2n3cuTaNTQO2CvXmRFVsfKhv30Lodkcn1OjBVlJPdUI1C4VBWjY047gapjtzeOuKspg2K4vKc9r3ZME9afPxIxjB5KrB1Hmnp4sIsxQ5avsttyUVWKQjNbpe2SgLzdn3Rbo3mSmf2MebGEhzD206LLVTJ06M/OiWzovJuArv3b6THfM0/UamqK2b+l1I6kHEd4snK5SIo4Oq8fB/dPKKeBsS7xxN8YHrHwvFAYqCCRzSMkILWGPxVlz3uWkcJ15P7cenW/bJ3245kYCOQtA+oVlzbN6S8oFqOYXSpxTOp2PfytTZ+2lnNcunj2Gwd0JIZA9Y/c4MKGgea7l1klFVebNVEHWXZThvo5XS+hmtUNxRID+Hl5nuIyK+RUyfTlOC+ptb3bb/jEmLCTshiGryNgPOwywDx57YCw4t1wEG0U9gi67py8h5DHzpK7mrxclPz568zQ7s2/uCgvAqbFQfI33MSulcTc+CX5PVFM4Cf9mBseQNvVNeAn0nmwzAt78sTBHig8CTLA8sX25By71xGQLh17edoRCDDq7BK8//rJGV3XpktWl1BDFDSioWjUGUPqzoNfhiuHENwbh0GMhsqUs= diff --git a/makefile b/makefile index 02bb595c..ae5acc77 100644 --- a/makefile +++ b/makefile @@ -67,6 +67,10 @@ release-push: docker push moov/wire:latest docker push moov/wirefuzz:$(VERSION) +quay-push: + docker push quay.io/moov/wire:$(VERSION) + docker push quay.io/moov/wire:latest + .PHONY: cover-test cover-web cover-test: go test -coverprofile=cover.out ./...