Merge pull request #432 from unpoller/docker-images-and-packages
add goreleaser config to support building deps, rpm and docker images
This commit is contained in:
		
						commit
						2ae26abd27
					
				|  | @ -14,11 +14,26 @@ permissions: | ||||||
| jobs: | jobs: | ||||||
|   release: |   release: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|  |     env: | ||||||
|  |       DOCKER_CLI_EXPERIMENTAL: "enabled" | ||||||
|  |       DOCKER_REGISTRY: "ghcr.io" | ||||||
|  |       DOCKER_IMAGE_NAME: "unpoller/unpoller" | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v3 |       - uses: actions/checkout@v3 | ||||||
|         with: |         with: | ||||||
|           fetch-depth: 0 |           fetch-depth: 0 | ||||||
|       - run: git fetch --force --tags |       - run: git fetch --force --tags | ||||||
|  |       - name: Set up QEMU | ||||||
|  |         uses: docker/setup-qemu-action@v1 | ||||||
|  |       - name: Set up Docker Buildx | ||||||
|  |         id: buildx | ||||||
|  |         uses: docker/setup-buildx-action@v2 | ||||||
|  |       - name: Login to GitHub Container Registry | ||||||
|  |         uses: docker/login-action@v2 | ||||||
|  |         with: | ||||||
|  |           registry: ghcr.io | ||||||
|  |           username: ${{ github.actor }} | ||||||
|  |           password: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       - uses: actions/setup-go@v3 |       - uses: actions/setup-go@v3 | ||||||
|         with: |         with: | ||||||
|           go-version: '>=1.19.3' |           go-version: '>=1.19.3' | ||||||
|  | @ -36,3 +51,6 @@ jobs: | ||||||
|           # Your GoReleaser Pro key, if you are using the 'goreleaser-pro' |           # Your GoReleaser Pro key, if you are using the 'goreleaser-pro' | ||||||
|           # distribution: |           # distribution: | ||||||
|           GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} |           GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} | ||||||
|  |           DOCKER_REGISTRY: ${{ env.DOCKER_REGISTRY }} | ||||||
|  |           DOCKER_IMAGE_NAME: ${{ env.DOCKER_IMAGE_NAME }} | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | @ -0,0 +1,173 @@ | ||||||
|  | # .goreleaser.yaml | ||||||
|  | builds: | ||||||
|  |   - env: | ||||||
|  |     - CGO_ENABLED=0 | ||||||
|  |     binary: unpoller | ||||||
|  |     goarm: | ||||||
|  |       - 6 | ||||||
|  |       - 7 | ||||||
|  |     goos: | ||||||
|  |       - linux | ||||||
|  |       - darwin | ||||||
|  |       - windows | ||||||
|  |       - freebsd | ||||||
|  |     goarch: | ||||||
|  |       - amd64 | ||||||
|  |       - arm64 | ||||||
|  |       - arm | ||||||
|  |     ignore: | ||||||
|  |       - goos: darwin | ||||||
|  |         goarch: 386 | ||||||
|  |       - goarm: mips64 | ||||||
|  |       - gomips: hardfloat | ||||||
|  |       - goamd64: v4 | ||||||
|  |       - goos: freebsd | ||||||
|  |         goarch: 386 | ||||||
|  | dockers: | ||||||
|  |   - # amd64 | ||||||
|  |     image_templates: | ||||||
|  |       - "{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:latest-amd64" | ||||||
|  |       - "{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Tag }}-amd64" | ||||||
|  |       - "{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:v{{ .Major }}-amd64" | ||||||
|  |     use: buildx | ||||||
|  |     build_flag_templates: | ||||||
|  |       - "--pull" | ||||||
|  |       - "--label=org.opencontainers.image.created={{.Date}}" | ||||||
|  |       - "--label=org.opencontainers.image.title={{.ProjectName}}" | ||||||
|  |       - "--label=org.opencontainers.image.revision={{.FullCommit}}" | ||||||
|  |       - "--label=org.opencontainers.image.version={{.Version}}" | ||||||
|  |       - "--label=org.opencontainers.image.documentation='https://unpoller.com/docs/install/docker'" | ||||||
|  |       - "--label=org.opencontainers.image.description='Telemetry and Observability for your UniFi Network'" | ||||||
|  |       - "--label=org.opencontainers.image.url='https://unpoller.com'" | ||||||
|  |       - "--label=org.opencontainers.image.source={{ .GitURL }}" | ||||||
|  |       - "--label=org.opencontainers.image.vendor=unpoller" | ||||||
|  |       - "--label=org.opencontainers.image.licenses=MIT" | ||||||
|  |       - "--platform=linux/amd64" | ||||||
|  |     push_flags: | ||||||
|  |       - --tls-verify=false | ||||||
|  |     extra_files: | ||||||
|  |       - "examples/up.conf.example" | ||||||
|  |       - "examples/up.json.example" | ||||||
|  |       - "examples/up.yaml.example" | ||||||
|  |   - # arm64 | ||||||
|  |     image_templates: | ||||||
|  |       - "{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:latest-arm64v8" | ||||||
|  |       - "{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Tag }}-arm64v8" | ||||||
|  |       - "{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:v{{ .Major }}-arm64v8" | ||||||
|  |     use: buildx | ||||||
|  |     build_flag_templates: | ||||||
|  |       - "--pull" | ||||||
|  |       - "--label=org.opencontainers.image.created={{.Date}}" | ||||||
|  |       - "--label=org.opencontainers.image.title={{.ProjectName}}" | ||||||
|  |       - "--label=org.opencontainers.image.revision={{.FullCommit}}" | ||||||
|  |       - "--label=org.opencontainers.image.version={{.Version}}" | ||||||
|  |       - "--label=org.opencontainers.image.documentation='https://unpoller.com/docs/install/docker'" | ||||||
|  |       - "--label=org.opencontainers.image.description='Telemetry and Observability for your UniFi Network'" | ||||||
|  |       - "--label=org.opencontainers.image.url='https://unpoller.com'" | ||||||
|  |       - "--label=org.opencontainers.image.source={{ .GitURL }}" | ||||||
|  |       - "--label=org.opencontainers.image.vendor=unpoller" | ||||||
|  |       - "--label=org.opencontainers.image.licenses=MIT" | ||||||
|  |       - "--platform=linux/arm64" | ||||||
|  |     push_flags: | ||||||
|  |       - --tls-verify=false | ||||||
|  |     extra_files: | ||||||
|  |       - "examples/up.conf.example" | ||||||
|  |       - "examples/up.json.example" | ||||||
|  |       - "examples/up.yaml.example" | ||||||
|  |   - # armv7 | ||||||
|  |     image_templates: | ||||||
|  |       - "{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:latest-armv7" | ||||||
|  |       - "{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Tag }}-armv7" | ||||||
|  |       - "{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:v{{ .Major }}-armv7" | ||||||
|  |     use: buildx | ||||||
|  |     build_flag_templates: | ||||||
|  |       - "--pull" | ||||||
|  |       - "--label=org.opencontainers.image.created={{.Date}}" | ||||||
|  |       - "--label=org.opencontainers.image.title={{.ProjectName}}" | ||||||
|  |       - "--label=org.opencontainers.image.revision={{.FullCommit}}" | ||||||
|  |       - "--label=org.opencontainers.image.version={{.Version}}" | ||||||
|  |       - "--label=org.opencontainers.image.documentation='https://unpoller.com/docs/install/docker'" | ||||||
|  |       - "--label=org.opencontainers.image.description='Telemetry and Observability for your UniFi Network'" | ||||||
|  |       - "--label=org.opencontainers.image.url='https://unpoller.com'" | ||||||
|  |       - "--label=org.opencontainers.image.source={{ .GitURL }}" | ||||||
|  |       - "--label=org.opencontainers.image.vendor=unpoller" | ||||||
|  |       - "--label=org.opencontainers.image.licenses=MIT" | ||||||
|  |       - "--platform=linux/arm/v7" | ||||||
|  |     push_flags: | ||||||
|  |       - --tls-verify=false | ||||||
|  |     extra_files: | ||||||
|  |       - "examples/up.conf.example" | ||||||
|  |       - "examples/up.json.example" | ||||||
|  |       - "examples/up.yaml.example" | ||||||
|  | docker_manifests: | ||||||
|  |   - name_template: '{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:latest' | ||||||
|  |     create_flags: | ||||||
|  |       - --insecure | ||||||
|  |     push_flags: | ||||||
|  |       - --insecure | ||||||
|  |     image_templates: | ||||||
|  |       - "{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:latest-amd64" | ||||||
|  |       - "{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:latest-arm64v8" | ||||||
|  |       - "{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:latest-armv7" | ||||||
|  |   - name_template: '{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Tag }}' | ||||||
|  |     create_flags: | ||||||
|  |       - --insecure | ||||||
|  |     push_flags: | ||||||
|  |       - --insecure | ||||||
|  |     image_templates: | ||||||
|  |       - "{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Tag }}-amd64" | ||||||
|  |       - "{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Tag }}-arm64v8" | ||||||
|  |       - "{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Tag }}-armv7" | ||||||
|  |   - name_template: '{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:v{{ .Major }}' | ||||||
|  |     create_flags: | ||||||
|  |       - --insecure | ||||||
|  |     push_flags: | ||||||
|  |       - --insecure | ||||||
|  |     image_templates: | ||||||
|  |       - "{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:v{{ .Major }}-amd64" | ||||||
|  |       - "{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:v{{ .Major }}-arm64v8" | ||||||
|  |       - "{{ .Env.DOCKER_REGISTRY }}/{{ .Env.DOCKER_IMAGE_NAME }}:v{{ .Major }}-armv7" | ||||||
|  | 
 | ||||||
|  | nfpms: | ||||||
|  |   - | ||||||
|  |     replacements: | ||||||
|  |       amd64: 64-bit | ||||||
|  |       386: 32-bit | ||||||
|  |       darwin: macOS | ||||||
|  |       linux: Tux | ||||||
|  | 
 | ||||||
|  |     vendor: unpoller | ||||||
|  |     homepage: https://unpoller.com/ | ||||||
|  |     maintainer: unpoller.com | ||||||
|  |     description: Telemetry and Observability for your UniFi Network | ||||||
|  |     license: MIT | ||||||
|  |     formats: | ||||||
|  |       - apk | ||||||
|  |       - deb | ||||||
|  |       - rpm | ||||||
|  |       - termux.deb # Since GoReleaser v1.11. | ||||||
|  |     bindir: /usr/bin | ||||||
|  |     version_metadata: git | ||||||
|  |     section: default | ||||||
|  |     priority: extra | ||||||
|  | 
 | ||||||
|  |     # Contents to add to the package. | ||||||
|  |     # GoReleaser will automatically add the binaries. | ||||||
|  |     contents: | ||||||
|  |       - dst: /etc/unpoller | ||||||
|  |         type: dir | ||||||
|  |         file_info: | ||||||
|  |           mode: 0700 | ||||||
|  | 
 | ||||||
|  |       # Example config files | ||||||
|  |       - src: examples/up.conf.example | ||||||
|  |         dst: /etc/unpoller/up.conf.example | ||||||
|  |         type: config | ||||||
|  |       - src: examples/up.json.example | ||||||
|  |         dst: /etc/unpoller/up.json.example | ||||||
|  |         type: config | ||||||
|  |       - src: examples/up.yaml.example | ||||||
|  |         dst: /etc/unpoller/up.yaml.example | ||||||
|  |         type: config | ||||||
|  | universal_binaries: | ||||||
|  |   - replace: true | ||||||
|  | @ -0,0 +1,5 @@ | ||||||
|  | FROM gcr.io/distroless/static-debian11 | ||||||
|  | 
 | ||||||
|  | COPY unpoller /usr/bin/unpoller | ||||||
|  | 
 | ||||||
|  | ENTRYPOINT [ "/usr/bin/unpoller" ] | ||||||
		Loading…
	
		Reference in New Issue