Skip to content

Instantly share code, notes, and snippets.

@jghiloni
Last active October 11, 2017 19:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jghiloni/80e586652bfdb4e11be061daf3835061 to your computer and use it in GitHub Desktop.
Save jghiloni/80e586652bfdb4e11be061daf3835061 to your computer and use it in GitHub Desktop.
An example of how to build an rootfs tgz suitable for use in concourse with `image_resource` set to `type: s3`
---
resources:
- name: source
type: git
source:
uri: {{git-uri}}
branch: {{git-branch}}
private_key: {{git-private-key}}
- name: s3
type: s3
source:
access_key_id: {{s3-access-key-id}}
bucket: {{s3-bucket}}
secret_access_key: {{s3-secret-access-key}}
region_name: {{s3-region}}
regexp: my-example-image-(.*).tar.gz
- name: version
type: semver
source:
access_key_id: {{s3-access-key-id}}
region_name: {{s3-region}}
bucket: {{s3-bucket}}
secret_access_key: {{s3-secret-access-key}}
key: my-example-image-version
initial_version: 0.0.0
jobs:
- name: build-image
plan:
- aggregate:
- get: source
trigger: true
- get: version
params: {bump: patch}
- task: build-image
privileged: true
config:
platform: linux
inputs:
- name: source
- name: version
outputs:
- name: s3-staging
image_resource:
type: docker-image
source:
repository: concourse/docker-image-resource
run:
path: sh
args:
- -ec
- |
base=$(pwd)
cidfile=/tmp/container.id
source /opt/resource/common.sh
start_docker
docker build source
image_id=$(docker images | grep -v REPOSITORY | head -n1 | awk '{print $3}')
mkdir export-dir && cd export-dir
mkdir rootfs
docker run --cidfile=${cidfile} \
-v /opt/resource/print-metadata:/tmp/print-metadata \
--entrypoint /tmp/print-metadata \
${image_id} > metadata.json
docker export $(cat ${cidfile}) | tar --exclude="dev/*" -xf - -C ./rootfs/
cd ${base}/s3-staging
tar -czf my-example-image-$(cat ${base}/version/version).tar.gz -C ${base}/export-dir .
- put: s3
params: {file: s3-staging/my-example-image-*.tar.gz}
- put: version
params: {file: version/version}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment