name: ci concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true on: schedule: - cron: '0 10 * * *' workflow_dispatch: push: branches: - 'master' - 'releases/v*' tags: - 'v*' pull_request: jobs: ci: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: - ubuntu-latest - macOS-latest - windows-latest version: - latest - '~> 1.15' distribution: - goreleaser - goreleaser-pro steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 0 - name: Set up Go uses: actions/setup-go@v4 with: go-version: 1.18 - name: Check uses: ./ with: version: ${{ matrix.version }} args: check --debug workdir: ./test - name: GoReleaser if: ${{ !(github.event_name == 'pull_request' && matrix.distribution == 'goreleaser-pro') }} uses: ./ env: GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} with: distribution: ${{ matrix.distribution }} version: ${{ matrix.version }} args: release --skip-publish --clean --snapshot workdir: ./test install-only: runs-on: ubuntu-latest strategy: fail-fast: false matrix: version: - latest - '~> 0.166' distribution: - goreleaser - goreleaser-pro steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 0 - name: Set up Go uses: actions/setup-go@v4 with: go-version: 1.18 - name: GoReleaser if: ${{ !(github.event_name == 'pull_request' && matrix.distribution == 'goreleaser-pro') }} uses: ./ with: distribution: ${{ matrix.distribution }} version: ${{ matrix.version }} install-only: true - name: Check if: ${{ !(github.event_name == 'pull_request' && matrix.distribution == 'goreleaser-pro') }} run: | goreleaser check --debug signing: runs-on: ${{ matrix.os }} if: github.event_name != 'pull_request' strategy: fail-fast: false matrix: os: - ubuntu-latest - macOS-latest - windows-latest steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 0 - name: Set up Go uses: actions/setup-go@v4 with: go-version: 1.18 - name: Import GPG key id: import_gpg uses: crazy-max/ghaction-import-gpg@v5 with: gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY_TEST }} passphrase: ${{ secrets.PASSPHRASE_TEST }} - name: Check uses: ./ with: version: latest args: -f .goreleaser-signing.yml check --debug workdir: ./test env: GPG_FINGERPRINT: ${{ steps.import_gpg.outputs.fingerprint }} - name: GoReleaser uses: ./ with: version: latest args: -f .goreleaser-signing.yml release --skip-publish --clean --snapshot workdir: ./test env: GPG_FINGERPRINT: ${{ steps.import_gpg.outputs.fingerprint }} upload-artifact: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 0 - name: Set up Go uses: actions/setup-go@v4 with: go-version: 1.18 - name: Check uses: ./ with: args: check --debug workdir: ./test - name: GoReleaser uses: ./ with: args: release --skip-publish --clean --snapshot workdir: ./test - name: Upload assets uses: actions/upload-artifact@v3 with: name: myapp path: ./test/dist/* dist: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 0 - name: Set up Go uses: actions/setup-go@v4 with: go-version: 1.18 - name: GoReleaser uses: ./ with: args: release --config .goreleaser-dist.yml --skip-publish --clean --snapshot workdir: ./test - name: Check dist run: | tree -nh ./test/_output nightly: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: - ubuntu-latest - macOS-latest - windows-latest distribution: - goreleaser-pro steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 0 - name: Set up Go uses: actions/setup-go@v4 with: go-version: 1.18 - name: GoReleaser uses: ./ with: install-only: true distribution: ${{ matrix.distribution }} version: nightly - name: Check run: | goreleaser check -f ./test/.goreleaser.yml goreleaser --version goreleaser --version | grep pro-nightly