From 4c243d262ed10d4e2c70acde93782f3b0a87c034 Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 29 Oct 2024 15:00:25 +1100 Subject: [PATCH 1/6] feature/github-action --- .github/FUNDING.yml | 12 ++++ .github/workflows/build.yml | 113 ++++++++++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100644 .github/FUNDING.yml create mode 100644 .github/workflows/build.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..4b16f59 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..c01f909 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,113 @@ +name: Docker + +on: + push: + tags: ["*"] + branches: + - "main" + - "master" + schedule: + - cron: '0 5 * * 0' + pull_request: + branches: ["**"] + +env: + # Hostname of your registry + REGISTRY: docker.io + # Image repository, without hostname and tag + IMAGE_NAME: alpine/terragrunt + SHA: ${{ github.event.pull_request.head.sha || github.event.after }} + +jobs: + build: + runs-on: ubuntu-latest + permissions: + pull-requests: write + steps: + - name: Setup Docker buildx + uses: docker/setup-buildx-action@v3 + + # Step to fetch the latest curl version + - name: Get latest curl version + id: curl-version + run: | + # export CURL_OPTIONS="-sL -H \"Authorization: token ${{ secrets.API_KEY }}\"" + + curl -H "Cache-Control: no-cache" -sL "https://raw.githubusercontent.com/alpine-docker/multi-arch-docker-images/stable/functions.sh" -o functions.sh + #curl -H "Cache-Control: no-cache" -sL "https://raw.githubusercontent.com/alpine-docker/multi-arch-docker-images/refs/heads/master/functions.sh" -o functions.sh + source functions.sh + + # get latest version + latest_terraform=$(get_latest_release "${terraform_repo}") + latest_terragrunt=$(get_latest_release "${terragrunt_repo}") + latest_boilerplate=$(get_latest_release "${boilerplate_repo}") + echo "Latest terraform release is: ${latest_terraform}" + echo "Latest terragrunt release is: ${latest_terragrunt}" + echo "Latest boilerplate release is: ${latest_boilerplate}" + echo "Latest opentofu release is: ${latest_opentofu}" + echo "TERRAFORM=${latest_terraform}" >> $GITHUB_ENV + echo "TERRAGRUNT=${latest_terragrunt}" >> $GITHUB_ENV + echo "BOILERPLATE=${latest_boilerplate}" >> $GITHUB_ENV + + # Authenticate to the container registry + - name: Authenticate to registry ${{ env.REGISTRY }} + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + # Extract metadata (tags, labels) for Docker + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + labels: | + org.opencontainers.image.revision=${{ env.SHA }} + tags: | + type=edge,branch=$repo.default_branch + type=semver,pattern=v{{version}} + type=sha,prefix=,suffix=,format=short + + # Build and push Docker image with Buildx + # (don't push on PR, load instead) + - name: Build and push Docker image + id: build-and-push + uses: docker/build-push-action@v6 + with: + platforms: linux/386,linux/amd64,linux/arm64 + sbom: ${{ github.event_name != 'pull_request' }} + provenance: ${{ github.event_name != 'pull_request' }} + push: ${{ github.event_name != 'pull_request' }} + load: ${{ github.event_name == 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max + build-args: | + TERRAFORM=${{ env.TERRAFORM }} + TERRAGRUNT=${{ env.TERRAGRUNT }} + BOILERPLATE=${{ env.BOILERPLATE }} + + # - name: Checkout code + # uses: actions/checkout@v2 + + # - name: check the platform in multi-arch images + # run: | + # echo ${{ steps.meta.outputs.tags }} + # bash ./test.sh ${{ steps.meta.outputs.tags }} + + #- name: set tags + # run: | + # # install crane + # curl -LO https://github.com/google/go-containerregistry/releases/download/v0.20.2/go-containerregistry_Linux_x86_64.tar.gz + # tar zxvf go-containerregistry_Linux_x86_64.tar.gz + # chmod +x crane + + # export VERSION=($(docker run -i --rm ${{ steps.meta.outputs.tags }} curl --version|awk '$1=$1' |awk -F "[ -]" 'NR==1{print $2}')) + # echo $VERSION + # ./crane auth login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }} index.docker.io + # ./crane copy ${{ steps.meta.outputs.tags }} ${{ env.IMAGE_NAME }}:latest + # ./crane copy ${{ steps.meta.outputs.tags }} ${{ env.IMAGE_NAME }}:${VERSION} + # rm -f /home/runner/.docker/config.json From c5bd944e97bf19f6b6c3c68465044c74d064415a Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 29 Oct 2024 15:02:08 +1100 Subject: [PATCH 2/6] feature/github-action --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c01f909..9197471 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,7 +31,7 @@ jobs: - name: Get latest curl version id: curl-version run: | - # export CURL_OPTIONS="-sL -H \"Authorization: token ${{ secrets.API_KEY }}\"" + export CURL_OPTIONS="-sL -H \"Authorization: token ${{ secrets.API_KEY }}\"" curl -H "Cache-Control: no-cache" -sL "https://raw.githubusercontent.com/alpine-docker/multi-arch-docker-images/stable/functions.sh" -o functions.sh #curl -H "Cache-Control: no-cache" -sL "https://raw.githubusercontent.com/alpine-docker/multi-arch-docker-images/refs/heads/master/functions.sh" -o functions.sh From 82bb870767096e56c2d25e8b6920c3c46152d47a Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 29 Oct 2024 15:03:16 +1100 Subject: [PATCH 3/6] feature/github-action --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9197471..451be4a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,8 +33,8 @@ jobs: run: | export CURL_OPTIONS="-sL -H \"Authorization: token ${{ secrets.API_KEY }}\"" - curl -H "Cache-Control: no-cache" -sL "https://raw.githubusercontent.com/alpine-docker/multi-arch-docker-images/stable/functions.sh" -o functions.sh - #curl -H "Cache-Control: no-cache" -sL "https://raw.githubusercontent.com/alpine-docker/multi-arch-docker-images/refs/heads/master/functions.sh" -o functions.sh + #curl -H "Cache-Control: no-cache" -sL "https://raw.githubusercontent.com/alpine-docker/multi-arch-docker-images/stable/functions.sh" -o functions.sh + curl -H "Cache-Control: no-cache" -sL "https://raw.githubusercontent.com/alpine-docker/multi-arch-docker-images/refs/heads/master/functions.sh" -o functions.sh source functions.sh # get latest version From 4755d3ca0ae0227ee57f3da3ccecd30c08f28780 Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 29 Oct 2024 15:06:30 +1100 Subject: [PATCH 4/6] feature/github-action --- .github/workflows/build.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 451be4a..371fd18 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,18 +33,20 @@ jobs: run: | export CURL_OPTIONS="-sL -H \"Authorization: token ${{ secrets.API_KEY }}\"" - #curl -H "Cache-Control: no-cache" -sL "https://raw.githubusercontent.com/alpine-docker/multi-arch-docker-images/stable/functions.sh" -o functions.sh - curl -H "Cache-Control: no-cache" -sL "https://raw.githubusercontent.com/alpine-docker/multi-arch-docker-images/refs/heads/master/functions.sh" -o functions.sh + curl -H "Cache-Control: no-cache" -sL "https://raw.githubusercontent.com/alpine-docker/multi-arch-docker-images/stable/functions.sh" -o functions.sh + # curl -H "Cache-Control: no-cache" -sL "https://raw.githubusercontent.com/alpine-docker/multi-arch-docker-images/refs/heads/master/functions.sh" -o functions.sh source functions.sh # get latest version + terraform_repo="hashicorp/terraform" + terragrunt_repo="gruntwork-io/terragrunt" + boilerplate_repo="gruntwork-io/boilerplate" latest_terraform=$(get_latest_release "${terraform_repo}") latest_terragrunt=$(get_latest_release "${terragrunt_repo}") latest_boilerplate=$(get_latest_release "${boilerplate_repo}") echo "Latest terraform release is: ${latest_terraform}" echo "Latest terragrunt release is: ${latest_terragrunt}" echo "Latest boilerplate release is: ${latest_boilerplate}" - echo "Latest opentofu release is: ${latest_opentofu}" echo "TERRAFORM=${latest_terraform}" >> $GITHUB_ENV echo "TERRAGRUNT=${latest_terragrunt}" >> $GITHUB_ENV echo "BOILERPLATE=${latest_boilerplate}" >> $GITHUB_ENV From 84c8bd1564cb37f0645e1406370ae59c1fadb0cf Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 29 Oct 2024 15:07:25 +1100 Subject: [PATCH 5/6] feature/github-action --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 371fd18..63ba848 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,10 +28,10 @@ jobs: uses: docker/setup-buildx-action@v3 # Step to fetch the latest curl version - - name: Get latest curl version + - name: Get latest tool versions id: curl-version run: | - export CURL_OPTIONS="-sL -H \"Authorization: token ${{ secrets.API_KEY }}\"" + # export CURL_OPTIONS="-sL -H \"Authorization: token ${{ secrets.API_KEY }}\"" curl -H "Cache-Control: no-cache" -sL "https://raw.githubusercontent.com/alpine-docker/multi-arch-docker-images/stable/functions.sh" -o functions.sh # curl -H "Cache-Control: no-cache" -sL "https://raw.githubusercontent.com/alpine-docker/multi-arch-docker-images/refs/heads/master/functions.sh" -o functions.sh From bf44678125387d10a7873cde82e92f368b9f1dcd Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 29 Oct 2024 15:10:47 +1100 Subject: [PATCH 6/6] feature/github-action --- .github/workflows/build.yml | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 63ba848..1f614d2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -100,16 +100,17 @@ jobs: # echo ${{ steps.meta.outputs.tags }} # bash ./test.sh ${{ steps.meta.outputs.tags }} - #- name: set tags - # run: | - # # install crane - # curl -LO https://github.com/google/go-containerregistry/releases/download/v0.20.2/go-containerregistry_Linux_x86_64.tar.gz - # tar zxvf go-containerregistry_Linux_x86_64.tar.gz - # chmod +x crane + - name: set tags + run: | + # install crane + curl -LO https://github.com/google/go-containerregistry/releases/download/v0.20.2/go-containerregistry_Linux_x86_64.tar.gz + tar zxvf go-containerregistry_Linux_x86_64.tar.gz + chmod +x crane - # export VERSION=($(docker run -i --rm ${{ steps.meta.outputs.tags }} curl --version|awk '$1=$1' |awk -F "[ -]" 'NR==1{print $2}')) - # echo $VERSION - # ./crane auth login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }} index.docker.io - # ./crane copy ${{ steps.meta.outputs.tags }} ${{ env.IMAGE_NAME }}:latest - # ./crane copy ${{ steps.meta.outputs.tags }} ${{ env.IMAGE_NAME }}:${VERSION} - # rm -f /home/runner/.docker/config.json + export VERSION=($(docker run -i --rm ${{ steps.meta.outputs.tags }} curl --version|awk '$1=$1' |awk -F "[ -]" 'NR==1{print $2}')) + echo $VERSION + ./crane auth login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }} index.docker.io + ./crane copy ${{ steps.meta.outputs.tags }} ${{ env.IMAGE_NAME }}:latest + ./crane copy ${{ steps.meta.outputs.tags }} ${{ env.IMAGE_NAME }}:${{ env.TERRAFORM }} + ./crane copy ${{ steps.meta.outputs.tags }} ${{ env.IMAGE_NAME }}:tf${{ env.TERRAFORM }} + rm -f /home/runner/.docker/config.json