build-aci 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #!/usr/bin/env bash
  2. BINARYDIR=${BINARYDIR:-bin}
  3. BUILDDIR=${BUILDDIR:-bin}
  4. # A non-installed actool can be used, for example:
  5. # ACTOOL=../../appc/spec/bin/actool
  6. ACTOOL=${ACTOOL:-actool}
  7. IMAGEDIR=${IMAGEDIR:-$BUILDDIR/image-aci}
  8. VERSION=$1
  9. if ! command -v $ACTOOL >/dev/null; then
  10. echo "actool ($ACTOOL) is not executable"
  11. exit 1
  12. fi
  13. if [ ! -x $BINARYDIR/etcd ] ; then
  14. echo "$BINARYDIR/etcd not found. Is it compiled?"
  15. exit 1
  16. fi
  17. if [ -z "$VERSION" ] ; then
  18. echo "Usage: scripts/build-aci VERSION"
  19. exit 1
  20. fi
  21. mkdir -p $IMAGEDIR/rootfs
  22. if [ ! -d $IMAGEDIR/rootfs -o ! -x $IMAGEDIR/rootfs ]; then
  23. echo "$IMAGEDIR/rootfs is not a writeable directory"
  24. exit 1
  25. fi
  26. if [ -n "$(ls -A $IMAGEDIR/rootfs)" ]; then
  27. echo "$IMAGEDIR/rootfs is not empty"
  28. exit 1
  29. fi
  30. cp $BINARYDIR/etcd $BINARYDIR/etcdctl $IMAGEDIR/rootfs/
  31. cp README.md $IMAGEDIR/rootfs/
  32. cp etcdctl/README.md $IMAGEDIR/rootfs/README-etcdctl.md
  33. cp -r Documentation $IMAGEDIR/rootfs/
  34. cat <<DF > $IMAGEDIR/manifest
  35. {
  36. "acVersion": "0.5.1",
  37. "acKind": "ImageManifest",
  38. "name": "coreos.com/etcd",
  39. "labels": [
  40. {"name": "os", "value": "linux"},
  41. {"name": "arch", "value": "amd64"},
  42. {"name": "version", "value": "${VERSION}"}
  43. ],
  44. "app": {
  45. "environment": [
  46. {
  47. "name": "ETCD_DATA_DIR",
  48. "value": "/data-dir"
  49. }
  50. ],
  51. "exec": [
  52. "/etcd"
  53. ],
  54. "user": "0",
  55. "group": "0",
  56. "mountPoints": [
  57. {
  58. "name": "data-dir",
  59. "path": "/data-dir"
  60. }
  61. ],
  62. "ports": [
  63. {
  64. "name": "legacy-client",
  65. "port": 4001,
  66. "protocol": "tcp"
  67. },
  68. {
  69. "name": "client",
  70. "port": 2379,
  71. "protocol": "tcp"
  72. },
  73. {
  74. "name": "legacy-peer",
  75. "port": 7001,
  76. "protocol": "tcp"
  77. },
  78. {
  79. "name": "peer",
  80. "port": 2380,
  81. "protocol": "tcp"
  82. }
  83. ]
  84. }
  85. }
  86. DF
  87. mkdir -p $IMAGEDIR/rootfs/etc/
  88. cat <<DF > $IMAGEDIR/rootfs/etc/hosts
  89. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  90. DF
  91. $ACTOOL build -overwrite=true $IMAGEDIR $BUILDDIR/etcd-${1}-linux-amd64.aci