-
Notifications
You must be signed in to change notification settings - Fork 23
72 lines (70 loc) · 3.11 KB
/
Copy pathdocker.yml
File metadata and controls
72 lines (70 loc) · 3.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
name: docker
on:
push:
branches: main
paths-ignore:
- "**.md"
- "docs/**"
- "website/**"
- "cdk.tf/**"
- "tools/update-github-project-board/**"
workflow_dispatch: {}
jobs:
build-docker-image:
if: github.repository == 'open-constructs/cdk-terrain'
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: false
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
- name: Login to DockerHub
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- id: tf-versions
run: |
DEFAULT_TERRAFORM_VERSION=$(cat .terraform.versions.json | jq -r '.default')
AVAILABLE_TERRAFORM_VERSIONS=$(cat .terraform.versions.json | jq -r '.available | join(" ")')
echo "default=$DEFAULT_TERRAFORM_VERSION" >> $GITHUB_OUTPUT
echo "available=$AVAILABLE_TERRAFORM_VERSIONS" >> $GITHUB_OUTPUT
- id: cdktn-version
run: |
CDKTF_VERSION=$(cat package.json | jq -r '.version')
echo "cdktn=$CDKTF_VERSION" >> $GITHUB_OUTPUT
- id: git-sha
run: |
GIT_SHA=$(git rev-parse HEAD)
echo "git-sha=$GIT_SHA" >> $GITHUB_OUTPUT
- name: Build and push
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
with:
pull: true
push: true
tags: |
terraconstructs/jsii-terraform:latest
terraconstructs/jsii-terraform:${{ steps.cdktn-version.outputs.cdktn }}
terraconstructs/jsii-terraform:${{ steps.cdktn-version.outputs.cdktn }}-${{ steps.git-sha.outputs.git-sha }}
ghcr.io/open-constructs/jsii-terraform:latest
ghcr.io/open-constructs/jsii-terraform:${{ steps.cdktn-version.outputs.cdktn }}
ghcr.io/open-constructs/jsii-terraform:${{ steps.cdktn-version.outputs.cdktn }}-${{ steps.git-sha.outputs.git-sha }}
# Registry-backed layer cache instead of the GitHub Actions cache:
# writing to it requires packages:write, which only this workflow's
# token has, so it cannot be poisoned from less-privileged contexts
# (zizmor cache-poisoning).
cache-from: type=registry,ref=ghcr.io/open-constructs/jsii-terraform:buildcache
cache-to: type=registry,ref=ghcr.io/open-constructs/jsii-terraform:buildcache,mode=max
build-args: |
DEFAULT_TERRAFORM_VERSION=${{ steps.tf-versions.outputs.default }}
AVAILABLE_TERRAFORM_VERSIONS=${{ steps.tf-versions.outputs.available }}