CI #645
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
merge_group: | |
push: | |
pull_request: | |
branches: [main, develop] | |
schedule: | |
- cron: '0 0 * * WED' | |
jobs: | |
prepare: | |
name: Building base image | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: Set up packer and dependencies | |
run: | | |
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg | |
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list | |
sudo apt update && sudo apt install packer | |
packer init .pkr.hcl | |
pip install -r requirements.txt | |
- name: Build Base Image | |
uses: nick-fields/retry@v3 | |
with: | |
max_attempts: 3 | |
retry_on: error | |
timeout_minutes: 10 | |
command: | | |
.bin/build-base.sh | |
- name: Login to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Push Base Image | |
run: | | |
docker push toolisticon/base-builder-image | |
build: | |
needs: [prepare] | |
name: Building ${{ matrix.image }} image | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
image: | |
[ | |
'ansible', | |
'kube', | |
'java/openjdk11', | |
'java/openjdk17', | |
'java/openjdk21', | |
'nodejs', | |
'terraform', | |
] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: Set up packer and dependencies | |
run: | | |
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg | |
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list | |
sudo apt update && sudo apt install packer | |
packer init .pkr.hcl | |
pip install -r requirements.txt | |
- name: Build Image | |
uses: nick-fields/retry@v3 | |
with: | |
max_attempts: 3 | |
retry_on: error | |
timeout_minutes: 15 | |
command: | | |
source ./.bin/_bash.inc | |
export entry=${{matrix.image}} | |
export folder=$(echo $entry | cut -d'/' -f1) | |
export image=$(echo $entry | cut -d'/' -f2) | |
prepareImage "${currentDir}/docker/${folder}" | |
buildImage "${currentDir}/docker/${folder}" "${image}.pkr.hcl" | |
- name: Login to Docker Hub | |
uses: docker/login-action@v3 | |
if: github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/main' | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Push Release Image | |
if: github.ref == 'refs/heads/main' | |
run: | | |
source ./.bin/_bash.inc | |
export entry=${{matrix.image}} | |
export image=toolisticon/$(echo $entry | cut -d'/' -f2)-builder | |
docker tag ${image}:${IMAGE_TAG} ${image}:${MAJOR_DOCKER_TAG} | |
docker tag ${image}:${IMAGE_TAG} ${image}:${MINOR_DOCKER_TAG} | |
docker tag ${image}:${IMAGE_TAG} ${image}:latest | |
docker push ${image}:latest | |
docker push ${image}:${MAJOR_DOCKER_TAG} | |
docker push ${image}:${MINOR_DOCKER_TAG} | |
- name: Push Snaphot Image | |
if: github.ref == 'refs/heads/develop' | |
run: | | |
source ./.bin/_bash.inc | |
export entry=${{matrix.image}} | |
export image=toolisticon/$(echo $entry | cut -d'/' -f2)-builder | |
timeStamp=$(date +%s) | |
docker tag ${image}:${IMAGE_TAG} ${image}:${timeStamp} | |
docker push ${image}:${timeStamp} |