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 }}