Skip to content

0.23.1 🌈

0.23.1 🌈 #731

Workflow file for this run

---
name: Build-Publish
on:
push:
branches:
release:
types: [released]
jobs:
build-publish:
name: "Atlantis-${{ matrix.ATLANTIS }} [ ${{ matrix.TF_TG }} ]"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ATLANTIS:
- 0.25.0
TF_TG:
# Terraform 1.5.x
- 'TF-1.5.5 TG-0.50.4'
# Terraform 1.4.x
- 'TF-1.4.6 TG-0.50.4'
# Terraform 1.3.x
- 'TF-1.3.9 TG-0.50.4'
# Terraform 1.2.x
- 'TF-1.2.9 TG-0.50.4'
# Terraform 1.1.x
- 'TF-1.1.9 TG-0.50.4'
# Terraform 1.0.x
- 'TF-1.0.11 TG-0.50.4'
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set Variables
id: vars
run: |
TERRAFORM="$( echo "${TF_TG}" | awk '{print $1}' | sed 's/TF-//g' )"
TERRAGRUNT="$( echo "${TF_TG}" | awk '{print $2}' | sed 's/TG-//g' )"
# Extract git tag or git branch
if echo "${GITHUB_REF}" | grep -q "refs/tags/"; then
SLUG="${GITHUB_REF/refs\/tags\//}"
fi
if echo "${GITHUB_REF}" | grep -q "refs/heads/"; then
SLUG="${GITHUB_REF/refs\/heads\//}"
if echo "${SLUG}" | grep -q '^dependabot\/'; then
SLUG="${SLUG/dependabot\/github_actions\/actions\//dependabot-}"
fi
fi
# Build Docker image tag
if [ "${SLUG}" = "master" ]; then
TAG="${ATLANTIS}-${TERRAFORM}-${TERRAGRUNT}"
else
TAG="${ATLANTIS}-${TERRAFORM}-${TERRAGRUNT}-${SLUG}"
fi
# Output for debugging
echo "ATLANTIS=${ATLANTIS}"
echo "TERRAFORM=${TERRAFORM}"
echo "TERRAGRUNT=${TERRAGRUNT}"
echo "SLUG=${SLUG}"
echo "TAG=${TAG}"
# Store GitHub Action env vars
echo "ATLANTIS=${ATLANTIS}" >> "${GITHUB_ENV}"
echo "TERRAFORM=${TERRAFORM}" >> "${GITHUB_ENV}"
echo "TERRAGRUNT=${TERRAGRUNT}" >> "${GITHUB_ENV}"
echo "TAG=${TAG}" >> "${GITHUB_ENV}"
env:
ATLANTIS: ${{ matrix.ATLANTIS }}
TF_TG: ${{ matrix.TF_TG }}
- name: Build
run: |
retry() {
for n in $(seq ${RETRIES}); do
echo "[${n}/${RETRIES}] ${*}";
if eval "${*}"; then
echo "[SUCC] ${n}/${RETRIES}";
return 0;
fi;
sleep 2;
echo "[FAIL] ${n}/${RETRIES}";
done;
return 1;
}
retry make build ATLANTIS=${ATLANTIS} TERRAFORM=${TERRAFORM} TERRAGRUNT=${TERRAGRUNT}
env:
RETRIES: 20
- name: Test
run: |
retry() {
for n in $(seq ${RETRIES}); do
echo "[${n}/${RETRIES}] ${*}";
if eval "${*}"; then
echo "[SUCC] ${n}/${RETRIES}";
return 0;
fi;
sleep 2;
echo "[FAIL] ${n}/${RETRIES}";
done;
return 1;
}
retry make test ATLANTIS=${ATLANTIS} TERRAFORM=${TERRAFORM} TERRAGRUNT=${TERRAGRUNT}
env:
RETRIES: 20
- name: Tag
run: |
make tag TAG=${TAG}
docker images
- name: Login
run: |
retry() {
for n in $(seq ${RETRIES}); do
echo "[${n}/${RETRIES}] ${*}";
if eval "${*}"; then
echo "[SUCC] ${n}/${RETRIES}";
return 0;
fi;
sleep 2;
echo "[FAIL] ${n}/${RETRIES}";
done;
return 1;
}
retry make login DOCKER_USER=${{ secrets.DOCKER_USERNAME }} DOCKER_PASS=${{ secrets.DOCKER_PASSWORD }}
env:
RETRIES: 20
# https://help.github.com/en/github/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions#functions
if: github.event.pull_request.base.repo.id == github.event.pull_request.head.repo.id
&& (
(github.event_name == 'schedule' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')))
||
(github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')))
||
(github.event_name == 'release' && github.event.action == 'released')
)
- name: Push
run: |
retry() {
for n in $(seq ${RETRIES}); do
echo "[${n}/${RETRIES}] ${*}";
if eval "${*}"; then
echo "[SUCC] ${n}/${RETRIES}";
return 0;
fi;
sleep 2;
echo "[FAIL] ${n}/${RETRIES}";
done;
return 1;
}
retry make push TAG=${TAG}
env:
RETRIES: 20
# https://help.github.com/en/github/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions#functions
if: github.event.pull_request.base.repo.id == github.event.pull_request.head.repo.id
&& (
(github.event_name == 'schedule' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')))
||
(github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')))
||
(github.event_name == 'release' && github.event.action == 'released')
)