diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..0433b5b --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,60 @@ +name: build + +on: + push: + branches: + - 'master' + tags: + - 'v*.*.*' + +jobs: + release-pingme: + runs-on: ubuntu-latest + env: + DOCKER_CLI_EXPERIMENTAL: "enabled" + steps: + - + name: Checkout + uses: actions/checkout@v2.3.4 + with: + fetch-depth: 0 + - + name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: '1.16' + - + name: Cache Go modules + uses: actions/cache@v2.1.5 + with: + path: ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + - + name: Diff + run: git diff + + - + name: Docker login GHCR + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - + name: Docker Login DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - + name: Release PingMe + uses: goreleaser/goreleaser-action@v2 + with: + version: latest + args: release --rm-dist + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml deleted file mode 100644 index 0c8b361..0000000 --- a/.github/workflows/goreleaser.yml +++ /dev/null @@ -1,63 +0,0 @@ -name: build - -on: - push: - tags: - - 'v*' - -jobs: - release-pingme: - runs-on: ubuntu-latest - env: - DOCKER_CLI_EXPERIMENTAL: "enabled" - steps: - - - name: Checkout - uses: actions/checkout@v2.3.4 - with: - fetch-depth: 0 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - - name: Set up Go - uses: actions/setup-go@v2 - with: - go-version: '1.16' - - - name: Cache Go modules - uses: actions/cache@v2.1.5 - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - - name: Diff - run: git diff - - - name: Docker Login - if: success() && startsWith(github.ref, 'refs/tags/v') - env: - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - GITHUB_TOKEN: ${{ secrets.GO_RELEASER_GITHUB_TOKEN }} - run: | - echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin - echo "${GITHUB_TOKEN}" | docker login ghcr.io --username $GITHUB_ACTOR --password-stdin - - - name: Clear - if: always() && startsWith(github.ref, 'refs/tags/v') - run: | - rm -f ${HOME}/.docker/config.json - - - name: Release New Version - uses: goreleaser/goreleaser-action@v2 - with: - version: latest - args: release --rm-dist - env: - GITHUB_TOKEN: ${{ secrets.GO_RELEASER_GITHUB_TOKEN }} \ No newline at end of file diff --git a/.goreleaser.yaml b/.goreleaser.yaml new file mode 100644 index 0000000..add78f2 --- /dev/null +++ b/.goreleaser.yaml @@ -0,0 +1,106 @@ +env: + - GO111MODULE=on +before: + hooks: + - go mod tidy + +builds: +- env: + - CGO_ENABLED=0 + goos: + - linux + - darwin + - windows + goarch: + - 386 + - amd64 + - arm + - arm64 + mod_timestamp: '{{ .CommitTimestamp }}' + flags: + - -trimpath + ldflags: + - -s -w -X main.Version={{.Version}} +checksum: + name_template: '{{ .ProjectName }}_checksums.txt' + +changelog: + sort: 'asc' + filters: + exclude: ['^docs:', '^test:', 'Merge pull request', 'Merge branch', 'go mod tidy'] + +archives: + - name_template: '{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}' + replacements: + darwin: Darwin + linux: Linux + windows: Windows + 386: i386 + amd64: x86_64 + format_overrides: + - goos: windows + format: zip + files: + - README.md + - LICENSE.md + +brews: + - tap: + owner: kha7iq + name: homebrew-tap + folder: Formula + homepage: pingme.lmno.pk + description: PingMe is a CLI tool which provides the ability to send messages or alerts to multiple messaging platforms. + license: MIT + test: | + system "#{bin}/pingme -v" + install: |- + bin.install "pingme" + +nfpms: + - file_name_template: '{{ .ProjectName }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}' + homepage: pingme.lmno.pk + description: PingMe is a CLI tool which provides the ability to send messages or alerts to multiple messaging platforms. + license: MIT + formats: + - deb + - rpm + dependencies: + - git + +# # snapcrafts: +# # - name_template: '{{ .ProjectName }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}' +# # summary: PingMe is a CLI tool which provides the ability to send messages +# # description: | +# # PingMe is a CLI tool which provides the ability to send messages +# # or alerts to multiple messaging platforms. +# # grade: stable +# # confinement: classic +# # publish: false + +scoop: + bucket: + owner: kha7iq + name: scoop-bucket + homepage: https://pingme.lmno.pk + description: Deliver Go binaries as fast and easily as possible + license: MIT + + +dockers: +- image_templates: + - 'khaliq/pingme:{{ .Tag }}' + - 'khaliq/pingme:latest' + - 'ghcr.io/kha7iq/pingme:{{ .Tag }}' + - 'ghcr.io/kha7iq/pingme:latest' + dockerfile: Dockerfile + build_flag_templates: + - "--pull" + - "--label=org.opencontainers.image.created={{.Date}}" + - "--label=org.opencontainers.image.name={{.ProjectName}}" + - "--label=org.opencontainers.image.revision={{.FullCommit}}" + - "--label=org.opencontainers.image.version={{.Version}}" + - "--label=org.opencontainers.image.source={{.GitURL}}" + - "--platform=linux/amd64" + extra_files: + - scripts/entrypoint.sh diff --git a/goreleaser.yml b/goreleaser.yml index e2f0479..7634814 100644 --- a/goreleaser.yml +++ b/goreleaser.yml @@ -1,3 +1,4 @@ + env: - GO111MODULE=on before: @@ -68,15 +69,15 @@ nfpms: dependencies: - git -# snapcrafts: -# - name_template: '{{ .ProjectName }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}' -# summary: PingMe is a CLI tool which provides the ability to send messages -# description: | -# PingMe is a CLI tool which provides the ability to send messages -# or alerts to multiple messaging platforms. -# grade: stable -# confinement: classic -# publish: false +# # snapcrafts: +# # - name_template: '{{ .ProjectName }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}' +# # summary: PingMe is a CLI tool which provides the ability to send messages +# # description: | +# # PingMe is a CLI tool which provides the ability to send messages +# # or alerts to multiple messaging platforms. +# # grade: stable +# # confinement: classic +# # publish: false scoop: bucket: @@ -89,7 +90,6 @@ scoop: dockers: - image_templates: - - 'khaliq/pingme:{{ .Tag }}-amd64' - 'ghcr.io/kha7iq/pingme:{{ .Tag }}-amd64' dockerfile: Dockerfile skip_push: false @@ -105,7 +105,6 @@ dockers: extra_files: - scripts/entrypoint.sh - image_templates: - - 'khaliq/pingme:{{ .Tag }}-arm64' - 'ghcr.io/kha7iq/pingme:{{ .Tag }}-arm64' dockerfile: Dockerfile use_buildx: true @@ -121,18 +120,10 @@ dockers: extra_files: - scripts/entrypoint.sh docker_manifests: -- name_template: 'khaliq/pingme:{{ .Tag }}' - image_templates: - - 'khaliq/pingme:{{ .Tag }}-amd64' - - 'khaliq/pingme:{{ .Tag }}-arm64' - name_template: 'ghcr.io/kha7iq/pingme:{{ .Tag }}' image_templates: - 'ghcr.io/kha7iq/pingme:{{ .Tag }}-amd64' - 'ghcr.io/kha7iq/pingme:{{ .Tag }}-arm64' -- name_template: 'khaliq/pingme:latest' - image_templates: - - 'khaliq/pingme:{{ .Tag }}-amd64' - - 'khaliq/pingme:{{ .Tag }}-arm64' - name_template: 'ghcr.io/kha7iq/pingme:latest' image_templates: - 'ghcr.io/kha7iq/pingme:{{ .Tag }}-amd64'