github.com/moov-io/imagecashletter@v0.10.1/.github/workflows/release.yml (about) 1 name: Create Release 2 3 on: 4 push: 5 tags: [ "v*.*.*" ] 6 7 jobs: 8 testing: 9 name: Testing 10 runs-on: ${{ matrix.os }} 11 strategy: 12 matrix: 13 os: [ubuntu-latest, macos-latest, windows-latest] 14 steps: 15 - name: Set up Go 1.x 16 uses: actions/setup-go@v4 17 with: 18 go-version: stable 19 id: go 20 21 - name: Check out code into the Go module directory 22 uses: actions/checkout@v2 23 24 - name: Check 25 run: make check 26 27 create_release: 28 name: Create Release 29 needs: [testing] 30 runs-on: ubuntu-latest 31 steps: 32 - name: Create Release 33 id: create_release 34 uses: actions/create-release@v1 35 env: 36 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 37 with: 38 tag_name: ${{ github.ref }} 39 release_name: Release ${{ github.ref }} 40 prerelease: true 41 42 - name: Output Release URL File 43 run: echo "${{ steps.create_release.outputs.upload_url }}" > release_url.txt 44 45 - name: Save Release URL File for publish 46 uses: actions/upload-artifact@v1 47 with: 48 name: release_url 49 path: release_url.txt 50 51 publish: 52 name: Publish 53 needs: [testing, create_release] 54 runs-on: ${{ matrix.os }} 55 strategy: 56 matrix: 57 os: [ubuntu-latest, macos-latest, windows-latest] 58 steps: 59 - name: Set up Go 1.x 60 uses: actions/setup-go@v4 61 with: 62 go-version: stable 63 id: go 64 65 - name: Check out code into the Go module directory 66 uses: actions/checkout@v2 67 68 - name: Load Release URL File from release job 69 uses: actions/download-artifact@v1 70 with: 71 name: release_url 72 73 - name: Distribute 74 run: make dist 75 76 - name: Get Release File Name & Upload URL 77 id: get_release_info 78 shell: bash 79 run: | 80 value=`cat release_url/release_url.txt` 81 echo ::set-output name=upload_url::$value 82 env: 83 TAG_REF_NAME: ${{ github.ref }} 84 REPOSITORY_NAME: ${{ github.repository }} 85 86 - name: Upload Linux Binary 87 if: runner.os == 'Linux' 88 uses: actions/upload-release-asset@v1 89 env: 90 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 91 with: 92 upload_url: ${{ steps.get_release_info.outputs.upload_url }} 93 asset_path: ./bin/imagecashletter-linux-amd64 94 asset_name: imagecashletter-linux-amd64 95 asset_content_type: application/octet-stream 96 97 - name: Upload macOS Binary 98 if: runner.os == 'macOS' 99 uses: actions/upload-release-asset@v1 100 env: 101 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 102 with: 103 upload_url: ${{ steps.get_release_info.outputs.upload_url }} 104 asset_path: ./bin/imagecashletter-darwin-amd64 105 asset_name: imagecashletter-darwin-amd64 106 asset_content_type: application/octet-stream 107 108 - name: Upload Windows Binary 109 if: runner.os == 'Windows' 110 uses: actions/upload-release-asset@v1 111 env: 112 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 113 with: 114 upload_url: ${{ steps.get_release_info.outputs.upload_url }} 115 asset_path: ./bin/imagecashletter.exe 116 asset_name: imagecashletter.exe 117 asset_content_type: application/octet-stream 118 119 docker: 120 name: Docker 121 needs: [testing, create_release] 122 runs-on: ubuntu-latest 123 steps: 124 - name: Set up Go 1.x 125 uses: actions/setup-go@v4 126 with: 127 go-version: stable 128 id: go 129 130 - name: Check out code into the Go module directory 131 uses: actions/checkout@v2 132 133 - name: Docker 134 run: make docker 135 136 - name: Docker Push 137 run: |+ 138 echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin 139 make release-push 140 env: 141 DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} 142 DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} 143 144 - name: Quay.io Push 145 run: |+ 146 echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin quay.io 147 make quay-push 148 env: 149 DOCKER_USERNAME: ${{ secrets.QUAY_USERNAME }} 150 DOCKER_PASSWORD: ${{ secrets.QUAY_PASSWORD }}