| --- |
| # golang tasks/main.yml |
| # |
| # SPDX-FileCopyrightText: 2022 Open Networking Foundation <support@opennetworking.org> |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| - name: include OS-specific vars |
| include_vars: "{{ ansible_os_family }}.yml" |
| |
| - name: include OS-specific tasks |
| include_tasks: "{{ ansible_os_family }}.yml" |
| |
| - name: Create golang dist dir |
| file: |
| path: "{{ golang_dist_dir }}" |
| state: directory |
| owner: "root" |
| group: "root" |
| mode: "0755" |
| |
| - name: download golang .tar.gz to dist dir |
| get_url: |
| url: "https://go.dev/dl/go{{ golang_version }}.{{ golang_arch }}.tar.gz" |
| dest: "{{ golang_dist_dir }}/go{{ golang_version }}.tar.gz" |
| owner: "root" |
| group: "root" |
| mode: "0644" |
| checksum: "{{ golang_checksum }}" |
| |
| - name: Unarchive golang distribution |
| unarchive: |
| remote_src: true |
| src: "{{ golang_dist_dir }}/go{{ golang_version }}.tar.gz" |
| dest: "/usr/local/" |
| owner: "root" |
| group: "root" |
| creates: "/usr/local/go/bin/go" |
| |
| - name: Create symlinks in /usr/local/bin for go binaries |
| file: |
| state: link |
| src: "/usr/local/go/bin/{{ item }}" |
| dest: "/usr/local/bin/{{ item }}" |
| with_items: |
| - "go" |
| - "gofmt" |
| |
| # additional tools |
| - name: Download golangci-lint |
| get_url: |
| url: >- |
| https://github.com/golangci/golangci-lint/releases/download/v{{ golang_golangci_lint_version |
| }}/golangci-lint-{{ golang_golangci_lint_version |
| }}-{{ golang_arch }}.tar.gz |
| dest: "{{ golang_dist_dir }}/golangci-lint_{{ golang_golangci_lint_version }}.tar.gz" |
| owner: "root" |
| group: "root" |
| mode: "0644" |
| |
| - name: Unarchive golangci-lint distribution |
| unarchive: |
| remote_src: true |
| src: "{{ golang_dist_dir }}/golangci-lint_{{ golang_golangci_lint_version }}.tar.gz" |
| dest: "{{ golang_dist_dir }}" |
| owner: "root" |
| group: "root" |
| creates: >- |
| {{ golang_dist_dir }}/golangci-lint-{{ golang_golangci_lint_version }}-{{ golang_arch }} |
| |
| - name: Install golangci-lint binary |
| copy: |
| src: >- |
| {{ golang_dist_dir }}/golangci-lint-{{ golang_golangci_lint_version }}-{{ golang_arch |
| }}/golangci-lint |
| dest: /usr/local/bin/golangci-lint |
| mode: "0755" |
| remote_src: true |
| |
| - name: Install go-junit-report |
| environment: |
| GOPATH: "/usr/local/go" |
| command: |
| cmd: "go install github.com/jstemmer/go-junit-report/v2@v{{ golang_go_junit_report_version }}" |
| creates: "/usr/local/go/bin/go-junit-report" |
| |
| - name: Install gocover-cobertura |
| environment: |
| GOPATH: "/usr/local/go" |
| command: |
| cmd: "go install github.com/t-yuki/gocover-cobertura@{{ golang_gocover_cobertura_version }}" |
| creates: "/usr/local/go/bin/gocover-cobertura" |
| |
| # link additional tools |
| - name: Create symlinks in /usr/local/bin for additional tool binaries |
| file: |
| state: link |
| src: "/usr/local/go/bin/{{ item }}" |
| dest: "/usr/local/bin/{{ item }}" |
| with_items: |
| - "go-junit-report" |
| - "gocover-cobertura" |
| |
| # cleanup |
| - name: Delete golang dist dir (containers) |
| when: golang_delete_dist |
| file: |
| path: "{{ golang_dist_dir }}" |
| state: absent |