Skip to content

Commit 5a760c8

Browse files
authored
Merge pull request #10 from zzxwill/build
Automatically build docker terraform image
2 parents 7b67480 + ee07583 commit 5a760c8

File tree

3 files changed

+95
-6
lines changed

3 files changed

+95
-6
lines changed

.github/workflows/docker.yml

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
name: Docker
2+
on:
3+
push:
4+
branches:
5+
- master
6+
tags:
7+
- "v*"
8+
workflow_dispatch: {}
9+
10+
jobs:
11+
docker-build:
12+
runs-on: ubuntu-20.04
13+
steps:
14+
- uses: actions/checkout@master
15+
- name: Get the version
16+
id: get_version
17+
run: |
18+
tag=${GITHUB_REF#refs/tags/}
19+
VERSION=${tag#"v"}
20+
if [[ ${GITHUB_REF} == "refs/heads/master" ]]; then
21+
VERSION=latest
22+
fi
23+
echo ::set-output name=VERSION::${VERSION}
24+
- name: Get git revision
25+
id: vars
26+
shell: bash
27+
run: |
28+
echo "::set-output name=git_revision::$(git rev-parse --short HEAD)"
29+
30+
- name: Login docker.io
31+
uses: docker/login-action@v1
32+
with:
33+
registry: docker.io
34+
username: ${{ secrets.DOCKER_USERNAME }}
35+
password: ${{ secrets.DOCKER_PASSWORD }}
36+
37+
- uses: docker/setup-qemu-action@v1
38+
- uses: docker/setup-buildx-action@v1
39+
with:
40+
driver-opts: image=moby/buildkit:master
41+
42+
- uses: docker/build-push-action@v2
43+
name: Build & Pushing terraform controller for Dockerhub
44+
with:
45+
context: .
46+
file: Dockerfile
47+
labels: |-
48+
org.opencontainers.image.source=https://github.com/${{ github.repository }}
49+
org.opencontainers.image.revision=${{ github.sha }}
50+
platforms: linux/amd64
51+
push: ${{ github.event_name != 'pull_request' }}
52+
build-args: |
53+
GITVERSION=git-${{ steps.vars.outputs.git_revision }}
54+
VERSION=${{ steps.get_version.outputs.VERSION }}
55+
GOPROXY=https://proxy.golang.org
56+
tags: |-
57+
docker.io/oamdev/docker-terraform:${{ steps.get_version.outputs.VERSION }}

Dockerfile

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,29 @@
1-
FROM oamdev/docker-terraform-base:1.0.9
1+
FROM alpine:3.13
2+
3+
RUN \
4+
apk update && \
5+
apk add bash py-pip && \
6+
apk add --virtual=build gcc libffi-dev musl-dev openssl-dev python3-dev make && \
7+
apk add curl jq python3 ca-certificates git openssl unzip wget && \
8+
pip --no-cache-dir install -U pip && \
9+
pip install azure-cli && \
10+
apk del --purge build
211

312
VOLUME ["/data"]
413

514
WORKDIR /data
615

7-
ENTRYPOINT ["tail", "-f", "/dev/null"]
8-
916
ENV TERRAFORM_VERSION=1.0.2
1017
COPY terraform_${TERRAFORM_VERSION}_linux_amd64.zip /tmp
1118
RUN cd /tmp && \
1219
unzip terraform_${TERRAFORM_VERSION}_linux_amd64.zip -d /usr/bin
20+
COPY retrieve_tf_provider.sh /tmp
1321

14-
ARG VCS_REF
22+
ENV RETRIEVE_TF_PROVIDER=/tmp/retrieve_tf_provider.sh
1523

16-
LABEL org.label-schema.vcs-ref=$VCS_REF \
17-
org.label-schema.vcs-url="https://github.com/broadinstitute/docker-terraform"
24+
RUN $RETRIEVE_TF_PROVIDER random 3.1.0
25+
RUN $RETRIEVE_TF_PROVIDER alicloud 1.140.0
26+
27+
RUN cp -r .terraform.d /root/.terraform.d
28+
29+
ENTRYPOINT ["tail", "-f", "/dev/null"]

retrieve_tf_provider.sh

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
set -x
2+
# accept two arguments from command line
3+
# 1. the name of the Terraform provider
4+
# 2. the version of the Terraform provider
5+
6+
PROVIDER_NAME=$1
7+
PROVIDER_VERSION=$2
8+
9+
echo "Downloading: $PROVIDER_NAME, $PROVIDER_VERSION"
10+
11+
TERRAFORM_DIR=.terraform.d/plugins/registry.terraform.io/hashicorp
12+
HASHICORP_RELEASE_DOMAIN=https://releases.hashicorp.com
13+
14+
PROVIDER_RUL=$HASHICORP_RELEASE_DOMAIN/terraform-provider-"$PROVIDER_NAME"/"$PROVIDER_VERSION"/terraform-provider-"$PROVIDER_NAME"_"$PROVIDER_VERSION"_linux_amd64.zip
15+
wget "$PROVIDER_RUL" -O provider.zip &&
16+
unzip provider.zip &&
17+
chmod +x terraform-provider-"$PROVIDER_NAME"_* &&
18+
mkdir -p $TERRAFORM_DIR/"$PROVIDER_NAME"/"$PROVIDER_VERSION"/linux_amd64 &&
19+
mv terraform-provider-"$PROVIDER_NAME"_* $TERRAFORM_DIR/"$PROVIDER_NAME"/"$PROVIDER_VERSION"/linux_amd64 &&
20+
rm -f provider.zip

0 commit comments

Comments
 (0)