├── .gitignore ├── CODE_OF_CONDUCT.md ├── Makefile ├── README.md ├── ci ├── pipeline.yml ├── repipe ├── scripts │ ├── update-dockerfile-from-buildpack-git.sh │ └── update-dockerfile-from-buildpack-resources.sh └── settings.yml ├── concourse-go ├── 1.16 │ ├── Dockerfile │ ├── README.md │ └── pipeline.yml-disabled ├── 1.17 │ ├── Dockerfile │ ├── README.md │ └── pipeline.yml-disabled ├── 1.18 │ ├── Dockerfile │ ├── README.md │ └── pipeline.yml-disabled ├── 1.20 │ ├── Dockerfile │ ├── README.md │ └── pipeline.yml ├── pipeline.yml └── shield │ ├── Dockerfile │ ├── README.md │ └── pipeline.yml-disabled ├── concourse-java ├── 8 │ ├── Dockerfile │ └── pipeline.yml ├── 11 │ ├── Dockerfile │ └── pipeline.yml └── pipeline.yml ├── concourse-kubernetes └── latest │ ├── Dockerfile │ ├── README.md │ └── pipeline.yml ├── concourse-nodejs ├── 10 │ ├── Dockerfile │ └── pipeline.yml ├── 12 │ ├── Dockerfile │ └── pipeline.yml ├── 14 │ ├── Dockerfile │ └── pipeline.yml └── pipeline.yml ├── concourse-ruby ├── 2.6 │ ├── Dockerfile │ └── pipeline.yml ├── 2.7 │ ├── Dockerfile │ └── pipeline.yml ├── 3.0 │ ├── Dockerfile │ └── pipeline.yml ├── 3.1 │ ├── Dockerfile │ └── pipeline.yml └── pipeline.yml ├── concourse ├── ubuntu-bionic │ ├── Dockerfile │ ├── README.md │ └── pipeline.yml-disabled └── ubuntu-jammy │ ├── Dockerfile │ ├── README.md │ └── pipeline.yml ├── gcp-cloudshell └── latest │ ├── Dockerfile │ └── pipeline.yml-disabled └── genesis2 └── latest ├── Dockerfile ├── README.md └── ignoreme-pipeline.yml /.gitignore: -------------------------------------------------------------------------------- 1 | /ci/credentials.yml 2 | /ci/.*.yml 3 | cf7 4 | cf8 5 | bosh 6 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | ## Code of Conduct 2 | 3 | ### Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, gender identity and expression, level of experience, 9 | nationality, personal appearance, race, religion, or sexual identity and 10 | orientation. 11 | 12 | ### Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ### Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, pull requests, and other 42 | contributions that are not aligned to this Code of Conduct, or to ban 43 | temporarily or permanently any contributor for other behaviors that they deem 44 | inappropriate, threatening, offensive, or harmful. 45 | 46 | ### Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ### Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at conduct@starkandwayne.com. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ### Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at [http://contributor-covenant.org/version/1/4][version] 72 | 73 | [homepage]: http://contributor-covenant.org 74 | [version]: http://contributor-covenant.org/version/1/4/ -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: concourse go 2 | 3 | concourse: 4 | docker build -t genesiscommunity/concourse:latest concourse/latest/ 5 | 6 | go: 7 | docker build -t genesiscommunity/concourse-go:1.20 concourse-go/1.20/ 8 | 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Docker Files 2 | ============ 3 | 4 | This repository houses our Docker image definitions. 5 | 6 | Common base image: 7 | 8 | ```yaml 9 | image_resource: 10 | type: docker-image 11 | source: 12 | repository: starkandwayne/concourse 13 | ``` 14 | 15 | Image with Go installed: 16 | 17 | ```yaml 18 | image_resource: 19 | type: docker-image 20 | source: 21 | repository: starkandwayne/concourse-go:1.12 22 | ``` 23 | 24 | Image with Java/Maven installed: 25 | 26 | ```yaml 27 | image_resource: 28 | type: docker-image 29 | source: 30 | repository: starkandwayne/concourse-java:11 31 | ``` 32 | 33 | Image with Ruby installed: 34 | 35 | ```yaml 36 | image_resource: 37 | type: docker-image 38 | source: 39 | repository: starkandwayne/concourse-ruby:2.6 40 | ``` 41 | 42 | Image with Node installed: 43 | 44 | ```yaml 45 | image_resource: 46 | type: docker-image 47 | source: 48 | repository: starkandwayne/concourse-nodejs:10 49 | ``` 50 | -------------------------------------------------------------------------------- /ci/pipeline.yml: -------------------------------------------------------------------------------- 1 | --- 2 | groups: 3 | - name: all 4 | jobs: 5 | - "*" 6 | - name: concourse 7 | jobs: 8 | - "build-concourse_*" 9 | - name: concourse-go 10 | jobs: 11 | - "build-concourse-go_*" 12 | 13 | notgroups: 14 | - name: concourse-java 15 | jobs: 16 | - "build-concourse-java_*" 17 | - name: concourse-ruby 18 | jobs: 19 | - "build-concourse-ruby_*" 20 | - name: concourse-nodejs 21 | jobs: 22 | - "build-concourse-nodejs_*" 23 | - name: concourse-kubernetes 24 | jobs: 25 | - "build-concourse-kubernetes_*" 26 | - name: gcp-cloudshell 27 | jobs: 28 | - "bump-upstream-cloudshell_*" 29 | -------------------------------------------------------------------------------- /ci/repipe: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if [[ -z ${1} ]]; then 3 | echo >&2 "USAGE: $0 concourse-target pipelines..." 4 | exit 1 5 | fi 6 | concourse=${1}; shift 7 | 8 | fly_cmd="${FLY_CMD:-fly}" 9 | 10 | set -eu 11 | root=$(cd $(dirname $BASH_SOURCE[0])/..; pwd) 12 | 13 | if [[ -z $(command -v spruce 2>/dev/null) ]]; then 14 | echo >&2 "spruce is missing! Please install spruce from https://github.com/geofffranks/spruce" 15 | exit 1 16 | fi 17 | 18 | ifpresent() { 19 | for file in "$@"; do 20 | [ -f ${file} ] && echo ${file} 21 | done 22 | } 23 | 24 | cd ${root} 25 | [[ $# > 0 ]] || set -- */pipeline.yml */*/pipeline.yml 26 | 27 | (cd ${root} && \ 28 | spruce merge \ 29 | $(ifpresent ci/pipeline.yml "$@" ci/settings.yml ) \ 30 | > ci/.full.yml) || exit 2 31 | (cd ${root}/ci && \ 32 | spruce merge --prune meta .full.yml \ 33 | > .live.yml) || exit 2 34 | 35 | set -x 36 | $fly_cmd set-pipeline -p concourse-dockerimages -c ${root}/ci/.live.yml -t ${concourse} 37 | -------------------------------------------------------------------------------- /ci/scripts/update-dockerfile-from-buildpack-git.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eu 4 | 5 | root="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../.." && pwd )" 6 | 7 | : ${buildpack:?required: path/to/buildpack} 8 | : ${dependency:?required: e.g. go, ruby, java} 9 | : ${dockerfile_dep_prefix:?required: e.g. GOLANG, RUBY} 10 | dockerfile_name=${dockerfile_name:-$dependency} 11 | 12 | manifest=${buildpack}/manifest.yml 13 | [[ -f $manifest ]] || { echo "No $manifest found"; exit 1; } 14 | dependencies=$(spruce json $manifest | jq -r --arg dep $dependency '.dependencies | map(select(.name == $dep))') 15 | 16 | git clone $root pushme 17 | cd pushme 18 | 19 | if [[ -z $(git config --global user.email) ]]; then 20 | git config --global user.email "${git_email}" 21 | fi 22 | if [[ -z $(git config --global user.name) ]]; then 23 | git config --global user.name "${git_name}" 24 | fi 25 | 26 | for dockerfile in $(ls -d concourse-$dockerfile_name/*/Dockerfile); do 27 | version_prefix=$(basename $(dirname $dockerfile)) 28 | echo "Checking $version_prefix of $dockerfile" 29 | patch_release=$(echo "$dependencies" | jq -r ".[].version | scan(\"^$version_prefix(.*)\")[0]" | sort -r | head -n 1) 30 | # do not touch Dockerfile if manifest.yml does not yet/no longer includes versions 31 | if [[ "${patch_release:-X}" != "X" ]]; then 32 | latest_version=$version_prefix$patch_release 33 | echo "Latest version $latest_version" 34 | latest_dep=$(echo "$dependencies" | jq -r --arg dep $dependency --arg version $latest_version '.[] | select(.name == $dep and .version == $version and .cf_stacks == ["cflinuxfs3"])') 35 | 36 | sed -i "s%^ENV ${dockerfile_dep_prefix}_VERSION.*$%ENV ${dockerfile_dep_prefix}_VERSION $latest_version%" $dockerfile 37 | sed -i "s%^ENV ${dockerfile_dep_prefix}_URL.*$%ENV ${dockerfile_dep_prefix}_URL $(echo "$latest_dep" | jq -r ".uri")%" $dockerfile 38 | sed -i "s%^ENV ${dockerfile_dep_prefix}_SHA256.*$%ENV ${dockerfile_dep_prefix}_SHA256 $(echo "$latest_dep" | jq -r ".sha256")%" $dockerfile 39 | 40 | if [[ "$(git status -s)X" != "X" ]]; then 41 | echo "Detected new $dependency $latest_version" 42 | git merge --no-edit master 43 | git status 44 | git --no-pager diff 45 | git add $dockerfile 46 | git commit -m "Updated $dependency $latest_version" 47 | fi 48 | fi 49 | done -------------------------------------------------------------------------------- /ci/scripts/update-dockerfile-from-buildpack-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eu 4 | 5 | root="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../.." && pwd )" 6 | 7 | : ${buildpack:?required: path/to/buildpack.zip or "path/to/buildpack-*.zip"} 8 | : ${dependency:?required: e.g. go, ruby, java} 9 | : ${dockerfile_dep_prefix:?required: e.g. GOLANG, RUBY} 10 | dockerfile_name=${dockerfile_name:-$dependency} 11 | 12 | [[ -f $(eval ls $buildpack) ]] || { echo "pass path to buildpack.zip; bad parameter: '$buildpack'"; exit 1; } 13 | 14 | manifest=$(unzip -p $(eval ls $buildpack) manifest.yml) 15 | dependencies=$(spruce json <(echo "$manifest") | jq -r --arg dep $dependency '.dependencies | map(select(.name == $dep))') 16 | 17 | git clone $root pushme 18 | cd pushme 19 | 20 | if [[ -z $(git config --global user.email) ]]; then 21 | git config --global user.email "${git_email}" 22 | fi 23 | if [[ -z $(git config --global user.name) ]]; then 24 | git config --global user.name "${git_name}" 25 | fi 26 | 27 | for dockerfile in $(ls -d concourse-$dockerfile_name/*/Dockerfile); do 28 | for version_prefix in $(basename $(dirname $dockerfile)); do 29 | echo "Checking $version_prefix of $dockerfile" 30 | latest_version=$version_prefix$(echo "$dependencies" | jq -r ".[].version | scan(\"^$version_prefix(.*)\")[0]" | sort -r | head -n 1) 31 | echo "Latest version $latest_version" 32 | latest_dep=$(echo "$dependencies" | jq -r --arg dep $dependency --arg version $latest_version '.[] | select(.name == $dep and .version == $version)') 33 | 34 | sed -i "s%^ENV ${dockerfile_dep_prefix}_VERSION.*$%ENV ${dockerfile_dep_prefix}_VERSION $latest_version%" $dockerfile 35 | sed -i "s%^ENV ${dockerfile_dep_prefix}_URL.*$%ENV ${dockerfile_dep_prefix}_URL $(echo "$latest_dep" | jq -r ".uri")%" $dockerfile 36 | sed -i "s%^ENV ${dockerfile_dep_prefix}_SHA256.*$%ENV ${dockerfile_dep_prefix}_SHA256 $(echo "$latest_dep" | jq -r ".sha256")%" $dockerfile 37 | 38 | if [[ "$(git status -s)X" != "X" ]]; then 39 | echo "Detected new $dependency $latest_version" 40 | git merge --no-edit master 41 | git status 42 | git --no-pager diff 43 | git add $dockerfile 44 | git commit -m "Updated $dependency $latest_version" 45 | fi 46 | done 47 | done -------------------------------------------------------------------------------- /ci/settings.yml: -------------------------------------------------------------------------------- 1 | --- 2 | meta: 3 | dockerhub: 4 | account: ((dockerhub.username)) 5 | email: ((dockerhub.email)) 6 | username: ((dockerhub.username)) 7 | password: ((dockerhub.password)) 8 | 9 | image-registry: 10 | account: ((image-registry.account)) 11 | username: ((image-registry.username)) 12 | password: ((image-registry.password)) 13 | email: ((image-registry.email)) 14 | 15 | github: 16 | key: ((github.private_key)) 17 | access_token: ((github.access-token)) 18 | 19 | git: 20 | email: genesis-ci@rubidiumstudios.com 21 | name: Genesis CI Bot 22 | 23 | resources: 24 | dockerfiles: 25 | type: git 26 | source: 27 | uri: git@github.com:genesis-community/concourse-dockerfiles 28 | branch: main 29 | private_key: (( grab meta.github.key )) 30 | 31 | dockerhub: 32 | type: docker-image 33 | source: 34 | email: (( grab meta.dockerhub.email )) 35 | username: (( grab meta.dockerhub.username )) 36 | password: (( grab meta.dockerhub.password )) 37 | 38 | local-registry: 39 | type: docker-image 40 | source: 41 | email: (( grab meta.image-registry.email )) 42 | username: (( grab meta.image-registry.username )) 43 | password: (( grab meta.image-registry.password )) 44 | 45 | github-release: 46 | type: github-release 47 | source: 48 | access_token: (( grab meta.github.access_token )) 49 | 50 | git: 51 | type: git 52 | source: 53 | private_key: (( grab meta.github.key )) 54 | -------------------------------------------------------------------------------- /concourse-go/1.16/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM starkandwayne/concourse 2 | # https://github.com/starkandwayne/dockerfiles/blob/master/concourse/Dockerfile 3 | 4 | USER root 5 | RUN apt-get update && apt-get install bzr gcc -y 6 | 7 | # Install Go 8 | # mkdir -p /goroot will create goroot dir under the root in the docker 9 | # curl url will output to stand out, with | to direct it to tar, which will extract the precompliled 10 | # go lang to /goroot 11 | 12 | # https://golang.org/dl/ 13 | ENV GOLANG_VERSION 1.16.15 14 | ENV GOLANG_URL https://buildpacks.cloudfoundry.org/dependencies/go/go_1.16.15_linux_x64_cflinuxfs3_dc90d19f.tgz 15 | ENV GOLANG_SHA256 dc90d19f0fd8ed7bc7c8de33be4051793d9bade3eae4fadfa4fac7bb8eaac05e 16 | RUN \ 17 | mkdir -p /goroot /gopath && \ 18 | curl $GOLANG_URL | \ 19 | tar xvzf - -C /goroot --strip-components=1 && \ 20 | chown -R worker /goroot /gopath 21 | 22 | 23 | # Set environment variables. 24 | ENV \ 25 | GOROOT=/goroot \ 26 | GOPATH=/gopath \ 27 | PATH=/goroot/bin:/gopath/bin:$PATH 28 | 29 | # Useful go packages. 30 | RUN go get golang.org/x/tools/cmd/cover \ 31 | && go get golang.org/x/lint/golint \ 32 | && go get github.com/tools/godep \ 33 | && go get github.com/laher/goxc \ 34 | && go get github.com/onsi/ginkgo/ginkgo \ 35 | && go get github.com/onsi/gomega/... 36 | -------------------------------------------------------------------------------- /concourse-go/1.16/README.md: -------------------------------------------------------------------------------- 1 | starkandwayne/concourse-go:1.15 2 | ============================== 3 | 4 | Task Image for running Concourse Pipelines - Now With Go 1.15! 5 | 6 | This Docker image contains a set of utilities commonly used in 7 | Concourse pipelines, pre-installed, along with Go 1.15. 8 | 9 | The `$GOPATH` and `$GOROOT` environment variables will already be 10 | set for you (to `/gopath` and `/goroot`, respectively). Likewise, 11 | `$PATH` is properly set up to include the binaries installed by 12 | `go get`. 13 | 14 | The following useful tools are installed by default: 15 | 16 | - [go cover][gocover] - Tool for generating test coverage reports 17 | - [go vet][govet] - Tool for vetting your source code for possible 18 | issues and non-idiomatic usage 19 | - [golint][golint] - A linter for Go source code 20 | - [godep][godep] - Dependency management utility for Go projects 21 | - [goxc][goxc] - Go cross-compiler 22 | - [ginko][ginko] - a Go testing framework 23 | - [gomega][gomega] - a matcher/assertion library 24 | 25 | 26 | 27 | 28 | [gocover]: https://godoc.org/golang.org/x/tools/cmd/cover 29 | [govet]: https://godoc.org/golang.org/x/tools/cmd/vet 30 | [golint]: https://github.com/golang/lint 31 | [godep]: https://github.com/tools/godep 32 | [goxc]: https://github.com/laher/goxc 33 | [ginko]: https://onsi.github.io/ginkgo 34 | [gomega]: https://onsi.github.io/gomega -------------------------------------------------------------------------------- /concourse-go/1.16/pipeline.yml-disabled: -------------------------------------------------------------------------------- 1 | --- 2 | resources: 3 | - name: 'concourse-go_1_16_github' 4 | .: (( inject meta.resources.dockerfiles )) 5 | source: 6 | paths: 7 | - concourse-go/1.16/Dockerfile 8 | - name: 'concourse-go_1_16_dockerhub' 9 | .: (( inject meta.resources.dockerhub )) 10 | source: 11 | repository: (( concat meta.dockerhub.account "/concourse-go" )) 12 | tag: "1.16" 13 | 14 | jobs: 15 | - name: 'build-concourse-go_1_16' 16 | public: true 17 | plan: 18 | - { get: git, resource: 'concourse-go_1_16_github', trigger: true } 19 | - { get: img, resource: 'concourse_latest_dockerhub', trigger: true, passed: ['build-concourse_latest'], params: {skip_download: true} } 20 | - put: 'concourse-go_1_16_dockerhub' 21 | params: 22 | build: git/concourse-go/1.16 23 | tag_as_latest: true 24 | -------------------------------------------------------------------------------- /concourse-go/1.17/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM starkandwayne/concourse 2 | # https://github.com/starkandwayne/dockerfiles/blob/master/concourse/Dockerfile 3 | 4 | USER root 5 | RUN apt-get update && apt-get install bzr gcc -y 6 | 7 | # Install Go 8 | # mkdir -p /goroot will create goroot dir under the root in the docker 9 | # curl url will output to stand out, with | to direct it to tar, which will extract the precompliled 10 | # go lang to /goroot 11 | 12 | # https://golang.org/dl/ 13 | ENV GOLANG_VERSION 1.17.13 14 | ENV GOLANG_URL https://buildpacks.cloudfoundry.org/dependencies/go/go_1.17.13_linux_x64_cflinuxfs3_773f1266.tgz 15 | ENV GOLANG_SHA256 773f12667861451dd4dc578be8a251b16ed2675717678bc5870d3912d2bd7146 16 | RUN \ 17 | mkdir -p /goroot /gopath && \ 18 | curl $GOLANG_URL | \ 19 | tar xvzf - -C /goroot --strip-components=1 && \ 20 | chown -R worker /goroot /gopath 21 | 22 | 23 | # Set environment variables. 24 | ENV \ 25 | GOROOT=/goroot \ 26 | GOPATH=/gopath \ 27 | PATH=/goroot/bin:/gopath/bin:$PATH 28 | 29 | # Useful go packages. 30 | RUN go get golang.org/x/tools/cmd/cover \ 31 | && go get golang.org/x/lint/golint \ 32 | && go get github.com/tools/godep \ 33 | && go get github.com/laher/goxc \ 34 | && go get github.com/onsi/ginkgo/ginkgo \ 35 | && go get github.com/onsi/gomega/... 36 | -------------------------------------------------------------------------------- /concourse-go/1.17/README.md: -------------------------------------------------------------------------------- 1 | starkandwayne/concourse-go:1.15 2 | ============================== 3 | 4 | Task Image for running Concourse Pipelines - Now With Go 1.15! 5 | 6 | This Docker image contains a set of utilities commonly used in 7 | Concourse pipelines, pre-installed, along with Go 1.15. 8 | 9 | The `$GOPATH` and `$GOROOT` environment variables will already be 10 | set for you (to `/gopath` and `/goroot`, respectively). Likewise, 11 | `$PATH` is properly set up to include the binaries installed by 12 | `go get`. 13 | 14 | The following useful tools are installed by default: 15 | 16 | - [go cover][gocover] - Tool for generating test coverage reports 17 | - [go vet][govet] - Tool for vetting your source code for possible 18 | issues and non-idiomatic usage 19 | - [golint][golint] - A linter for Go source code 20 | - [godep][godep] - Dependency management utility for Go projects 21 | - [goxc][goxc] - Go cross-compiler 22 | - [ginko][ginko] - a Go testing framework 23 | - [gomega][gomega] - a matcher/assertion library 24 | 25 | 26 | 27 | 28 | [gocover]: https://godoc.org/golang.org/x/tools/cmd/cover 29 | [govet]: https://godoc.org/golang.org/x/tools/cmd/vet 30 | [golint]: https://github.com/golang/lint 31 | [godep]: https://github.com/tools/godep 32 | [goxc]: https://github.com/laher/goxc 33 | [ginko]: https://onsi.github.io/ginkgo 34 | [gomega]: https://onsi.github.io/gomega -------------------------------------------------------------------------------- /concourse-go/1.17/pipeline.yml-disabled: -------------------------------------------------------------------------------- 1 | --- 2 | resources: 3 | - name: 'concourse-go_1_17_github' 4 | .: (( inject meta.resources.dockerfiles )) 5 | source: 6 | paths: 7 | - concourse-go/1.17/Dockerfile 8 | - name: 'concourse-go_1_17_dockerhub' 9 | .: (( inject meta.resources.dockerhub )) 10 | source: 11 | repository: (( concat meta.dockerhub.account "/concourse-go" )) 12 | tag: "1.17" 13 | 14 | jobs: 15 | - name: 'build-concourse-go_1_17' 16 | public: true 17 | plan: 18 | - { get: git, resource: 'concourse-go_1_17_github', trigger: true } 19 | - { get: img, resource: 'concourse_latest_dockerhub', trigger: true, passed: ['build-concourse_latest'], params: {skip_download: true} } 20 | - put: 'concourse-go_1_17_dockerhub' 21 | params: 22 | build: git/concourse-go/1.17 23 | tag_as_latest: true 24 | -------------------------------------------------------------------------------- /concourse-go/1.18/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM starkandwayne/concourse 2 | # https://github.com/starkandwayne/dockerfiles/blob/master/concourse/Dockerfile 3 | 4 | USER root 5 | RUN apt-get update && apt-get install bzr gcc -y 6 | 7 | # Install Go 8 | # mkdir -p /goroot will create goroot dir under the root in the docker 9 | # curl url will output to stand out, with | to direct it to tar, which will extract the precompliled 10 | # go lang to /goroot 11 | 12 | # https://golang.org/dl/ 13 | ENV GOLANG_VERSION 1.18.9 14 | ENV GOLANG_URL https://buildpacks.cloudfoundry.org/dependencies/go/go_1.18.9_linux_x64_cflinuxfs3_6c5c1d95.tgz 15 | ENV GOLANG_SHA256 6c5c1d95dbe8710cd1b6671b068550e7cf9b914b939f01106a55c7a89b986194 16 | RUN \ 17 | mkdir -p /goroot /gopath && \ 18 | curl $GOLANG_URL | \ 19 | tar xvzf - -C /goroot --strip-components=1 && \ 20 | chown -R worker /goroot /gopath 21 | 22 | 23 | # Set environment variables. 24 | ENV \ 25 | GOROOT=/goroot \ 26 | GOPATH=/gopath \ 27 | PATH=/goroot/bin:/gopath/bin:$PATH 28 | 29 | # Useful go packages. 30 | RUN go get golang.org/x/tools/cmd/cover \ 31 | && go get golang.org/x/lint/golint \ 32 | && go get github.com/tools/godep \ 33 | && go get github.com/laher/goxc \ 34 | && go get github.com/onsi/ginkgo/ginkgo \ 35 | && go get github.com/onsi/gomega/... 36 | -------------------------------------------------------------------------------- /concourse-go/1.18/README.md: -------------------------------------------------------------------------------- 1 | starkandwayne/concourse-go:1.15 2 | ============================== 3 | 4 | Task Image for running Concourse Pipelines - Now With Go 1.15! 5 | 6 | This Docker image contains a set of utilities commonly used in 7 | Concourse pipelines, pre-installed, along with Go 1.15. 8 | 9 | The `$GOPATH` and `$GOROOT` environment variables will already be 10 | set for you (to `/gopath` and `/goroot`, respectively). Likewise, 11 | `$PATH` is properly set up to include the binaries installed by 12 | `go get`. 13 | 14 | The following useful tools are installed by default: 15 | 16 | - [go cover][gocover] - Tool for generating test coverage reports 17 | - [go vet][govet] - Tool for vetting your source code for possible 18 | issues and non-idiomatic usage 19 | - [golint][golint] - A linter for Go source code 20 | - [godep][godep] - Dependency management utility for Go projects 21 | - [goxc][goxc] - Go cross-compiler 22 | - [ginko][ginko] - a Go testing framework 23 | - [gomega][gomega] - a matcher/assertion library 24 | 25 | 26 | 27 | 28 | [gocover]: https://godoc.org/golang.org/x/tools/cmd/cover 29 | [govet]: https://godoc.org/golang.org/x/tools/cmd/vet 30 | [golint]: https://github.com/golang/lint 31 | [godep]: https://github.com/tools/godep 32 | [goxc]: https://github.com/laher/goxc 33 | [ginko]: https://onsi.github.io/ginkgo 34 | [gomega]: https://onsi.github.io/gomega -------------------------------------------------------------------------------- /concourse-go/1.18/pipeline.yml-disabled: -------------------------------------------------------------------------------- 1 | --- 2 | resources: 3 | - name: 'concourse-go_1_18_github' 4 | .: (( inject meta.resources.dockerfiles )) 5 | source: 6 | paths: 7 | - concourse-go/1.18/Dockerfile 8 | - name: 'concourse-go_1_18_dockerhub' 9 | .: (( inject meta.resources.dockerhub )) 10 | source: 11 | repository: (( concat meta.dockerhub.account "/concourse-go" )) 12 | tag: "1.18" 13 | 14 | jobs: 15 | - name: 'build-concourse-go_1_18' 16 | public: true 17 | plan: 18 | - { get: git, resource: 'concourse-go_1_18_github', trigger: true } 19 | - { get: img, resource: 'concourse_latest_dockerhub', trigger: true, passed: ['build-concourse_latest'], params: {skip_download: true} } 20 | - put: 'concourse-go_1_18_dockerhub' 21 | params: 22 | build: git/concourse-go/1.18 23 | tag_as_latest: true 24 | -------------------------------------------------------------------------------- /concourse-go/1.20/Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BASE_IMAGE=genesiscommunity/concourse:latest 2 | FROM --platform=linux/amd64 $BASE_IMAGE 3 | # https://github.com/genesiscommunity/dockerfiles/blob/master/concourse/Dockerfile 4 | # Dockerfile go build ref: 5 | # https://github.com/docker-library/golang/blob/5c6fa89055275c8f182ce96af9f5cde8399bdf76/1.20/bullseye/Dockerfile 6 | 7 | USER root 8 | 9 | ENV GOPATH /go 10 | ENV GOROOT /usr/local/go 11 | 12 | # Set environment variables. 13 | ENV PATH=${GOROOT}/bin:${GOPATH}/bin:$PATH 14 | 15 | RUN set -eux; apt-get update; apt-get install -y --no-install-recommends \ 16 | g++ \ 17 | gcc \ 18 | libc6-dev \ 19 | make \ 20 | pkg-config \ 21 | ; rm -rf /var/lib/apt/lists/* 22 | 23 | ENV PATH /usr/local/go/bin:$PATH 24 | 25 | RUN set -eux; \ 26 | arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; \ 27 | url=; \ 28 | case "$arch" in \ 29 | 'amd64') \ 30 | url='https://dl.google.com/go/go1.20.4.linux-amd64.tar.gz'; \ 31 | sha256='698ef3243972a51ddb4028e4a1ac63dc6d60821bf18e59a807e051fee0a385bd'; \ 32 | ;; \ 33 | 'armel') \ 34 | export GOARCH='arm' GOARM='5' GOOS='linux'; \ 35 | ;; \ 36 | 'armhf') \ 37 | url='https://dl.google.com/go/go1.20.4.linux-armv6l.tar.gz'; \ 38 | sha256='0b75ca23061a9996840111f5f19092a1bdbc42ec1ae25237ed2eec1c838bd819'; \ 39 | ;; \ 40 | 'arm64') \ 41 | url='https://dl.google.com/go/go1.20.4.linux-arm64.tar.gz'; \ 42 | sha256='105889992ee4b1d40c7c108555222ca70ae43fccb42e20fbf1eebb822f5e72c6'; \ 43 | ;; \ 44 | 'i386') \ 45 | url='https://dl.google.com/go/go1.20.4.linux-386.tar.gz'; \ 46 | sha256='5dfa3db9433ef6a2d3803169fb4bd2f4505414881516eb9972d76ab2e22335a7'; \ 47 | ;; \ 48 | 'mips64el') \ 49 | export GOARCH='mips64le' GOOS='linux'; \ 50 | ;; \ 51 | 'ppc64el') \ 52 | url='https://dl.google.com/go/go1.20.4.linux-ppc64le.tar.gz'; \ 53 | sha256='8c6f44b96c2719c90eebabe2dd866f9c39538648f7897a212cac448587e9a408'; \ 54 | ;; \ 55 | 's390x') \ 56 | url='https://dl.google.com/go/go1.20.4.linux-s390x.tar.gz'; \ 57 | sha256='57f999a4e605b1dfa4e7e58c7dbae47d370ea240879edba8001ab33c9a963ebf'; \ 58 | ;; \ 59 | *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ 60 | esac; \ 61 | build=; \ 62 | if [ -z "$url" ]; then \ 63 | # https://github.com/golang/go/issues/38536#issuecomment-616897960 \ 64 | build=1; \ 65 | url='https://dl.google.com/go/go1.20.4.src.tar.gz'; \ 66 | sha256='9f34ace128764b7a3a4b238b805856cc1b2184304df9e5690825b0710f4202d6'; \ 67 | echo >&2; \ 68 | echo >&2 "warning: current architecture ($arch) does not have a compatible Go binary release; will be building from source"; \ 69 | echo >&2; \ 70 | fi; \ 71 | \ 72 | wget -O go.tgz.asc "$url.asc"; \ 73 | wget -O go.tgz "$url" --progress=dot:giga; \ 74 | echo "$sha256 *go.tgz" | sha256sum -c -; \ 75 | \ 76 | # https://github.com/golang/go/issues/14739#issuecomment-324767697 \ 77 | GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \ 78 | # https://www.google.com/linuxrepositories/ \ 79 | wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | gpg --import - ; \ 80 | gpg --batch --verify go.tgz.asc go.tgz; \ 81 | gpgconf --kill all; \ 82 | rm -rf "$GNUPGHOME" go.tgz.asc; \ 83 | \ 84 | tar -C /usr/local -xzf go.tgz; \ 85 | rm go.tgz; \ 86 | \ 87 | if [ -n "$build" ]; then \ 88 | savedAptMark="$(apt-mark showmanual)"; \ 89 | # add backports for newer go version for bootstrap build: https://github.com/golang/go/issues/44505 \ 90 | ( \ 91 | . /etc/os-release; \ 92 | echo "deb https://deb.debian.org/debian $VERSION_CODENAME-backports main" > /etc/apt/sources.list.d/backports.list; \ 93 | \ 94 | apt-get update; \ 95 | apt-get install -y --no-install-recommends -t "$VERSION_CODENAME-backports" golang-go; \ 96 | ); \ 97 | \ 98 | export GOCACHE='/tmp/gocache'; \ 99 | \ 100 | ( \ 101 | cd /usr/local/go/src; \ 102 | # set GOROOT_BOOTSTRAP + GOHOST* such that we can build Go successfully \ 103 | export GOROOT_BOOTSTRAP="$(go env GOROOT)" GOHOSTOS="$GOOS" GOHOSTARCH="$GOARCH"; \ 104 | ./make.bash; \ 105 | ); \ 106 | \ 107 | apt-mark auto '.*' > /dev/null; \ 108 | apt-mark manual $savedAptMark > /dev/null; \ 109 | apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ 110 | rm -rf /var/lib/apt/lists/*; \ 111 | \ 112 | # remove a few intermediate / bootstrapping files the official binary release tarballs do not contain \ 113 | rm -rf \ 114 | /usr/local/go/pkg/*/cmd \ 115 | /usr/local/go/pkg/bootstrap \ 116 | /usr/local/go/pkg/obj \ 117 | /usr/local/go/pkg/tool/*/api \ 118 | /usr/local/go/pkg/tool/*/go_bootstrap \ 119 | /usr/local/go/src/cmd/dist/dist \ 120 | "$GOCACHE" \ 121 | ; \ 122 | fi; \ 123 | \ 124 | go version; \ 125 | \ 126 | mkdir -p "$GOPATH/src" "$GOPATH/bin"; \ 127 | chmod -R 1777 "$GOPATH"; \ 128 | chown -R worker $GOROOT $GOPATH 129 | 130 | WORKDIR $GOPATH 131 | 132 | # Frequently used go packages. 133 | RUN go install golang.org/x/tools/cmd/cover@latest \ 134 | && go install golang.org/x/lint/golint@latest \ 135 | && go install github.com/tools/godep@latest \ 136 | && go install github.com/laher/goxc@latest \ 137 | && go install github.com/onsi/ginkgo/ginkgo@latest \ 138 | && go install github.com/onsi/gomega/...@latest 139 | 140 | -------------------------------------------------------------------------------- /concourse-go/1.20/README.md: -------------------------------------------------------------------------------- 1 | genesiscommunity/concourse-go:1.15 2 | ============================== 3 | 4 | Task Image for running Concourse Pipelines - Now With Go 1.15! 5 | 6 | This Docker image contains a set of utilities commonly used in 7 | Concourse pipelines, pre-installed, along with Go 1.15. 8 | 9 | The `$GOPATH` and `$GOROOT` environment variables will already be 10 | set for you (to `/gopath` and `/goroot`, respectively). Likewise, 11 | `$PATH` is properly set up to include the binaries installed by 12 | `go get`. 13 | 14 | The following useful tools are installed by default: 15 | 16 | - [go cover][gocover] - Tool for generating test coverage reports 17 | - [go vet][govet] - Tool for vetting your source code for possible 18 | issues and non-idiomatic usage 19 | - [golint][golint] - A linter for Go source code 20 | - [godep][godep] - Dependency management utility for Go projects 21 | - [goxc][goxc] - Go cross-compiler 22 | - [ginko][ginko] - a Go testing framework 23 | - [gomega][gomega] - a matcher/assertion library 24 | 25 | 26 | 27 | 28 | [gocover]: https://godoc.org/golang.org/x/tools/cmd/cover 29 | [govet]: https://godoc.org/golang.org/x/tools/cmd/vet 30 | [golint]: https://github.com/golang/lint 31 | [godep]: https://github.com/tools/godep 32 | [goxc]: https://github.com/laher/goxc 33 | [ginko]: https://onsi.github.io/ginkgo 34 | [gomega]: https://onsi.github.io/gomega 35 | -------------------------------------------------------------------------------- /concourse-go/1.20/pipeline.yml: -------------------------------------------------------------------------------- 1 | --- 2 | resource_types: 3 | - name: static 4 | type: docker-image 5 | source: { repository: ktchen14/static-resource } 6 | 7 | resources: 8 | # Dockerfile source 9 | - name: 'concourse-go_1_20-dockerfile' 10 | .: (( inject meta.resources.dockerfiles )) 11 | source: 12 | paths: 13 | - concourse-go/1.20/Dockerfile 14 | 15 | # Triggers for new version of golang 1.20 16 | - name: golang-version 17 | .: (( inject meta.resources.dockerhub )) 18 | type: registry-image 19 | source: 20 | email: ((prune)) 21 | repository: golang 22 | tag: '1.20' 23 | 24 | # Extra tags 25 | - name: concourse-go-1.20-additional-tags 26 | type: static 27 | source: 28 | values: "1.20 1.20-ubuntu-jammy" 29 | 30 | # Build outputs 31 | - name: concourse-go_latest-image 32 | .: (( inject meta.resources.local-registry )) 33 | source: 34 | repository: (( concat meta.image-registry.account "/concourse-go" )) 35 | tag: latest 36 | 37 | - name: concourse-go_latest-dockerhub 38 | .: (( inject meta.resources.dockerhub )) 39 | source: 40 | repository: (( concat meta.dockerhub.account "/concourse-go" )) 41 | tag: latest 42 | 43 | 44 | jobs: 45 | - name: build-concourse-go_1_20 46 | public: true 47 | plan: 48 | - get: additional-tags 49 | resource: concourse-go-1.20-additional-tags 50 | 51 | - get: concourse-go_1_20-dockerfile 52 | trigger: true 53 | 54 | - get: golang-version 55 | trigger: true 56 | params: {skip_download: true} 57 | 58 | - get: concourse-image 59 | resource: concourse_ubuntu-jammy-image 60 | trigger: true 61 | passed: [ 'build-concourse_ubuntu-jammy' ] 62 | params: {skip_download: true} 63 | 64 | - put: 'concourse-go_latest-image' 65 | get_params: {save: true} 66 | params: 67 | build: 'concourse-go_1_20-dockerfile/concourse-go/1.20' 68 | additional_tags: additional-tags/values 69 | 70 | - put: concourse-go_latest-dockerhub 71 | params: 72 | load: concourse-go_latest-image 73 | additional_tags: additional-tags/values 74 | 75 | -------------------------------------------------------------------------------- /concourse-go/pipeline.yml: -------------------------------------------------------------------------------- 1 | --- 2 | groups: 3 | - name: concourse-go 4 | jobs: 5 | - (( append )) 6 | - 'bump-go-versions' 7 | 8 | resources: 9 | - name: 'go-buildpack' 10 | .: (( inject meta.resources.git )) 11 | source: 12 | uri: https://github.com/cloudfoundry/go-buildpack.git 13 | check_every: 1h 14 | 15 | - name: git 16 | .: (( inject meta.resources.dockerfiles )) 17 | 18 | jobs: 19 | - name: 'bump-go-versions' 20 | public: true 21 | plan: 22 | - { get: git } 23 | - { get: buildpack, resource: 'go-buildpack', trigger: true } 24 | - task: bump 25 | config: 26 | platform: linux 27 | image_resource: 28 | type: docker-image 29 | source: 30 | repository: starkandwayne/concourse 31 | tag: latest 32 | inputs: 33 | - name: git 34 | - name: buildpack 35 | outputs: 36 | - name: pushme 37 | run: 38 | path: git/ci/scripts/update-dockerfile-from-buildpack-git.sh 39 | params: 40 | buildpack: buildpack 41 | dependency: go 42 | dockerfile_dep_prefix: GOLANG 43 | git_email: (( grab meta.git.email )) 44 | git_name: (( grab meta.git.name )) 45 | - put: git 46 | params: 47 | rebase: true 48 | repository: pushme 49 | -------------------------------------------------------------------------------- /concourse-go/shield/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ruby:2.7-bullseye AS ruby 2 | 3 | FROM ubuntu:xenial 4 | 5 | ENV COLUMNS=80 6 | ENV VAULT_VERSION=1.9.3 7 | 8 | # COLUMNS var added to work around bosh cli needing a terminal size specified 9 | 10 | # base packages 11 | ENV DEBIAN_FRONTEND=noninteractive 12 | RUN apt-get update \ 13 | && apt-get install -y wget gnupg \ 14 | apt-transport-https ca-certificates \ 15 | libreadline-dev \ 16 | && apt-get update \ 17 | && wget -q -O - https://raw.githubusercontent.com/starkandwayne/homebrew-cf/master/public.key | apt-key add - \ 18 | && echo "deb http://apt.starkandwayne.com stable main" | tee /etc/apt/sources.list.d/starkandwayne.list \ 19 | && wget -q -O - https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - \ 20 | && echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/apt/sources.list.d/kubernetes.list \ 21 | && apt-get update && apt-get install -y \ 22 | autoconf \ 23 | bosh-cli \ 24 | build-essential \ 25 | bzip2 \ 26 | certstrap \ 27 | rubygems \ 28 | cf-cli \ 29 | cf6-cli \ 30 | concourse-fly \ 31 | credhub-cli \ 32 | curl \ 33 | genesis \ 34 | git \ 35 | gotcha \ 36 | hub \ 37 | file \ 38 | jq \ 39 | kubectl \ 40 | libc6 \ 41 | libsqlite3-dev \ 42 | libssl-dev \ 43 | libtool \ 44 | libxml2-dev \ 45 | libxslt-dev \ 46 | libyaml-dev \ 47 | lsof \ 48 | om \ 49 | openssl \ 50 | pivnet-cli \ 51 | safe \ 52 | sipcalc \ 53 | spruce \ 54 | sqlite3 \ 55 | vim-common \ 56 | wget \ 57 | unzip \ 58 | zlib1g-dev \ 59 | zlibc \ 60 | && rm -rf /var/lib/apt/lists/* 61 | 62 | 63 | RUN curl -Lo vault.zip https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip \ 64 | && unzip vault.zip \ 65 | && mv vault /usr/bin/vault \ 66 | && chmod 0755 /usr/bin/vault \ 67 | && rm vault.zip 68 | 69 | 70 | RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \ 71 | apt-get install git-lfs && \ 72 | git lfs install 73 | 74 | # Install Hugo 75 | RUN curl -L >hugo.tar.gz https://github.com/gohugoio/hugo/releases/download/v0.36/hugo_0.36_Linux-64bit.tar.gz \ 76 | && tar -xzvf hugo.tar.gz -C /usr/bin \ 77 | && rm hugo.tar.gz 78 | 79 | # Rubygems 80 | 81 | # Add a user for running things as non-superuser 82 | RUN useradd -ms /bin/bash worker 83 | 84 | 85 | 86 | 87 | 88 | USER root 89 | RUN apt-get update && apt-get install bzr gcc -y 90 | 91 | ENV GOLANG_VERSION 1.17.7 92 | ENV GOLANG_URL https://buildpacks.cloudfoundry.org/dependencies/go/go_1.17.7_linux_x64_cflinuxfs3_e8cf2ae0.tgz 93 | ENV GOLANG_SHA256 e8cf2ae04da5a64fd1e7d88e66c533802a9406303148904eb87d188314cf56fb 94 | 95 | RUN \ 96 | mkdir -p /goroot /gopath && \ 97 | curl $GOLANG_URL | \ 98 | tar xvzf - -C /goroot --strip-components=1 && \ 99 | chown -R worker /goroot /gopath 100 | 101 | ENV \ 102 | GOROOT=/goroot \ 103 | GOPATH=/gopath \ 104 | PATH=/goroot/bin:/gopath/bin:$PATH 105 | 106 | RUN go get golang.org/x/tools/cmd/cover \ 107 | && go get golang.org/x/lint/golint \ 108 | && go get github.com/tools/godep \ 109 | && go get github.com/laher/goxc \ 110 | && go get github.com/onsi/ginkgo/ginkgo \ 111 | && go get github.com/onsi/gomega/... 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | -------------------------------------------------------------------------------- /concourse-go/shield/README.md: -------------------------------------------------------------------------------- 1 | starkandwayne/concourse-go:shield 2 | ============================== 3 | 4 | Task Image for running Shield Concourse Pipelines - Now With Go 1.17! 5 | 6 | This Docker image contains a set of utilities commonly used in 7 | Concourse pipelines, pre-installed, along with Go 1.17. 8 | 9 | The `$GOPATH` and `$GOROOT` environment variables will already be 10 | set for you (to `/gopath` and `/goroot`, respectively). Likewise, 11 | `$PATH` is properly set up to include the binaries installed by 12 | `go get`. 13 | 14 | The following useful tools are installed by default: 15 | 16 | - [go cover][gocover] - Tool for generating test coverage reports 17 | - [go vet][govet] - Tool for vetting your source code for possible 18 | issues and non-idiomatic usage 19 | - [golint][golint] - A linter for Go source code 20 | - [godep][godep] - Dependency management utility for Go projects 21 | - [goxc][goxc] - Go cross-compiler 22 | - [ginko][ginko] - a Go testing framework 23 | - [gomega][gomega] - a matcher/assertion library 24 | 25 | 26 | 27 | 28 | [gocover]: https://godoc.org/golang.org/x/tools/cmd/cover 29 | [govet]: https://godoc.org/golang.org/x/tools/cmd/vet 30 | [golint]: https://github.com/golang/lint 31 | [godep]: https://github.com/tools/godep 32 | [goxc]: https://github.com/laher/goxc 33 | [ginko]: https://onsi.github.io/ginkgo 34 | [gomega]: https://onsi.github.io/gomega 35 | -------------------------------------------------------------------------------- /concourse-go/shield/pipeline.yml-disabled: -------------------------------------------------------------------------------- 1 | --- 2 | resources: 3 | - name: 'concourse-go_shield_github' 4 | .: (( inject meta.resources.dockerfiles )) 5 | source: 6 | paths: 7 | - concourse-go/shield/Dockerfile 8 | - name: 'concourse-go_shield_dockerhub' 9 | .: (( inject meta.resources.dockerhub )) 10 | source: 11 | repository: (( concat meta.dockerhub.account "/concourse-go" )) 12 | tag: "shield" 13 | 14 | jobs: 15 | - name: 'build-concourse-go_shield' 16 | public: true 17 | plan: 18 | - { get: git, resource: 'concourse-go_shield_github', trigger: true } 19 | - { get: img, resource: 'concourse_latest_dockerhub', trigger: true, passed: ['build-concourse_latest'], params: {skip_download: true} } 20 | - put: 'concourse-go_shield_dockerhub' 21 | params: 22 | build: git/concourse-go/shield 23 | tag_as_latest: true 24 | 25 | -------------------------------------------------------------------------------- /concourse-java/11/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM starkandwayne/concourse 2 | 3 | # https://github.com/cloudfoundry/java-buildpack does not have a manifest.yml 4 | # so just bumping the java-buildpack version so as to trigger update of docker image 5 | ENV JAVA_BUILDPACK 4.53 6 | 7 | # base packages 8 | RUN apt-get update && \ 9 | apt-get install -yy curl file openjdk-11-jdk maven && \ 10 | java -version 11 | 12 | RUN /var/lib/dpkg/info/ca-certificates-java.postinst configure 13 | -------------------------------------------------------------------------------- /concourse-java/11/pipeline.yml: -------------------------------------------------------------------------------- 1 | --- 2 | resources: 3 | - name: 'concourse-java_11_github' 4 | .: (( inject meta.resources.dockerfiles )) 5 | source: 6 | paths: 7 | - concourse-java/11/Dockerfile 8 | - name: 'concourse-java_11_dockerhub' 9 | .: (( inject meta.resources.dockerhub )) 10 | source: 11 | repository: (( concat meta.dockerhub.account "/concourse-java" )) 12 | tag: "11" 13 | 14 | jobs: 15 | - name: 'build-concourse-java_11' 16 | public: true 17 | plan: 18 | - { get: git, resource: 'concourse-java_11_github', trigger: true } 19 | - { get: img, resource: 'concourse_latest_dockerhub', trigger: true, passed: ['build-concourse_latest'], params: {skip_download: true} } 20 | - put: 'concourse-java_11_dockerhub' 21 | params: 22 | build: git/concourse-java/11 23 | tag_as_latest: true 24 | -------------------------------------------------------------------------------- /concourse-java/8/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM starkandwayne/concourse 2 | 3 | # https://github.com/cloudfoundry/java-buildpack does not have a manifest.yml 4 | # so just bumping the java-buildpack version so as to trigger update of docker image 5 | ENV JAVA_BUILDPACK 4.53 6 | 7 | # base packages 8 | RUN apt-get update && \ 9 | apt-get install -yy curl file openjdk-8-jdk maven && \ 10 | apt-get remove -yy openjdk-11-jre-headless && \ 11 | java -version 12 | 13 | RUN /var/lib/dpkg/info/ca-certificates-java.postinst configure 14 | -------------------------------------------------------------------------------- /concourse-java/8/pipeline.yml: -------------------------------------------------------------------------------- 1 | --- 2 | resources: 3 | - name: 'concourse-java_8_github' 4 | .: (( inject meta.resources.dockerfiles )) 5 | source: 6 | paths: 7 | - concourse-java/8/Dockerfile 8 | - name: 'concourse-java_8_dockerhub' 9 | .: (( inject meta.resources.dockerhub )) 10 | source: 11 | repository: (( concat meta.dockerhub.account "/concourse-java" )) 12 | tag: "8" 13 | 14 | jobs: 15 | - name: 'build-concourse-java_8' 16 | public: true 17 | plan: 18 | - { get: git, resource: 'concourse-java_8_github', trigger: true } 19 | - { get: img, resource: 'concourse_latest_dockerhub', trigger: true, passed: ['build-concourse_latest'], params: {skip_download: true} } 20 | - put: 'concourse-java_8_dockerhub' 21 | params: 22 | build: git/concourse-java/8 23 | tag_as_latest: true 24 | -------------------------------------------------------------------------------- /concourse-java/pipeline.yml: -------------------------------------------------------------------------------- 1 | --- 2 | groups: 3 | - name: concourse-java 4 | jobs: 5 | - (( append )) 6 | - 'bump-java-versions' 7 | 8 | resources: 9 | - name: 'java-buildpack' 10 | .: (( inject meta.resources.github-release )) 11 | source: 12 | owner: cloudfoundry 13 | repository: java-buildpack 14 | check_every: 1h 15 | 16 | - name: git 17 | .: (( inject meta.resources.dockerfiles )) 18 | 19 | jobs: 20 | - name: 'bump-java-versions' 21 | public: true 22 | plan: 23 | - { get: git } 24 | - { get: buildpack, resource: 'java-buildpack', trigger: true } 25 | - task: bump 26 | config: 27 | platform: linux 28 | image_resource: 29 | type: docker-image 30 | source: 31 | repository: starkandwayne/concourse 32 | tag: latest 33 | inputs: 34 | - name: git 35 | - name: buildpack 36 | outputs: 37 | - name: pushme 38 | params: 39 | name: java 40 | dep_prefix: JAVA 41 | git_email: (( grab meta.git.email )) 42 | git_name: (( grab meta.git.name )) 43 | run: 44 | path: bash 45 | args: 46 | - -ce 47 | - | 48 | if [[ -z $(git config --global user.email) ]]; then 49 | git config --global user.email "${git_email}" 50 | fi 51 | if [[ -z $(git config --global user.name) ]]; then 52 | git config --global user.name "${git_name}" 53 | fi 54 | 55 | buildpack_version=$(cat buildpack/version) 56 | 57 | git clone ./git pushme 58 | cd pushme 59 | 60 | for dockerfile in $(ls -d concourse-$name/*/Dockerfile); do 61 | for version_prefix in $(basename $(dirname $dockerfile)); do 62 | sed -i "s%^ENV ${dep_prefix}_BUILDPACK.*$%ENV ${dep_prefix}_BUILDPACK $buildpack_version%" $dockerfile 63 | done 64 | done 65 | if [[ "$(git status -s)X" != "X" ]]; then 66 | echo "Detected new $name buildpack v$buildpack_version" 67 | git merge --no-edit master 68 | git status 69 | git --no-pager diff 70 | git add . 71 | git commit -m "Bumping $name due to $name buildpack v$buildpack_version" 72 | fi 73 | 74 | - put: git 75 | params: 76 | rebase: true 77 | repository: pushme 78 | -------------------------------------------------------------------------------- /concourse-kubernetes/latest/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu 2 | 3 | ENV COLUMNS=80 4 | 5 | # COLUMNS var added to work around bosh cli needing a terminal size specified 6 | 7 | # base packages 8 | RUN apt-get update \ 9 | && export CLOUD_SDK_REPO=cloud-sdk-$(cat /etc/lsb-release | grep DISTRIB_CODENAME | awk -F "=" '{print $2}') \ 10 | && apt-get install -yy wget gnupg \ 11 | && wget -q -O - https://raw.githubusercontent.com/starkandwayne/homebrew-cf/master/public.key | apt-key add - \ 12 | && echo "deb http://apt.starkandwayne.com stable main" | tee /etc/apt/sources.list.d/starkandwayne.list \ 13 | && wget -q -O - https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - \ 14 | && echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/apt/sources.list.d/kubernetes.list \ 15 | && echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list \ 16 | && apt-get update && apt-get install -yy \ 17 | bosh-cli \ 18 | curl \ 19 | git \ 20 | google-cloud-sdk \ 21 | file \ 22 | jq \ 23 | kubectl \ 24 | unzip \ 25 | && rm -rf /var/lib/apt/lists/* \ 26 | && HELM_VERSION=$(curl -s https://api.github.com/repos/helm/helm/releases/latest | jq -r ".tag_name") \ 27 | && curl -LO https://storage.googleapis.com/kubernetes-helm/helm-${HELM_VERSION}-linux-amd64.tar.gz \ 28 | && tar xfz helm-*.tar.gz \ 29 | && mv linux-amd64/helm /usr/local/bin \ 30 | && rm -f tar xfz helm-*.tar.gz \ 31 | && helm version --client \ 32 | && helm init --client-only 33 | 34 | # Add a user for running things as non-superuser 35 | RUN useradd -ms /bin/bash worker 36 | -------------------------------------------------------------------------------- /concourse-kubernetes/latest/README.md: -------------------------------------------------------------------------------- 1 | starkandwayne/concourse 2 | ======================= 3 | 4 | Task Image for running Concourse Pipelines 5 | 6 | This Docker image contains a set of utilities commonly used in 7 | Concourse pipelines, pre-installed. 8 | 9 | - [spruce][spruce] - A YAML template merging utility, useful for 10 | generating BOSH deployment manifests as part of an automated 11 | deployment pipeline (or standing up infrastructure to run 12 | integration tests) 13 | - [jq][jq] - A handy tool for extracting data from JSON blobs 14 | - curl - The command-line URL utility we just can't live without 15 | - [cf][cf] - The Cloud Foundry command-line client, for 16 | interfacing with CF deployments from inside of pipelines (to 17 | push apps, for example) 18 | 19 | 20 | 21 | 22 | [spruce]: https://github.com/geofffranks/spruce 23 | [jq]: https://stedolan.github.io/jq/ 24 | [cf]: https://cloudfoundry.org 25 | -------------------------------------------------------------------------------- /concourse-kubernetes/latest/pipeline.yml: -------------------------------------------------------------------------------- 1 | --- 2 | resources: 3 | - name: 'concourse-kubernetes_latest_github' 4 | .: (( inject meta.resources.dockerfiles )) 5 | source: 6 | paths: 7 | - concourse-kubernetes/latest/Dockerfile 8 | - concourse-kubernetes/latest/scripts/* 9 | 10 | - name: 'concourse-kubernetes_latest_dockerhub' 11 | .: (( inject meta.resources.dockerhub )) 12 | source: 13 | repository: (( concat meta.dockerhub.account "/concourse-kubernetes" )) 14 | tag: latest 15 | 16 | jobs: 17 | - name: 'build-concourse-kubernetes_latest' 18 | public: true 19 | plan: 20 | - get: git 21 | resource: 'concourse-kubernetes_latest_github' 22 | trigger: true 23 | - put: 'concourse-kubernetes_latest_dockerhub' 24 | params: 25 | build: git/concourse-kubernetes/latest 26 | -------------------------------------------------------------------------------- /concourse-nodejs/10/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM starkandwayne/concourse 2 | 3 | ENV NODE_VERSION 10.24.1 4 | 5 | RUN set -ex \ 6 | \ 7 | apt-get install -y apt-transport-https && \ 8 | curl -sL https://deb.nodesource.com/setup_10.x | bash - && \ 9 | curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ 10 | echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ 11 | apt-get update && \ 12 | apt-get install -y nodejs yarn && \ 13 | rm -rf /var/lib/apt/lists/* 14 | -------------------------------------------------------------------------------- /concourse-nodejs/10/pipeline.yml: -------------------------------------------------------------------------------- 1 | --- 2 | resources: 3 | - name: 'concourse-nodejs_10_github' 4 | .: (( inject meta.resources.dockerfiles )) 5 | source: 6 | paths: 7 | - concourse-nodejs/10/Dockerfile 8 | - name: 'concourse-nodejs_10_dockerhub' 9 | .: (( inject meta.resources.dockerhub )) 10 | source: 11 | repository: (( concat meta.dockerhub.account "/concourse-nodejs" )) 12 | tag: "10" 13 | 14 | jobs: 15 | - name: 'build-concourse-nodejs_10' 16 | public: true 17 | plan: 18 | - { get: git, resource: 'concourse-nodejs_10_github', trigger: true } 19 | - { get: img, resource: 'concourse_latest_dockerhub', trigger: true, passed: ['build-concourse_latest'], params: {skip_download: true} } 20 | - put: 'concourse-nodejs_10_dockerhub' 21 | params: 22 | build: git/concourse-nodejs/10 23 | tag_as_latest: true 24 | -------------------------------------------------------------------------------- /concourse-nodejs/12/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM starkandwayne/concourse 2 | 3 | ENV NODE_VERSION 12.22.12 4 | 5 | RUN set -ex \ 6 | \ 7 | apt-get install -y apt-transport-https && \ 8 | curl -sL https://deb.nodesource.com/setup_12.x | bash - && \ 9 | curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ 10 | echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ 11 | apt-get update && \ 12 | apt-get install -y nodejs yarn && \ 13 | rm -rf /var/lib/apt/lists/* 14 | -------------------------------------------------------------------------------- /concourse-nodejs/12/pipeline.yml: -------------------------------------------------------------------------------- 1 | --- 2 | resources: 3 | - name: 'concourse-nodejs_12_github' 4 | .: (( inject meta.resources.dockerfiles )) 5 | source: 6 | paths: 7 | - concourse-nodejs/12/Dockerfile 8 | - name: 'concourse-nodejs_12_dockerhub' 9 | .: (( inject meta.resources.dockerhub )) 10 | source: 11 | repository: (( concat meta.dockerhub.account "/concourse-nodejs" )) 12 | tag: "12" 13 | 14 | jobs: 15 | - name: 'build-concourse-nodejs_12' 16 | public: true 17 | plan: 18 | - { get: git, resource: 'concourse-nodejs_12_github', trigger: true } 19 | - { get: img, resource: 'concourse_latest_dockerhub', trigger: true, passed: ['build-concourse_latest'], params: {skip_download: true} } 20 | - put: 'concourse-nodejs_12_dockerhub' 21 | params: 22 | build: git/concourse-nodejs/12 23 | tag_as_latest: true 24 | -------------------------------------------------------------------------------- /concourse-nodejs/14/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM starkandwayne/concourse 2 | 3 | ENV NODE_VERSION 14.21.1 4 | 5 | RUN set -ex \ 6 | \ 7 | apt-get install -y apt-transport-https && \ 8 | curl -sL https://deb.nodesource.com/setup_14.x | bash - && \ 9 | curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ 10 | echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ 11 | apt-get update && \ 12 | apt-get install -y nodejs yarn && \ 13 | rm -rf /var/lib/apt/lists/* 14 | -------------------------------------------------------------------------------- /concourse-nodejs/14/pipeline.yml: -------------------------------------------------------------------------------- 1 | --- 2 | resources: 3 | - name: 'concourse-nodejs_14_github' 4 | .: (( inject meta.resources.dockerfiles )) 5 | source: 6 | paths: 7 | - concourse-nodejs/14/Dockerfile 8 | - name: 'concourse-nodejs_14_dockerhub' 9 | .: (( inject meta.resources.dockerhub )) 10 | source: 11 | repository: (( concat meta.dockerhub.account "/concourse-nodejs" )) 12 | tag: "14" 13 | 14 | jobs: 15 | - name: 'build-concourse-nodejs_14' 16 | public: true 17 | plan: 18 | - { get: git, resource: 'concourse-nodejs_14_github', trigger: true } 19 | - { get: img, resource: 'concourse_latest_dockerhub', trigger: true, passed: ['build-concourse_latest'], params: {skip_download: true} } 20 | - put: 'concourse-nodejs_14_dockerhub' 21 | params: 22 | build: git/concourse-nodejs/14 23 | tag_as_latest: true 24 | -------------------------------------------------------------------------------- /concourse-nodejs/pipeline.yml: -------------------------------------------------------------------------------- 1 | --- 2 | groups: 3 | - name: concourse-nodejs 4 | jobs: 5 | - (( append )) 6 | - 'bump-nodejs-versions' 7 | 8 | resources: 9 | - name: 'nodejs-buildpack' 10 | .: (( inject meta.resources.git )) 11 | source: 12 | uri: https://github.com/cloudfoundry/nodejs-buildpack.git 13 | check_every: 1h 14 | 15 | 16 | - name: git 17 | .: (( inject meta.resources.dockerfiles )) 18 | 19 | jobs: 20 | - name: 'bump-nodejs-versions' 21 | public: true 22 | plan: 23 | - { get: git } 24 | - { get: buildpack, resource: 'nodejs-buildpack', trigger: true } 25 | - task: bump 26 | config: 27 | platform: linux 28 | image_resource: 29 | type: docker-image 30 | source: 31 | repository: starkandwayne/concourse 32 | tag: latest 33 | inputs: 34 | - name: git 35 | - name: buildpack 36 | outputs: 37 | - name: pushme 38 | run: 39 | path: git/ci/scripts/update-dockerfile-from-buildpack-git.sh 40 | params: 41 | buildpack: buildpack 42 | dependency: node 43 | dockerfile_name: nodejs 44 | dockerfile_dep_prefix: NODE 45 | git_email: (( grab meta.git.email )) 46 | git_name: (( grab meta.git.name )) 47 | - put: git 48 | params: 49 | rebase: true 50 | repository: pushme 51 | -------------------------------------------------------------------------------- /concourse-ruby/2.6/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM starkandwayne/concourse 2 | 3 | # From https://github.com/docker-library/ruby/blob/master/2.5/stretch/Dockerfile 4 | RUN mkdir -p /usr/local/etc \ 5 | && { \ 6 | echo 'install: --no-document'; \ 7 | echo 'update: --no-document'; \ 8 | } >> /usr/local/etc/gemrc 9 | 10 | # https://www.ruby-lang.org/en/downloads/ 11 | ENV RUBY_MAJOR 2.6 12 | ENV RUBY_VERSION 2.6.9 13 | 14 | # some of ruby's build scripts are written in ruby 15 | # we purge system ruby later to make sure our final image uses what we just built 16 | RUN set -ex \ 17 | \ 18 | && buildDeps=' \ 19 | bison \ 20 | dpkg-dev \ 21 | libgdbm-dev \ 22 | ruby \ 23 | autoconf \ 24 | git-core curl zlib1g-dev build-essential \ 25 | libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 \ 26 | libxml2-dev libxslt1-dev libcurl4-openssl-dev \ 27 | libffi-dev nodejs \ 28 | ' \ 29 | && apt-get update \ 30 | && apt-get install -y --no-install-recommends $buildDeps \ 31 | && rm -rf /var/lib/apt/lists/* \ 32 | \ 33 | && wget -O ruby.tar.gz "https://cache.ruby-lang.org/pub/ruby/${RUBY_MAJOR%-rc}/ruby-$RUBY_VERSION.tar.gz" \ 34 | \ 35 | && mkdir -p /usr/src/ruby \ 36 | && tar -xzf ruby.tar.gz -C /usr/src/ruby --strip-components=1 \ 37 | && rm ruby.tar.gz \ 38 | \ 39 | && cd /usr/src/ruby \ 40 | \ 41 | # hack in "ENABLE_PATH_CHECK" disabling to suppress: 42 | # warning: Insecure world writable dir 43 | && { \ 44 | echo '#define ENABLE_PATH_CHECK 0'; \ 45 | echo; \ 46 | cat file.c; \ 47 | } > file.c.new \ 48 | && mv file.c.new file.c \ 49 | \ 50 | && autoconf \ 51 | && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ 52 | && ./configure \ 53 | --build="$gnuArch" \ 54 | --disable-install-doc \ 55 | --enable-shared \ 56 | && make -j "$(nproc)" \ 57 | && make install \ 58 | \ 59 | && cd / \ 60 | && rm -r /usr/src/ruby \ 61 | \ 62 | && gem update --system \ 63 | && gem install bundler --force 64 | 65 | # install things globally, for great justice 66 | # and don't create ".bundle" in all our apps 67 | ENV GEM_HOME /usr/local/bundle 68 | ENV BUNDLE_PATH="$GEM_HOME" \ 69 | BUNDLE_BIN="$GEM_HOME/bin" \ 70 | BUNDLE_SILENCE_ROOT_WARNING=1 \ 71 | BUNDLE_APP_CONFIG="$GEM_HOME" 72 | ENV PATH $BUNDLE_BIN:$PATH 73 | RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \ 74 | && chmod 777 "$GEM_HOME" "$BUNDLE_BIN" 75 | -------------------------------------------------------------------------------- /concourse-ruby/2.6/pipeline.yml: -------------------------------------------------------------------------------- 1 | --- 2 | resources: 3 | - name: 'concourse-ruby_2_6_github' 4 | .: (( inject meta.resources.dockerfiles )) 5 | source: 6 | paths: 7 | - concourse-ruby/2.6/Dockerfile 8 | - name: 'concourse-ruby_2_6_dockerhub' 9 | .: (( inject meta.resources.dockerhub )) 10 | source: 11 | repository: (( concat meta.dockerhub.account "/concourse-ruby" )) 12 | tag: "2.6" 13 | 14 | jobs: 15 | - name: 'build-concourse-ruby_2_6' 16 | public: true 17 | plan: 18 | - { get: git, resource: 'concourse-ruby_2_6_github', trigger: true } 19 | - { get: img, resource: 'concourse_latest_dockerhub', trigger: true, passed: ['build-concourse_latest'], params: {skip_download: true} } 20 | - put: 'concourse-ruby_2_6_dockerhub' 21 | params: 22 | build: git/concourse-ruby/2.6 23 | tag_as_latest: true 24 | -------------------------------------------------------------------------------- /concourse-ruby/2.7/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM starkandwayne/concourse 2 | 3 | # From https://github.com/docker-library/ruby/blob/master/2.5/stretch/Dockerfile 4 | RUN mkdir -p /usr/local/etc \ 5 | && { \ 6 | echo 'install: --no-document'; \ 7 | echo 'update: --no-document'; \ 8 | } >> /usr/local/etc/gemrc 9 | 10 | # https://www.ruby-lang.org/en/downloads/ 11 | ENV RUBY_MAJOR 2.7 12 | ENV RUBY_VERSION 2.7.7 13 | 14 | # some of ruby's build scripts are written in ruby 15 | # we purge system ruby later to make sure our final image uses what we just built 16 | RUN set -ex \ 17 | \ 18 | && buildDeps=' \ 19 | bison \ 20 | dpkg-dev \ 21 | libgdbm-dev \ 22 | ruby \ 23 | autoconf \ 24 | git-core curl zlib1g-dev build-essential \ 25 | libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 \ 26 | libxml2-dev libxslt1-dev libcurl4-openssl-dev \ 27 | libffi-dev nodejs \ 28 | ' \ 29 | && apt-get update \ 30 | && apt-get install -y --no-install-recommends $buildDeps \ 31 | && rm -rf /var/lib/apt/lists/* \ 32 | \ 33 | && wget -O ruby.tar.gz "https://cache.ruby-lang.org/pub/ruby/${RUBY_MAJOR%-rc}/ruby-$RUBY_VERSION.tar.gz" \ 34 | \ 35 | && mkdir -p /usr/src/ruby \ 36 | && tar -xzf ruby.tar.gz -C /usr/src/ruby --strip-components=1 \ 37 | && rm ruby.tar.gz \ 38 | \ 39 | && cd /usr/src/ruby \ 40 | \ 41 | # hack in "ENABLE_PATH_CHECK" disabling to suppress: 42 | # warning: Insecure world writable dir 43 | && { \ 44 | echo '#define ENABLE_PATH_CHECK 0'; \ 45 | echo; \ 46 | cat file.c; \ 47 | } > file.c.new \ 48 | && mv file.c.new file.c \ 49 | \ 50 | && autoconf \ 51 | && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ 52 | && ./configure \ 53 | --build="$gnuArch" \ 54 | --disable-install-doc \ 55 | --enable-shared \ 56 | && make -j "$(nproc)" \ 57 | && make install \ 58 | \ 59 | && cd / \ 60 | && rm -r /usr/src/ruby \ 61 | \ 62 | && gem update --system \ 63 | && gem install bundler --force 64 | 65 | # install things globally, for great justice 66 | # and don't create ".bundle" in all our apps 67 | ENV GEM_HOME /usr/local/bundle 68 | ENV BUNDLE_PATH="$GEM_HOME" \ 69 | BUNDLE_BIN="$GEM_HOME/bin" \ 70 | BUNDLE_SILENCE_ROOT_WARNING=1 \ 71 | BUNDLE_APP_CONFIG="$GEM_HOME" 72 | ENV PATH $BUNDLE_BIN:$PATH 73 | RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \ 74 | && chmod 777 "$GEM_HOME" "$BUNDLE_BIN" 75 | -------------------------------------------------------------------------------- /concourse-ruby/2.7/pipeline.yml: -------------------------------------------------------------------------------- 1 | --- 2 | resources: 3 | - name: 'concourse-ruby_2_7_github' 4 | .: (( inject meta.resources.dockerfiles )) 5 | source: 6 | paths: 7 | - concourse-ruby/2.7/Dockerfile 8 | - name: 'concourse-ruby_2_7_dockerhub' 9 | .: (( inject meta.resources.dockerhub )) 10 | source: 11 | repository: (( concat meta.dockerhub.account "/concourse-ruby" )) 12 | tag: "2.7" 13 | 14 | jobs: 15 | - name: 'build-concourse-ruby_2_7' 16 | public: true 17 | plan: 18 | - { get: git, resource: 'concourse-ruby_2_7_github', trigger: true } 19 | - { get: img, resource: 'concourse_latest_dockerhub', trigger: true, passed: ['build-concourse_latest'], params: {skip_download: true} } 20 | - put: 'concourse-ruby_2_7_dockerhub' 21 | params: 22 | build: git/concourse-ruby/2.7 23 | tag_as_latest: true 24 | -------------------------------------------------------------------------------- /concourse-ruby/3.0/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM starkandwayne/concourse 2 | 3 | # From https://github.com/docker-library/ruby/blob/master/2.5/stretch/Dockerfile 4 | RUN mkdir -p /usr/local/etc \ 5 | && { \ 6 | echo 'install: --no-document'; \ 7 | echo 'update: --no-document'; \ 8 | } >> /usr/local/etc/gemrc 9 | 10 | # https://www.ruby-lang.org/en/downloads/ 11 | ENV RUBY_MAJOR 3.0 12 | ENV RUBY_VERSION 3.0.5 13 | 14 | # some of ruby's build scripts are written in ruby 15 | # we purge system ruby later to make sure our final image uses what we just built 16 | RUN set -ex \ 17 | \ 18 | && buildDeps=' \ 19 | bison \ 20 | dpkg-dev \ 21 | libgdbm-dev \ 22 | ruby \ 23 | autoconf \ 24 | git-core curl zlib1g-dev build-essential \ 25 | libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 \ 26 | libxml2-dev libxslt1-dev libcurl4-openssl-dev \ 27 | libffi-dev nodejs \ 28 | ' \ 29 | && apt-get update \ 30 | && apt-get install -y --no-install-recommends $buildDeps \ 31 | && rm -rf /var/lib/apt/lists/* \ 32 | \ 33 | && wget -O ruby.tar.gz "https://cache.ruby-lang.org/pub/ruby/${RUBY_MAJOR%-rc}/ruby-$RUBY_VERSION.tar.gz" \ 34 | \ 35 | && mkdir -p /usr/src/ruby \ 36 | && tar -xzf ruby.tar.gz -C /usr/src/ruby --strip-components=1 \ 37 | && rm ruby.tar.gz \ 38 | \ 39 | && cd /usr/src/ruby \ 40 | \ 41 | # hack in "ENABLE_PATH_CHECK" disabling to suppress: 42 | # warning: Insecure world writable dir 43 | && { \ 44 | echo '#define ENABLE_PATH_CHECK 0'; \ 45 | echo; \ 46 | cat file.c; \ 47 | } > file.c.new \ 48 | && mv file.c.new file.c \ 49 | \ 50 | && autoconf \ 51 | && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ 52 | && ./configure \ 53 | --build="$gnuArch" \ 54 | --disable-install-doc \ 55 | --enable-shared \ 56 | && make -j "$(nproc)" \ 57 | && make install \ 58 | \ 59 | && cd / \ 60 | && rm -r /usr/src/ruby \ 61 | \ 62 | && gem update --system \ 63 | && gem install bundler --force 64 | 65 | # install things globally, for great justice 66 | # and don't create ".bundle" in all our apps 67 | ENV GEM_HOME /usr/local/bundle 68 | ENV BUNDLE_PATH="$GEM_HOME" \ 69 | BUNDLE_BIN="$GEM_HOME/bin" \ 70 | BUNDLE_SILENCE_ROOT_WARNING=1 \ 71 | BUNDLE_APP_CONFIG="$GEM_HOME" 72 | ENV PATH $BUNDLE_BIN:$PATH 73 | RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \ 74 | && chmod 777 "$GEM_HOME" "$BUNDLE_BIN" 75 | -------------------------------------------------------------------------------- /concourse-ruby/3.0/pipeline.yml: -------------------------------------------------------------------------------- 1 | --- 2 | resources: 3 | - name: 'concourse-ruby_3_0_github' 4 | .: (( inject meta.resources.dockerfiles )) 5 | source: 6 | paths: 7 | - concourse-ruby/3.0/Dockerfile 8 | - name: 'concourse-ruby_3_0_dockerhub' 9 | .: (( inject meta.resources.dockerhub )) 10 | source: 11 | repository: (( concat meta.dockerhub.account "/concourse-ruby" )) 12 | tag: "3.0" 13 | 14 | jobs: 15 | - name: 'build-concourse-ruby_3_0' 16 | public: true 17 | plan: 18 | - { get: git, resource: 'concourse-ruby_3_0_github', trigger: true } 19 | - { get: img, resource: 'concourse_latest_dockerhub', trigger: true, passed: ['build-concourse_latest'], params: {skip_download: true} } 20 | - put: 'concourse-ruby_3_0_dockerhub' 21 | params: 22 | build: git/concourse-ruby/3.0 23 | tag_as_latest: true 24 | -------------------------------------------------------------------------------- /concourse-ruby/3.1/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM starkandwayne/concourse 2 | 3 | # From https://github.com/docker-library/ruby/blob/master/2.5/stretch/Dockerfile 4 | RUN mkdir -p /usr/local/etc \ 5 | && { \ 6 | echo 'install: --no-document'; \ 7 | echo 'update: --no-document'; \ 8 | } >> /usr/local/etc/gemrc 9 | 10 | # https://www.ruby-lang.org/en/downloads/ 11 | ENV RUBY_MAJOR 3.1 12 | ENV RUBY_VERSION 3.1.3 13 | 14 | # some of ruby's build scripts are written in ruby 15 | # we purge system ruby later to make sure our final image uses what we just built 16 | RUN set -ex \ 17 | \ 18 | && buildDeps=' \ 19 | bison \ 20 | dpkg-dev \ 21 | libgdbm-dev \ 22 | ruby \ 23 | autoconf \ 24 | git-core curl zlib1g-dev build-essential \ 25 | libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 \ 26 | libxml2-dev libxslt1-dev libcurl4-openssl-dev \ 27 | libffi-dev nodejs \ 28 | ' \ 29 | && apt-get update \ 30 | && apt-get install -y --no-install-recommends $buildDeps \ 31 | && rm -rf /var/lib/apt/lists/* \ 32 | \ 33 | && wget -O ruby.tar.gz "https://cache.ruby-lang.org/pub/ruby/${RUBY_MAJOR%-rc}/ruby-$RUBY_VERSION.tar.gz" \ 34 | \ 35 | && mkdir -p /usr/src/ruby \ 36 | && tar -xzf ruby.tar.gz -C /usr/src/ruby --strip-components=1 \ 37 | && rm ruby.tar.gz \ 38 | \ 39 | && cd /usr/src/ruby \ 40 | \ 41 | # hack in "ENABLE_PATH_CHECK" disabling to suppress: 42 | # warning: Insecure world writable dir 43 | && { \ 44 | echo '#define ENABLE_PATH_CHECK 0'; \ 45 | echo; \ 46 | cat file.c; \ 47 | } > file.c.new \ 48 | && mv file.c.new file.c \ 49 | \ 50 | && autoconf \ 51 | && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ 52 | && ./configure \ 53 | --build="$gnuArch" \ 54 | --disable-install-doc \ 55 | --enable-shared \ 56 | && make -j "$(nproc)" \ 57 | && make install \ 58 | \ 59 | && cd / \ 60 | && rm -r /usr/src/ruby \ 61 | \ 62 | && gem update --system \ 63 | && gem install bundler --force 64 | 65 | # install things globally, for great justice 66 | # and don't create ".bundle" in all our apps 67 | ENV GEM_HOME /usr/local/bundle 68 | ENV BUNDLE_PATH="$GEM_HOME" \ 69 | BUNDLE_BIN="$GEM_HOME/bin" \ 70 | BUNDLE_SILENCE_ROOT_WARNING=1 \ 71 | BUNDLE_APP_CONFIG="$GEM_HOME" 72 | ENV PATH $BUNDLE_BIN:$PATH 73 | RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \ 74 | && chmod 777 "$GEM_HOME" "$BUNDLE_BIN" 75 | -------------------------------------------------------------------------------- /concourse-ruby/3.1/pipeline.yml: -------------------------------------------------------------------------------- 1 | --- 2 | resources: 3 | - name: 'concourse-ruby_3_1_github' 4 | .: (( inject meta.resources.dockerfiles )) 5 | source: 6 | paths: 7 | - concourse-ruby/3.1/Dockerfile 8 | - name: 'concourse-ruby_3_1_dockerhub' 9 | .: (( inject meta.resources.dockerhub )) 10 | source: 11 | repository: (( concat meta.dockerhub.account "/concourse-ruby" )) 12 | tag: "3.1" 13 | 14 | jobs: 15 | - name: 'build-concourse-ruby_3_1' 16 | public: true 17 | plan: 18 | - { get: git, resource: 'concourse-ruby_3_1_github', trigger: true } 19 | - { get: img, resource: 'concourse_latest_dockerhub', trigger: true, passed: ['build-concourse_latest'], params: {skip_download: true} } 20 | - put: 'concourse-ruby_3_1_dockerhub' 21 | params: 22 | build: git/concourse-ruby/3.1 23 | tag_as_latest: true 24 | -------------------------------------------------------------------------------- /concourse-ruby/pipeline.yml: -------------------------------------------------------------------------------- 1 | --- 2 | groups: 3 | - name: concourse-ruby 4 | jobs: 5 | - (( append )) 6 | - 'bump-ruby-versions' 7 | 8 | resources: 9 | - name: 'ruby-buildpack' 10 | .: (( inject meta.resources.git )) 11 | source: 12 | uri: https://github.com/cloudfoundry/ruby-buildpack.git 13 | check_every: 1h 14 | 15 | - name: git 16 | .: (( inject meta.resources.dockerfiles )) 17 | 18 | jobs: 19 | - name: 'bump-ruby-versions' 20 | public: true 21 | plan: 22 | - { get: git } 23 | - { get: buildpack, resource: 'ruby-buildpack', trigger: true } 24 | - task: bump 25 | config: 26 | platform: linux 27 | image_resource: 28 | type: docker-image 29 | source: 30 | repository: starkandwayne/concourse 31 | tag: latest 32 | inputs: 33 | - name: git 34 | - name: buildpack 35 | outputs: 36 | - name: pushme 37 | run: 38 | path: git/ci/scripts/update-dockerfile-from-buildpack-git.sh 39 | params: 40 | buildpack: buildpack 41 | dependency: ruby 42 | dockerfile_dep_prefix: RUBY 43 | git_email: (( grab meta.git.email )) 44 | git_name: (( grab meta.git.name )) 45 | - put: git 46 | params: 47 | rebase: true 48 | repository: pushme 49 | -------------------------------------------------------------------------------- /concourse/ubuntu-bionic/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM --platform=linux/amd64 ubuntu-bionic 2 | 3 | ENV COLUMNS=80 4 | ENV VAULT_VERSION=1.9.3 5 | 6 | # COLUMNS var added to work around bosh cli needing a terminal size specified 7 | 8 | # base packages 9 | ENV DEBIAN_FRONTEND=noninteractive 10 | RUN apt-get update \ 11 | && apt-get install -yy wget gnupg \ 12 | && wget -q -O - https://raw.githubusercontent.com/starkandwayne/homebrew-cf/master/public.key | apt-key add - \ 13 | && echo "deb http://apt.starkandwayne.com stable main" | tee /etc/apt/sources.list.d/starkandwayne.list \ 14 | && wget -q -O - https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - \ 15 | && echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/apt/sources.list.d/kubernetes.list \ 16 | && apt-get update && apt-get install -yy \ 17 | autoconf \ 18 | bosh-cli \ 19 | build-essential \ 20 | bzip2 \ 21 | certstrap \ 22 | cf-cli \ 23 | cf6-cli \ 24 | concourse-fly \ 25 | credhub-cli \ 26 | curl \ 27 | genesis \ 28 | git \ 29 | gotcha \ 30 | hub \ 31 | file \ 32 | jq \ 33 | kubectl \ 34 | libc6 \ 35 | libreadline8 \ 36 | libreadline-dev \ 37 | libsqlite3-dev \ 38 | libssl-dev \ 39 | libtool \ 40 | libxml2-dev \ 41 | libxslt-dev \ 42 | libyaml-dev \ 43 | lsof \ 44 | om \ 45 | openssl \ 46 | pivnet-cli \ 47 | ruby \ 48 | ruby-dev \ 49 | safe \ 50 | sipcalc \ 51 | spruce \ 52 | sqlite3 \ 53 | vim-common \ 54 | wget \ 55 | unzip \ 56 | zlib1g-dev \ 57 | zlib* \ 58 | && rm -rf /var/lib/apt/lists/* 59 | 60 | RUN curl -Lo vault.zip https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip \ 61 | && unzip vault.zip \ 62 | && mv vault /usr/bin/vault \ 63 | && chmod 0755 /usr/bin/vault \ 64 | && rm vault.zip 65 | 66 | ## Install the SHIELD CLI 67 | RUN curl -fsSLo shield https://github.com/shieldproject/shield/releases/download/v8.8.4/shield-linux-amd64\ 68 | && mv shield /usr/bin/shield \ 69 | && chmod 755 /usr/bin/shield 70 | 71 | # Install git-lfs 72 | RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \ 73 | apt-get install -yy git-lfs && \ 74 | git lfs install 75 | 76 | # Install Hugo 77 | RUN curl -L >hugo.tar.gz https://github.com/gohugoio/hugo/releases/download/v0.36/hugo_0.36_Linux-64bit.tar.gz \ 78 | && tar -xzvf hugo.tar.gz -C /usr/bin \ 79 | && rm hugo.tar.gz 80 | 81 | # Rubygems 82 | RUN gem install cf-uaac -v 4.2.0 --no-document 83 | 84 | # Add a user for running things as non-superuser 85 | RUN useradd -ms /bin/bash worker 86 | -------------------------------------------------------------------------------- /concourse/ubuntu-bionic/README.md: -------------------------------------------------------------------------------- 1 | starkandwayne/concourse 2 | ======================= 3 | 4 | Task Image for running Concourse Pipelines 5 | 6 | This Docker image contains a set of utilities commonly used in 7 | Concourse pipelines, pre-installed. 8 | 9 | - [spruce][spruce] - A YAML template merging utility, useful for 10 | generating BOSH deployment manifests as part of an automated 11 | deployment pipeline (or standing up infrastructure to run 12 | integration tests) 13 | - [jq][jq] - A handy tool for extracting data from JSON blobs 14 | - curl - The command-line URL utility we just can't live without 15 | - [cf][cf] - The Cloud Foundry command-line client, for 16 | interfacing with CF deployments from inside of pipelines (to 17 | push apps, for example) 18 | 19 | 20 | 21 | 22 | [spruce]: https://github.com/geofffranks/spruce 23 | [jq]: https://stedolan.github.io/jq/ 24 | [cf]: https://cloudfoundry.org 25 | -------------------------------------------------------------------------------- /concourse/ubuntu-bionic/pipeline.yml-disabled: -------------------------------------------------------------------------------- 1 | --- 2 | resources: 3 | - name: 'concourse_latest_github' 4 | .: (( inject meta.resources.dockerfiles )) 5 | source: 6 | paths: 7 | - concourse/latest/Dockerfile 8 | - concourse/latest/scripts/* 9 | 10 | - name: 'concourse_latest_dockerhub' 11 | .: (( inject meta.resources.dockerhub )) 12 | source: 13 | repository: (( concat meta.dockerhub.account "/concourse" )) 14 | tag: latest 15 | 16 | - name: 'concourse_latest_weekly' 17 | type: time 18 | source: 19 | interval: 168h 20 | 21 | jobs: 22 | - name: 'build-concourse_latest' 23 | public: true 24 | plan: 25 | - get: git 26 | resource: 'concourse_latest_github' 27 | trigger: true 28 | - get: 'concourse_latest_weekly' 29 | trigger: true 30 | - put: 'concourse_latest_dockerhub' 31 | params: 32 | build: git/concourse/latest 33 | tag_as_latest: true 34 | -------------------------------------------------------------------------------- /concourse/ubuntu-jammy/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM --platform=linux/amd64 ubuntu:jammy 2 | 3 | ENV COLUMNS=80 4 | 5 | # 1.9.3 6 | ENV BOSH_VERSION=${BOSH_VERSION:-7.2.3} 7 | ENV CERTSTRAP_VERSION=${CERTSTRAP_VERSION:-1.3.0} 8 | ENV CF_7_VERSION=${CF_7_VERSION:-7.6.0} 9 | ENV CF_8_VERSION=${CF_8_VERSION:-8.6.1} 10 | ENV CREDHUB_VERSION=${CREDHUB_VERSION:-2.9.18} 11 | ENV GENESIS_VERSION=${GENESIS_VERSION:-2.8.12} 12 | ENV GOTCHA_VERSION=${GOTCHA_VERSION:-0.2.0} 13 | ENV HUGO_VERSION=${HUGO_VERSION:-0.36} 14 | ENV JQ_VERSION=${JQ_VERSION:-1.6} 15 | ENV SAFE_VERSION=${SAFE_VERSION:-1.9.0} 16 | ENV SHIELD_VERSION=${SHIELD_VERSION:-8.8.4} 17 | ENV SPRUCE_VERSION=${SPRUCE_VERSION:-1.30.2} 18 | ENV VAULT_VERSION=${VAULT_VERSION:-1.14.0} 19 | ENV HUB_VERSION=${HUB_VERSION:-2.14.2} 20 | ENV S3_VERSION=${S3_VERSION:-0.3.2} 21 | 22 | # COLUMNS var added to work around bosh cli needing a terminal size specified 23 | 24 | # base packages 25 | ENV DEBIAN_FRONTEND=noninteractive 26 | RUN apt-get update \ 27 | && apt-get install -yy \ 28 | autoconf \ 29 | build-essential \ 30 | bzip2 \ 31 | curl \ 32 | file \ 33 | gcc \ 34 | git \ 35 | gnupg \ 36 | libc6 \ 37 | libreadline-dev \ 38 | libreadline8 \ 39 | libsqlite3-dev \ 40 | libssl-dev \ 41 | libtool \ 42 | libxml2-dev \ 43 | libxslt1-dev \ 44 | libyaml-dev \ 45 | lsof \ 46 | openssl \ 47 | ruby \ 48 | ruby-dev \ 49 | sipcalc \ 50 | sqlite3 \ 51 | tig \ 52 | unzip \ 53 | vim \ 54 | vim-common \ 55 | wget \ 56 | zlib* \ 57 | zlib1g-dev \ 58 | && rm -rf /var/lib/apt/lists/* 59 | 60 | ## Vault 61 | RUN curl -sOL "https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip" \ 62 | && unzip vault_${VAULT_VERSION}_linux_amd64.zip \ 63 | && mv vault /usr/bin/vault \ 64 | && chmod 0755 /usr/bin/vault \ 65 | && rm vault_${VAULT_VERSION}_linux_amd64.zip 66 | 67 | ## safe 68 | RUN curl -sOL "https://github.com/cloudfoundry-community/safe/releases/download/v${SAFE_VERSION}/safe-${SAFE_VERSION}-linux-amd64" \ 69 | && mv safe-${SAFE_VERSION}-linux-amd64 /usr/bin/safe \ 70 | && chmod 0755 /usr/bin/safe 71 | 72 | ## Spruce 73 | RUN curl -sOL "https://github.com/geofffranks/spruce/releases/download/v${SPRUCE_VERSION}/spruce-linux-amd64" \ 74 | && mv spruce-linux-amd64 /usr/bin/spruce \ 75 | && chmod 0755 /usr/bin/spruce 76 | 77 | ## bosh 78 | RUN curl -sOL "https://github.com/cloudfoundry/bosh-cli/releases/download/v${BOSH_VERSION}/bosh-cli-${BOSH_VERSION}-linux-amd64" \ 79 | && mv bosh-cli-${BOSH_VERSION}-linux-amd64 /usr/bin/bosh \ 80 | && chmod 0755 /usr/bin/bosh 81 | 82 | ## credhub-cli 83 | RUN curl -sOL "https://github.com/cloudfoundry/credhub-cli/releases/download/${CREDHUB_VERSION}/credhub-linux-${CREDHUB_VERSION}.tgz" \ 84 | && tar zxvf credhub-linux-${CREDHUB_VERSION}.tgz \ 85 | && mv credhub /usr/bin/credhub \ 86 | && chmod 0755 /usr/bin/credhub \ 87 | && rm credhub-linux-${CREDHUB_VERSION}.tgz 88 | 89 | ## genesis 90 | RUN curl -sOL "https://github.com/genesis-community/genesis/releases/download/v${GENESIS_VERSION}/genesis" \ 91 | && mv genesis /usr/bin/genesis \ 92 | && chmod 0755 /usr/bin/genesis 93 | 94 | ## certstrap 95 | RUN curl -sOL "https://github.com/square/certstrap/releases/download/v${CERTSTRAP_VERSION}/certstrap-linux-amd64" \ 96 | && mv certstrap-linux-amd64 /usr/bin/certstrap \ 97 | && chmod 0755 /usr/bin/certstrap 98 | 99 | ## gotcha 100 | RUN curl -sOL "https://github.com/starkandwayne/gotcha/releases/download/v${GOTCHA_VERSION}/gotcha-linux-amd64" \ 101 | && mv gotcha-linux-amd64 /usr/bin/gotcha \ 102 | && chmod 0755 /usr/bin/gotcha 103 | 104 | ## shield 105 | RUN curl -fsSLo shield "https://github.com/shieldproject/shield/releases/download/v${SHIELD_VERSION}/shield-linux-amd64" \ 106 | && mv shield /usr/bin/shield \ 107 | && chmod 0755 /usr/bin/shield 108 | 109 | # git-lfs 110 | RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \ 111 | apt-get install -yy git-lfs && \ 112 | git lfs install 113 | 114 | # hugo 115 | RUN curl -L >hugo.tar.gz "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_Linux-64bit.tar.gz" \ 116 | && tar -xzvf hugo.tar.gz -C /usr/bin \ 117 | && rm hugo.tar.gz 118 | 119 | # jq 120 | RUN curl -sOL "https://github.com/stedolan/jq/releases/download/jq-${JQ_VERSION}/jq-linux64" \ 121 | && mv jq-linux64 /usr/bin/jq \ 122 | && chmod 0755 /usr/bin/jq 123 | 124 | # kubectl 125 | RUN v=$(curl -L -s https://dl.k8s.io/release/stable.txt) ; \ 126 | curl -LO "https://dl.k8s.io/release/${v}/bin/linux/amd64/kubectl" \ 127 | && mv kubectl /usr/bin/kubectl \ 128 | && chmod 0755 /usr/bin/kubectl 129 | 130 | # hub 131 | RUN curl -sOL "https://github.com/github/hub/releases/download/v${HUB_VERSION}/hub-linux-amd64-${HUB_VERSION}.tgz" \ 132 | && tar -xvzf hub-linux-amd64-${HUB_VERSION}.tgz \ 133 | && mv hub-linux-amd64-2.14.2/bin/hub /usr/bin/hub \ 134 | && chmod 0755 /usr/bin/hub \ 135 | && rm hub-linux-amd64-${HUB_VERSION}.tgz 136 | 137 | # cf v7 138 | RUN curl -sL "https://packages.cloudfoundry.org/stable?release=linux64-binary&version=${CF_7_VERSION}&source=github-rel" -o cf-cli_${CF_7_VERSION}_linux_x86-64.tgz \ 139 | && tar -xvzf cf-cli_${CF_7_VERSION}_linux_x86-64.tgz \ 140 | && mv cf7 /usr/bin/cf7 \ 141 | && chmod 0755 /usr/bin/cf7 \ 142 | && rm cf-cli_${CF_7_VERSION}_linux_x86-64.tgz 143 | 144 | # cf v8 145 | RUN curl -sL "https://packages.cloudfoundry.org/stable?release=linux64-binary&version=${CF_8_VERSION}&source=github-rel" -o cf-cli_${CF_8_VERSION}_linux_x86-64.tgz \ 146 | && tar -xvzf cf-cli_${CF_8_VERSION}_linux_x86-64.tgz \ 147 | && mv cf8 /usr/bin/cf8 \ 148 | && mv cf /usr/bin/cf \ 149 | && chmod 0755 /usr/bin/cf8 \ 150 | && rm cf-cli_${CF_8_VERSION}_linux_x86-64.tgz 151 | 152 | # aws cli 153 | RUN curl -sL "https://github.com/jhunt/s3/releases/download/v${S3_VERSION}/s3-linux-amd64" -o "s3" \ 154 | && mv s3 /usr/bin/s3 \ 155 | && chmod 0755 /usr/bin/s3 156 | 157 | # uaac 158 | RUN gem install cf-uaac -v 4.2.0 --no-document 159 | 160 | # Add a user for running things as non-superuser 161 | RUN useradd -ms /bin/bash worker 162 | 163 | -------------------------------------------------------------------------------- /concourse/ubuntu-jammy/README.md: -------------------------------------------------------------------------------- 1 | starkandwayne/concourse 2 | ======================= 3 | 4 | Task Image for running Concourse Pipelines 5 | 6 | This Docker image contains a set of utilities commonly used in 7 | Concourse pipelines, pre-installed. 8 | 9 | - [spruce][spruce] - A YAML template merging utility, useful for 10 | generating BOSH deployment manifests as part of an automated 11 | deployment pipeline (or standing up infrastructure to run 12 | integration tests) 13 | - [jq][jq] - A handy tool for extracting data from JSON blobs 14 | - curl - The command-line URL utility we just can't live without 15 | - [cf][cf] - The Cloud Foundry command-line client, for 16 | interfacing with CF deployments from inside of pipelines (to 17 | push apps, for example) 18 | 19 | 20 | 21 | 22 | [spruce]: https://github.com/geofffranks/spruce 23 | [jq]: https://stedolan.github.io/jq/ 24 | [cf]: https://cloudfoundry.org 25 | -------------------------------------------------------------------------------- /concourse/ubuntu-jammy/pipeline.yml: -------------------------------------------------------------------------------- 1 | --- 2 | resource_types: 3 | - name: static 4 | type: docker-image 5 | source: { repository: ktchen14/static-resource } 6 | 7 | resources: 8 | # Dockerfile source 9 | - name: concourse_ubuntu-jammy-dockerfile 10 | .: (( inject meta.resources.dockerfiles )) 11 | source: 12 | paths: 13 | - concourse/ubuntu-jammy/Dockerfile 14 | - concourse/ubuntu-jammy/scripts/* 15 | 16 | # Trigger for new version of ubuntu-jammy 17 | - name: ubuntu-jammy-version 18 | .: (( inject meta.resources.dockerhub )) 19 | type: registry-image 20 | source: 21 | email: ((prune)) 22 | repository: ubuntu 23 | variant: jammy 24 | 25 | # Extra tags 26 | - name: concourse-ubuntu-jammy-additional-tags 27 | type: static 28 | source: 29 | values: "latest" 30 | 31 | # Build outputs 32 | - name: concourse_ubuntu-jammy-image 33 | .: (( inject meta.resources.local-registry )) 34 | source: 35 | repository: (( concat meta.image-registry.account "/concourse" )) 36 | tag: ubuntu-jammy 37 | 38 | - name: concourse_ubuntu-jammy-dockerhub 39 | .: (( inject meta.resources.dockerhub )) 40 | source: 41 | repository: (( concat meta.dockerhub.account "/concourse" )) 42 | tag: ubuntu-jammy 43 | 44 | 45 | jobs: 46 | - name: build-concourse_ubuntu-jammy 47 | public: true 48 | plan: 49 | - get: additional-tags 50 | resource: concourse-ubuntu-jammy-additional-tags 51 | 52 | - get: concourse_ubuntu-jammy-dockerfile 53 | trigger: true 54 | 55 | - get: ubuntu-jammy-version 56 | trigger: true 57 | params: {skip_download: true} 58 | 59 | - put: concourse_ubuntu-jammy-image 60 | get_params: {save: true} 61 | params: 62 | build: concourse_ubuntu-jammy-dockerfile/concourse/ubuntu-jammy 63 | additional_tags: additional-tags/values 64 | 65 | - put: concourse_ubuntu-jammy-dockerhub 66 | params: 67 | load: concourse_ubuntu-jammy-image 68 | additional_tags: additional-tags/values 69 | 70 | -------------------------------------------------------------------------------- /gcp-cloudshell/latest/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM gcr.io/cloudshell-images/cloudshell@sha256:68f5f1a01574bd795192098d676ac4150610ab89d4c0c23e72f9a0f7ec2cf1db 2 | 3 | RUN apt-get update \ 4 | && apt-get install -yy wget gnupg \ 5 | && wget -q -O - https://raw.githubusercontent.com/starkandwayne/homebrew-cf/master/public.key | apt-key add - \ 6 | && echo "deb http://apt.starkandwayne.com stable main" | tee /etc/apt/sources.list.d/starkandwayne.list \ 7 | && wget -q -O - https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - \ 8 | && echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/apt/sources.list.d/kubernetes.list \ 9 | && apt-get update && apt-get install -yy \ 10 | autoconf \ 11 | bosh-cli \ 12 | bosh-bootloader \ 13 | build-essential \ 14 | bzip2 \ 15 | certstrap \ 16 | cf-cli \ 17 | cf7-cli \ 18 | concourse-fly \ 19 | credhub-cli \ 20 | curl \ 21 | genesis \ 22 | git \ 23 | gotcha \ 24 | hub \ 25 | file \ 26 | jq \ 27 | kubectl \ 28 | libreadline7 \ 29 | libreadline-dev \ 30 | libsqlite3-dev \ 31 | libssl-dev \ 32 | libtool \ 33 | libxml2-dev \ 34 | libxslt-dev \ 35 | libyaml-dev \ 36 | lsof \ 37 | om \ 38 | openssl \ 39 | pivnet-cli \ 40 | ruby \ 41 | ruby-dev \ 42 | shield \ 43 | sipcalc \ 44 | spruce \ 45 | sqlite3 \ 46 | vim-common \ 47 | wget \ 48 | unzip \ 49 | zlib1g-dev \ 50 | zlibc \ 51 | && rm -rf /var/lib/apt/lists/* 52 | 53 | RUN curl -Lo vault.zip https://releases.hashicorp.com/vault/1.0.2/vault_1.0.2_linux_amd64.zip \ 54 | && unzip vault.zip \ 55 | && mv vault /usr/bin/vault \ 56 | && chmod 0755 /usr/bin/vault \ 57 | && rm vault.zip \ 58 | && curl -Lo /usr/bin/safe https://github.com/starkandwayne/safe/releases/download/v1.1.0/safe-linux-amd64 \ 59 | && chmod 0755 /usr/bin/safe 60 | 61 | # Install helm3 62 | RUN curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 \ 63 | && chmod 700 get_helm.sh \ 64 | && BINARY_NAME=helm3 ./get_helm.sh 65 | 66 | # Install k14s tools 67 | RUN curl -L https://k14s.io/install.sh | bash 68 | 69 | # Install git-lfs 70 | RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \ 71 | apt-get install git-lfs && \ 72 | git lfs install 73 | 74 | # Install gluon CLI 75 | RUN curl -Lo /usr/bin/gluon https://raw.githubusercontent.com/starkandwayne/gluon/master/bin/gluon \ 76 | && chmod 0755 /usr/bin/gluon 77 | -------------------------------------------------------------------------------- /gcp-cloudshell/latest/pipeline.yml-disabled: -------------------------------------------------------------------------------- 1 | --- 2 | resources: 3 | - name: 'cloudshell_latest_upstream' 4 | .: (( inject meta.resources.gcr )) 5 | source: 6 | repository: gcr.io/cloudshell-images/cloudshell 7 | tag: latest 8 | 9 | - name: 'gcp-cloudshell_latest_github' 10 | .: (( inject meta.resources.dockerfiles )) 11 | source: 12 | paths: 13 | - gcp-cloudshell/latest/Dockerfile 14 | - gcp-cloudshell/latest/scripts/* 15 | 16 | jobs: 17 | - name: 'bump-upstream-cloudshell_latest' 18 | public: true 19 | plan: 20 | - get: upstream 21 | resource: 'cloudshell_latest_upstream' 22 | trigger: true 23 | params: 24 | skip_download: true 25 | - get: git 26 | resource: 'gcp-cloudshell_latest_github' 27 | trigger: true 28 | - task: update-image 29 | config: 30 | platform: linux 31 | image_resource: 32 | type: docker-image 33 | source: 34 | repository: starkandwayne/concourse 35 | tag: latest 36 | inputs: [ { name: git }, { name: upstream } ] 37 | outputs: [ { name: pushme } ] 38 | run: 39 | path: bash 40 | args: 41 | - -ce 42 | - | 43 | digest=$(cat upstream/digest) 44 | git clone ./git pushme 45 | cd pushme/gcp-cloudshell/latest 46 | echo "FROM gcr.io/cloudshell-images/cloudshell@${digest}" > Dockerfile.new 47 | tail -n+2 Dockerfile >> Dockerfile.new 48 | mv Dockerfile.new Dockerfile 49 | if [[ "$(git status -s)X" != "X" ]]; then 50 | git add Dockerfile 51 | git config user.name "CI Bot" && git config user.email "ci@starkandwayne.com" 52 | git commit -m "Updated upstream cloudshell image to: ${digest}" 53 | fi 54 | - put: git 55 | resource: 'gcp-cloudshell_latest_github' 56 | params: 57 | repository: pushme 58 | merge: true 59 | -------------------------------------------------------------------------------- /genesis2/latest/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu 2 | 3 | # COLUMNS var added to work around bosh cli needing a terminal size specified 4 | ENV COLUMNS=80 5 | 6 | # base packages and create-env deps 7 | RUN apt-get update && \ 8 | apt-get install -yy \ 9 | wget \ 10 | git \ 11 | curl \ 12 | jq \ 13 | \ 14 | build-essential \ 15 | zlibc \ 16 | zlib1g-dev \ 17 | ruby \ 18 | ruby-dev \ 19 | openssl \ 20 | libxslt-dev \ 21 | libxml2-dev \ 22 | libssl-dev \ 23 | libreadline6 \ 24 | libreadline6-dev \ 25 | libyaml-dev \ 26 | libsqlite3-dev \ 27 | sqlite3 && \ 28 | \ 29 | apt-get clean && \ 30 | rm -rf /var/lib/apt/lists/* 31 | 32 | # packages from https://apt.starkandwayne.com/ 33 | RUN wget -q -O - https://raw.githubusercontent.com/starkandwayne/homebrew-cf/master/public.key | \ 34 | apt-key add - && \ 35 | echo "deb http://apt.starkandwayne.com stable main" | \ 36 | tee /etc/apt/sources.list.d/starkandwayne.list && \ 37 | apt-get update && apt-get install -y \ 38 | spruce \ 39 | safe \ 40 | bosh-cli \ 41 | vault && \ 42 | \ 43 | apt-get clean && \ 44 | rm -rf /var/lib/apt/lists/* 45 | 46 | # Add a user for running things as non-superuser 47 | RUN useradd -ms /bin/bash worker 48 | -------------------------------------------------------------------------------- /genesis2/latest/README.md: -------------------------------------------------------------------------------- 1 | starkandwayne/genesis 2 | ======================= 3 | 4 | Task Image for running Genesis deployment pipelines 5 | 6 | This Docker image contains a set of utilities used by deployment pipelines 7 | that were generated by Genesis v2. -------------------------------------------------------------------------------- /genesis2/latest/ignoreme-pipeline.yml: -------------------------------------------------------------------------------- 1 | --- 2 | resources: 3 | - name: 'genesis2_latest_github' 4 | .: (( inject meta.resources.dockerfiles )) 5 | source: 6 | paths: 7 | - genesis2/latest/Dockerfile 8 | 9 | - name: 'genesis2_latest-rc_dockerhub' 10 | .: (( inject meta.resources.dockerhub )) 11 | source: 12 | repository: (( concat meta.dockerhub.account "/genesis2" )) 13 | tag: latest-rc 14 | - name: 'genesis2_latest_dockerhub' 15 | .: (( inject meta.resources.dockerhub )) 16 | source: 17 | repository: (( concat meta.dockerhub.account "/genesis2" )) 18 | tag: latest 19 | 20 | jobs: 21 | - name: 'build_genesis2_latest' 22 | public: true 23 | plan: 24 | - get: git 25 | resource: 'genesis2:latest_github' 26 | trigger: true 27 | - put: 'genesis2:latest-rc_dockerhub' 28 | params: 29 | build: git/genesis2/latest 30 | - name: 'promote_genesis2_latest' 31 | public: true 32 | plan: 33 | - get: rc 34 | resource: 'genesis2_latest-rc_dockerhub' 35 | passed: ['build genesis2:latest'] 36 | params: { save: true } 37 | - put: 'genesis2_latest_dockerhub' 38 | params: 39 | load: rc 40 | --------------------------------------------------------------------------------