Initial commit to golang installation role
Change-Id: I344755e19a5d87d0f4880f5121df6d346f1c85f3
diff --git a/tasks/Debian.yml b/tasks/Debian.yml
new file mode 100644
index 0000000..f4e3b12
--- /dev/null
+++ b/tasks/Debian.yml
@@ -0,0 +1,5 @@
+---
+# golang tasks/Debian.yml
+#
+# SPDX-FileCopyrightText: 2022 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
diff --git a/tasks/main.yml b/tasks/main.yml
new file mode 100644
index 0000000..b537985
--- /dev/null
+++ b/tasks/main.yml
@@ -0,0 +1,108 @@
+---
+# 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