Merge pull request #58 from noelmcloughlin/go

feat(golang): add go package management
This commit is contained in:
Niels Abspoel 2019-09-12 18:29:21 +02:00 committed by GitHub
commit 1aa6f50091
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 122 additions and 13 deletions

View file

@ -176,6 +176,16 @@ You can specify:
Centos has no native ``snapd`` package at this time.
``packages.golang``
-------------------
You can specify:
* ``clean`` golang packages, removed using ``go clean -i <item>...``.
* ``goget`` golang packages, installed using ``go get``.
``packages.remote_pkgs``
------------------------

View file

@ -21,12 +21,16 @@ platforms:
run_command: /lib/systemd/systemd
provision_command:
- apt-get update && apt-get install -y udev locales git
- echo 'export PATH=${PATH}:/usr/local/go/bin' >/etc/default/golang.sh
- export PATH="${PATH}:/usr/local/go/bin"
- name: ubuntu-18.04
driver_config:
image: ubuntu:18.04
run_command: /lib/systemd/systemd
provision_command:
- apt-get update && apt-get install -y udev locales git
- echo 'export PATH=${PATH}:/usr/local/go/bin' >/etc/default/golang.sh
- export PATH="${PATH}:/usr/local/go/bin"
- name: ubuntu-16.04
driver_config:
image: ubuntu:16.04
@ -35,6 +39,8 @@ platforms:
- apt-get update && apt-get install -y udev locales git
- locale-gen en_US.UTF-8
- update-locale LANG=en_US.UTF-8
- echo 'export PATH=${PATH}:/usr/local/go/bin' >/etc/default/golang.sh
- export PATH="${PATH}:/usr/local/go/bin"
- name: centos-7
driver_config:
image: centos:7

View file

@ -33,7 +33,7 @@ packages-archive-wanted-target-{{ package }}-directory:
{%- if packages.tmpdir != '/tmp' %}
- {{ packages.tmpdir }}
{%- endif %}
- user: {{ 'root' if 'user' not in archive else archive.user }}
- user: {{ packages.rootuser if 'user' not in archive else archive.user }}
- mode: {{ '0755' if 'mode' not in archive else archive.mode }}
- makedirs: True
- require_in:
@ -85,7 +85,7 @@ packages-archive-wanted-download-{{ package }}:
- name: {{ archive.dest }}/{{ archivename }}
- source: {{ archive.dl.source }}
- mode: {{ '0755' if archive.dl.format in ('bin',) else '0644' if 'mode' not in archive else archive.mode }}
- user: {{ 'root' if 'user' not in archive else archive.user }}
- user: {{ packages.rootuser if 'user' not in archive else archive.user }}
- makedirs: True
{%- if 'hashsum' in archive.dl and archive.dl.hashsum %}
- source_hash: {{ archive.dl.hashsum }}

View file

@ -2,6 +2,7 @@
# vim: ft=yaml
packages:
tmpdir: /tmp/saltstack-packages-formula-archives
rootuser: root
remote_pkgs: {}
pkgs:
held: {}
@ -40,6 +41,9 @@ packages:
required:
states: []
pkgs: []
golang:
goget: []
clean: []
archives:
pkgs:
required: ['curl', 'bzip2', 'gzip']

15
packages/golang/clean.sls Normal file
View file

@ -0,0 +1,15 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %}
{%- from tplroot ~ "/map.jinja" import packages with context %}
{%- for package in packages.golang.clean %}
packages-golang-clean-{{ package }}-cmd-run:
cmd.run:
- name: go clean -i {{ package }}...
- runas: {{ packages.rootuser }}
{%- endfor %}

15
packages/golang/goget.sls Normal file
View file

@ -0,0 +1,15 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %}
{%- from tplroot ~ "/map.jinja" import packages with context %}
{%- for package in packages.golang.goget %}
packages-golang-goget-{{ package }}-cmd-run:
cmd.run:
- name: go get {{ package }}
- runas: {{ packages.rootuser }}
{%- endfor %}

6
packages/golang/init.sls Normal file
View file

@ -0,0 +1,6 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
include:
- .clean
- .goget

View file

@ -18,3 +18,10 @@
),
base='packages')
%}
{#- Post-processing for specific non-YAML customisations #}
{%- do packages.update({'kernel': grains.kernel | lower}) %}
{%- if grains.os == 'MacOS' %}
{%- set macos_user = salt['cmd.run']("stat -f '%Su' /dev/console") %}
{%- do packages.update({'rootuser': macos_user}) %}
{%- endif %}

View file

@ -32,8 +32,8 @@ npm_req_pkgs:
npms_dir:
file.directory:
- name: {{ packages.npms.dir }}
- user: {{ 'root' if 'user' not in packages.npms else packages.npms.user }}
- group: {{ 'root' if 'group' not in packages.npms else packages.npms.group }}
- user: {{ packages.rootuser if 'user' not in packages.npms else packages.npms.user }}
- group: {{ packages.rootuser if 'group' not in packages.npms else packages.npms.group }}
- mode: {{ '0755' if 'mode' not in packages.npms else packages.npms.mode }}
- makedirs: True
{% endif %}

View file

@ -61,6 +61,14 @@ packages:
unwanted:
- goodbye-world
golang:
goget:
- github.com/golang/example/hello
- github.com/golang/example/outyet
clean:
- github.com/golang/example/hello
- github.com/golang/example/outyet
npms:
dir: /home/kitchen/npms # The target directory in which to install the package, or None for global installation
user: kitchen # The user to run NPM with (and to assign to `dir`)

View file

@ -15,7 +15,7 @@ control 'Archive packages' do
it { should exist }
end
end
describe file('/usr/local/bin/kubectl') do
describe file('/usr/local/go/bin/go') do
it { should be_executable }
end
end

View file

@ -0,0 +1,22 @@
go_path = '/home/kitchen/go'
# GO GET
control 'go get github.com/golang/example/hello' do
title 'should be installed'
desc '(only testing in the Debian platform, as these are OS-independent'
only_if do
os.debian?
end
describe file('/usr/local/go/bin/go') do
it { should be_executable }
end
%w(
github.com/golang/example/hello
).each do |f|
describe file("#{go_path}/src/#{f}") do
it { should exist }
end
end

View file

@ -79,14 +79,22 @@ packages:
format: raw
source: https://raw.githubusercontent.com/openstack/cinder/master/contrib/block-box/docker-compose.yml
hashsum: 1751f8e4f6b4cddd8c4843a0f4473274
kubectl:
dest: /usr/local/bin
golang:
dest: /usr/local
dl:
format: bin
source: https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/darwin/amd64/kubectl
format: tar
source: https://dl.google.com/go/go1.12.7.linux-amd64.tar.gz
hashsum: 66d83bfb5a9ede000e33c6579a91a29e6b101829ad41fffb5c5bb6c900e109d9
unwanted:
- /usr/local/boring_archive_software
remote_pkgs:
zoom: 'https://zoom.us/client/latest/zoom_amd64.deb'
golang:
goget:
- github.com/golang/example/hello
- github.com/golang/example/outyet
clean:
- github.com/golang/example/hello
- github.com/golang/example/outyet

View file

@ -81,14 +81,22 @@ packages:
format: raw
source: https://raw.githubusercontent.com/openstack/cinder/master/contrib/block-box/docker-compose.yml
hashsum: 1751f8e4f6b4cddd8c4843a0f4473274
kubectl:
dest: /usr/local/bin
golang:
dest: /usr/local
dl:
format: bin
source: https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/darwin/amd64/kubectl
format: tar
source: https://dl.google.com/go/go1.12.7.linux-amd64.tar.gz
hashsum: 66d83bfb5a9ede000e33c6579a91a29e6b101829ad41fffb5c5bb6c900e109d9
unwanted:
- /usr/local/boring_archive_software
remote_pkgs:
zoom: 'https://zoom.us/client/latest/zoom_amd64.deb'
golang:
goget:
- github.com/golang/example/hello
- github.com/golang/example/outyet
clean:
- github.com/golang/example/hello
- github.com/golang/example/outyet