1. 4

    I’d highly recommend MoinMoin. I’ve been running Moin for over a decade as my personal wiki and it works spectacularly well.

    When I was looking for a wiki the three primary considerations were cost of maintenance (must not require constant maintenance, be easy to setup, easy to backup), ease of use (from the UI), and extensibility (so that I could work my way around any deficiencies in the software). Moin did well on all of these critera. It’s a single standalone app that stores everything as files on the disk, no db server. The file layout is logical and easy to browse with ls if you’re so inclined, no proprietary formats, and it’s easy to backup with a simple rsync or tar command. It’s got a decent web UI and a lot of macros that make information organization easy. It’s also got an API that works well, and for which I’ve built integration with VIM. It’s also written in Python which makes it easy to install in a virtualenv (no root access necessary) for isolation and it’s designed to be extended (though this can range from very easy to kinda painful depending on what you’re extending). It can also use the Python Xapian extension for fast full-test indexing.

    It’s also used by quite a few open source projects like Debian, Python, and GNOME to name a few.

    1. 4

      AWS CodeBuild allows you to specify your buildspec file either within the console or using CloudFormation so you can store all of that configuration completely outside of the repository. It’s not technically a free product but if you use 100 build minutes or less a month you’ll fall into the free tier, past that it’s still pretty cheap at $0.30 per build-hour. One other nice feature is that, while they provide build images, you can bring your own if you have very specific toolchain or version needs.

      1. 2

        It requires to connect to SCM on following terms:


        GitHub

        Repositories: Public and private

        This application will be able to read and write all public and private repository data.

        Organizations and teams: Read-only access

        This application will be able to read your organization and team membership.


        BitBucket

        AWS CodeBuild … is requesting access to the following:

        • Read your account information
        • Read your repositories

        so it’s much saner here.

        But there is also a warning:

        AWS CodePipeline does not support Bitbucket.

        AWS CodePipeline cannot build source code stored in Bitbucket. If you want AWS CodePipeline to use this build project, choose a different source provider.

        Not sure yet what it exactly means, i.e. how CodeBuild and CodePipeline are related.

        1. 2

          By default only Ubuntu 14.04 is available:

          [Container] 2017/12/10 00:53:59 Running command uname -a
          Linux 9d4937a7a169 4.9.58-18.55.amzn1.x86_64 #1 SMP Thu Nov 2 04:38:47 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
          
          [Container] 2017/12/10 00:53:59 Running command lsb_release -drc
          Description:	Ubuntu 14.04.5 LTS
          Release:	14.04
          Codename:	trusty
          
          [Container] 2017/12/10 00:54:00 Running command gcc -v
          Using built-in specs.
          COLLECT_GCC=gcc
          COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
          Target: x86_64-linux-gnu
          Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04.3' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
          Thread model: posix
          gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
          

          Whole “building” (running these commands) took around ~7 seconds, but most of time was spent before calling these commands:

          [Container] 2017/12/10 00:53:53 Waiting for agent ping
          [Container] 2017/12/10 00:53:54 Waiting for DOWNLOAD_SOURCE
          [Container] 2017/12/10 00:53:58 Phase is DOWNLOAD_SOURCE
          [Container] 2017/12/10 00:53:59 CODEBUILD_SRC_DIR=/codebuild/output/src906734987/src/...
          [Container] 2017/12/10 00:53:59 YAML location is /codebuild/readonly/buildspec.yml
          [Container] 2017/12/10 00:53:59 Processing environment variables
          [Container] 2017/12/10 00:53:59 Moving to directory /codebuild/output/src906734987/src/...
          [Container] 2017/12/10 00:53:59 Registering with agent
          [Container] 2017/12/10 00:53:59 Phases found in YAML: 1
          

          Phase details:

          • SUBMITTED Succeeded
          • PROVISIONING Succeeded 24 secs
          • DOWNLOAD_SOURCE Succeeded 4 secs
          • INSTALL Succeeded
          • PRE_BUILD Succeeded
          • BUILD Succeeded 1 sec
          • POST_BUILD Succeeded
          • UPLOAD_ARTIFACTS Succeeded
          • FINALIZING Succeeded 3 secs

          But other docker images can be indeed provided too. Will check it later.

          1. 2

            All of the Dockerfiles for their provided containers are open-sourced on GitHub. I’ve used them as a jumping-off point for building custom images with good luck in the past.

            They’ve also announced Windows support is forthcoming and you can sign-up for early access. I haven’t played with it though since I don’t have any projects that require Windows.

            1. 1

              Thanks for the links. It’s good to know how exactly their docker images are created. Windows support is also useful feature for cross-platform software.

          2. 2

            They also support zip files in S3, so if you had a use-case that didn’t work with either GitHub or BitBucket you could just zip up your source and build it like that. The bit about CodePipeline only applies if you’re using CodePipeline to orchestrate a build and deployment workflow, you can also just use CodeBuild standalone which removes those limitations.

            1. 1

              They do support S3, but it’s amazon’s service, so I couldn’t expect less from them. Jokes aside, I’m not S3 user, but it may be a useful feature for some workflows out there in the wild. CodePipeline has only 1 active pipeline per month in free tier, which I presume could be a problem in case of wanting to use it in more than one project.

              1. 2

                I’ve only used the S3 support a few times but it comes in handy for any really odd build workflows that are tough to model in a repository alone or require some form of external input, such as updating docker images based on changes to the dependent software within that container (following Linux package updates, etc…) but I consider those flows to be a bit of a hack.

                Where I’ve found that CodePipeline really shines is when you need to deal with builds and complex promotions to testing environments then eventually to production. That being said I really use it for a few of my side projects. For the basic build, test, publish flow it’s easy enough to model in CodeBuild alone.

          3. 1

            Interesting! Didn’t know that AWS provides something like this. Cannot comment on CodeBuild pricing, as I have never compared prices for build services before. But 100 minutes should be enough for smaller projects without thousands of commits per month.