-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #4 from juxt/build-ami
Build an AMI
- Loading branch information
Showing
25 changed files
with
816 additions
and
629 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,11 @@ | ||
**/.cpcache | ||
**/.nrepl-port | ||
**/target | ||
*.box | ||
*.deb | ||
*.pem | ||
*.tar.* | ||
*.tfstate | ||
*.tfstate.backup | ||
/share/**/.SRCINFO | ||
/share/**/pkg | ||
/share/**/src | ||
/terraform/.terraform | ||
/terraform/proposed.plan |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,22 @@ | ||
all: | ||
.PHONY: all debug | ||
|
||
COMMIT_REF=$(shell git rev-parse --short HEAD) | ||
|
||
all: clean | ||
packer build \ | ||
arch.json | ||
-var "commit_ref=$(COMMIT_REF)" \ | ||
rock.json | ||
|
||
# We need to clean up any build artefacts in the package directories because | ||
# they won't have right permissions, and may conflict with what we want to build | ||
# inside the VM. | ||
clean: | ||
rm -rf share/*/{src,pkg} | ||
|
||
debug: | ||
packer build -debug \ | ||
-var "commit_ref=$(COMMIT_REF)" \ | ||
rock.json | ||
|
||
test: | ||
shellcheck **/*.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
# | ||
# /etc/makepkg.conf | ||
# | ||
|
||
######################################################################### | ||
# SOURCE ACQUISITION | ||
######################################################################### | ||
# | ||
#-- The download utilities that makepkg should use to acquire sources | ||
# Format: 'protocol::agent' | ||
DLAGENTS=('ftp::/usr/bin/curl -fC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u' | ||
'http::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u' | ||
'https::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u' | ||
'rsync::/usr/bin/rsync --no-motd -z %u %o' | ||
'scp::/usr/bin/scp -C %u %o') | ||
|
||
# Other common tools: | ||
# /usr/bin/snarf | ||
# /usr/bin/lftpget -c | ||
# /usr/bin/wget | ||
|
||
#-- The package required by makepkg to download VCS sources | ||
# Format: 'protocol::package' | ||
VCSCLIENTS=('bzr::bzr' | ||
'git::git' | ||
'hg::mercurial' | ||
'svn::subversion') | ||
|
||
######################################################################### | ||
# ARCHITECTURE, COMPILE FLAGS | ||
######################################################################### | ||
# | ||
CARCH="x86_64" | ||
CHOST="x86_64-pc-linux-gnu" | ||
|
||
#-- Compiler and Linker Flags | ||
# -march (or -mcpu) builds exclusively for an architecture | ||
# -mtune optimizes for an architecture, but builds for whole processor family | ||
CPPFLAGS="-D_FORTIFY_SOURCE=2" | ||
CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt" | ||
CXXFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt" | ||
LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now" | ||
#-- Make Flags: change this for DistCC/SMP systems | ||
#MAKEFLAGS="-j2" | ||
#-- Debugging flags | ||
DEBUG_CFLAGS="-g -fvar-tracking-assignments" | ||
DEBUG_CXXFLAGS="-g -fvar-tracking-assignments" | ||
|
||
######################################################################### | ||
# BUILD ENVIRONMENT | ||
######################################################################### | ||
# | ||
# Defaults: BUILDENV=(!distcc color !ccache check !sign) | ||
# A negated environment option will do the opposite of the comments below. | ||
# | ||
#-- distcc: Use the Distributed C/C++/ObjC compiler | ||
#-- color: Colorize output messages | ||
#-- ccache: Use ccache to cache compilation | ||
#-- check: Run the check() function if present in the PKGBUILD | ||
#-- sign: Generate PGP signature file | ||
# | ||
BUILDENV=(!distcc color !ccache check !sign) | ||
# | ||
#-- If using DistCC, your MAKEFLAGS will also need modification. In addition, | ||
#-- specify a space-delimited list of hosts running in the DistCC cluster. | ||
#DISTCC_HOSTS="" | ||
# | ||
#-- Specify a directory for package building. | ||
#BUILDDIR=/tmp/makepkg | ||
|
||
######################################################################### | ||
# GLOBAL PACKAGE OPTIONS | ||
# These are default values for the options=() settings | ||
######################################################################### | ||
# | ||
# Default: OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !optipng !upx !debug) | ||
# A negated option will do the opposite of the comments below. | ||
# | ||
#-- strip: Strip symbols from binaries/libraries | ||
#-- docs: Save doc directories specified by DOC_DIRS | ||
#-- libtool: Leave libtool (.la) files in packages | ||
#-- staticlibs: Leave static library (.a) files in packages | ||
#-- emptydirs: Leave empty directories in packages | ||
#-- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip | ||
#-- purge: Remove files specified by PURGE_TARGETS | ||
#-- upx: Compress binary executable files using UPX | ||
#-- optipng: Optimize PNG images with optipng | ||
#-- debug: Add debugging flags as specified in DEBUG_* variables | ||
# | ||
OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !optipng !upx !debug) | ||
|
||
#-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512 | ||
INTEGRITY_CHECK=(md5) | ||
#-- Options to be used when stripping binaries. See `man strip' for details. | ||
STRIP_BINARIES="--strip-all" | ||
#-- Options to be used when stripping shared libraries. See `man strip' for details. | ||
STRIP_SHARED="--strip-unneeded" | ||
#-- Options to be used when stripping static libraries. See `man strip' for details. | ||
STRIP_STATIC="--strip-debug" | ||
#-- Manual (man and info) directories to compress (if zipman is specified) | ||
MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info}) | ||
#-- Doc directories to remove (if !docs is specified) | ||
DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc}) | ||
#-- Files to be removed from all packages (if purge is specified) | ||
PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod) | ||
|
||
######################################################################### | ||
# PACKAGE OUTPUT | ||
######################################################################### | ||
# | ||
# Default: put built package and cached source in build directory | ||
# | ||
#-- Destination: specify a fixed directory where all packages will be placed | ||
PKGDEST=/var/cache/pacman/juxt | ||
#-- Source cache: specify a fixed directory where source files will be cached | ||
#SRCDEST=/home/sources | ||
#-- Source packages: specify a fixed directory where all src packages will be placed | ||
#SRCPKGDEST=/home/srcpackages | ||
#-- Log files: specify a fixed directory where all log files will be placed | ||
#LOGDEST=/home/makepkglogs | ||
#-- Packager: name/email of the person or organization building packages | ||
#PACKAGER="John Doe <[email protected]>" | ||
#-- Specify a key to use for package signing | ||
#GPGKEY="" | ||
|
||
######################################################################### | ||
# COMPRESSION DEFAULTS | ||
######################################################################### | ||
# | ||
COMPRESSGZ=(gzip -c -f -n) | ||
COMPRESSBZ2=(bzip2 -c -f) | ||
COMPRESSXZ=(xz -c -z -) | ||
COMPRESSLRZ=(lrzip -q) | ||
COMPRESSLZO=(lzop -q) | ||
COMPRESSZ=(compress -c -f) | ||
|
||
######################################################################### | ||
# EXTENSION DEFAULTS | ||
######################################################################### | ||
# | ||
# WARNING: Do NOT modify these variables unless you know what you are | ||
# doing. | ||
# | ||
PKGEXT='.pkg.tar.xz' | ||
SRCEXT='.src.tar.gz' | ||
|
||
# vim: set ft=sh ts=2 sw=2 et: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
## sudoers file. | ||
## | ||
## This file MUST be edited with the 'visudo' command as root. | ||
## Failure to use 'visudo' may result in syntax or file permission errors | ||
## that prevent sudo from running. | ||
## | ||
## See the sudoers man page for the details on how to write a sudoers file. | ||
## | ||
|
||
## | ||
## Host alias specification | ||
## | ||
## Groups of machines. These may include host names (optionally with wildcards), | ||
## IP addresses, network numbers or netgroups. | ||
# Host_Alias WEBSERVERS = www1, www2, www3 | ||
|
||
## | ||
## User alias specification | ||
## | ||
## Groups of users. These may consist of user names, uids, Unix groups, | ||
## or netgroups. | ||
# User_Alias ADMINS = millert, dowdy, mikef | ||
|
||
## | ||
## Cmnd alias specification | ||
## | ||
## Groups of commands. Often used to group related commands together. | ||
# Cmnd_Alias PROCESSES = /usr/bin/nice, /bin/kill, /usr/bin/renice, \ | ||
# /usr/bin/pkill, /usr/bin/top | ||
# Cmnd_Alias REBOOT = /sbin/halt, /sbin/reboot, /sbin/poweroff | ||
|
||
## | ||
## Defaults specification | ||
## | ||
## You may wish to keep some of the following environment variables | ||
## when running commands via sudo. | ||
## | ||
## Locale settings | ||
# Defaults env_keep += "LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET" | ||
## | ||
## Run X applications through sudo; HOME is used to find the | ||
## .Xauthority file. Note that other programs use HOME to find | ||
## configuration files and this may lead to privilege escalation! | ||
# Defaults env_keep += "HOME" | ||
## | ||
## X11 resource path settings | ||
# Defaults env_keep += "XAPPLRESDIR XFILESEARCHPATH XUSERFILESEARCHPATH" | ||
## | ||
## Desktop path settings | ||
# Defaults env_keep += "QTDIR KDEDIR" | ||
## | ||
## Allow sudo-run commands to inherit the callers' ConsoleKit session | ||
# Defaults env_keep += "XDG_SESSION_COOKIE" | ||
## | ||
## Uncomment to enable special input methods. Care should be taken as | ||
## this may allow users to subvert the command being run via sudo. | ||
# Defaults env_keep += "XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER" | ||
## | ||
## Uncomment to use a hard-coded PATH instead of the user's to find commands | ||
# Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | ||
## | ||
## Uncomment to send mail if the user does not enter the correct password. | ||
# Defaults mail_badpass | ||
## | ||
## Uncomment to enable logging of a command's output, except for | ||
## sudoreplay and reboot. Use sudoreplay to play back logged sessions. | ||
# Defaults log_output | ||
# Defaults!/usr/bin/sudoreplay !log_output | ||
# Defaults!/usr/local/bin/sudoreplay !log_output | ||
# Defaults!REBOOT !log_output | ||
|
||
## | ||
## Runas alias specification | ||
## | ||
|
||
## | ||
## User privilege specification | ||
## | ||
root ALL=(ALL) ALL | ||
|
||
## Uncomment to allow members of group wheel to execute any command | ||
# %wheel ALL=(ALL) ALL | ||
|
||
## Same thing without a password | ||
%wheel ALL=(ALL) NOPASSWD: ALL | ||
|
||
## Uncomment to allow members of group sudo to execute any command | ||
# %sudo ALL=(ALL) ALL | ||
|
||
## Uncomment to allow any user to run sudo if they know the password | ||
## of the user they are running the command as (root by default). | ||
# Defaults targetpw # Ask for the password of the target user | ||
# ALL ALL=(ALL) ALL # WARNING: only use this together with 'Defaults targetpw' | ||
|
||
## Read drop-in files from /etc/sudoers.d | ||
## (the '#' here does not indicate a comment) | ||
#includedir /etc/sudoers.d |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
{ | ||
"_comment": "Keys prefixed with an underscore are comments.", | ||
"variables": { | ||
"commit_ref": "none", | ||
"juxt_pkg_dir": "/var/lib/juxt-pkgbuilds", | ||
"juxt_repo_dir": "/var/cache/pacman/juxt" | ||
}, | ||
"builders": [ | ||
{ | ||
"type": "amazon-ebs", | ||
"region": "eu-west-1", | ||
"source_ami": "ami-0b8ec472", | ||
"instance_type": "t2.small", | ||
"ssh_username": "root", | ||
"ami_name": "juxt-rock-{{user `commit_ref`}}-{{timestamp}}" | ||
} | ||
], | ||
"provisioners": [ | ||
{ | ||
"type": "shell", | ||
"script": "scripts/remove-llmnr.sh" | ||
}, | ||
{ | ||
"type": "file", | ||
"source": "etc/timesyncd.conf", | ||
"destination": "/etc/timesyncd.conf" | ||
}, | ||
{ | ||
"type": "file", | ||
"source": "etc/sudoers", | ||
"destination": "/etc/sudoers" | ||
}, | ||
{ | ||
"type": "file", | ||
"source": "etc/makepkg.conf", | ||
"destination": "/etc/makepkg.conf" | ||
}, | ||
{ | ||
"type": "shell", | ||
"script": "scripts/install-base.sh", | ||
"environment_vars": [ | ||
"PKG_DIR={{user `juxt_pkg_dir`}}", | ||
"REPO_DIR={{user `juxt_repo_dir`}}" | ||
] | ||
}, | ||
{ | ||
"type": "file", | ||
"source": "share/", | ||
"destination": "{{user `juxt_pkg_dir`}}" | ||
}, | ||
{ | ||
"type": "shell", | ||
"script": "scripts/install-custom.sh", | ||
"environment_vars": [ | ||
"PKG_DIR={{user `juxt_pkg_dir`}}", | ||
"REPO_DIR={{user `juxt_repo_dir`}}" | ||
] | ||
}, | ||
{ | ||
"type": "shell", | ||
"script": "scripts/install-clojure.sh" | ||
} | ||
], | ||
"post-processors": [ | ||
"vagrant" | ||
] | ||
} |
Oops, something went wrong.