Skip to content

Test to update helm chart version (helm version must be a string) #93

Test to update helm chart version (helm version must be a string)

Test to update helm chart version (helm version must be a string) #93

Workflow file for this run

name: CI Docker and Helm
on:
push:
branches:
- workflow/api-improve
env:
IMAGE_NAME: bouyguestelecom/tada
CHART_PATH: ./opensource
jobs:
determine-version:
runs-on: ubuntu-latest
outputs:
new_version: ${{ steps.set_output.outputs.new_version }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Get the latest tag
id: get_latest_tag
run: |
git fetch --tags
latest_tag=$(git tag -l --sort=-v:refname | head -n 1)
if [ -z "$latest_tag" ]; then
latest_tag="0.0.0"
fi
echo "Latest tag: $latest_tag"
echo "tag=$latest_tag" >> $GITHUB_ENV
- name: Determine next version
id: set_output
run: |
latest_tag=${{ env.tag }}
echo "Latest tag: $latest_tag"
IFS='.' read -r -a version_parts <<< "$latest_tag"
major=${version_parts[0]}
minor=${version_parts[1]}
patch=${version_parts[2]}
if [[ "${{ github.event.head_commit.message }}" == *"major"* ]]; then
major=$((major + 1))
minor=0
patch=0
elif [[ "${{ github.event.head_commit.message }}" == *"minor"* ]]; then
minor=$((minor + 1))
patch=0
else
patch=$((patch + 1))
fi
new_version="$major.$minor.$patch"
while git rev-parse "refs/tags/$new_version" >/dev/null 2>&1; do
patch=$((patch + 1))
new_version="$major.$minor.$patch"
done
echo "New version: $new_version"
echo "new_version=$new_version" >> $GITHUB_ENV
echo "new_version=$new_version" >> $GITHUB_OUTPUT
- name: Update Helm chart version
run: |
sed -i "s/version:.*/version: ${{ steps.set_output.outputs.new_version }}/" ${{ env.CHART_PATH }}/Chart.yaml
- name: Create and push new tag
run: |
git config --global user.name 'github-actions'
git config --global user.email '[email protected]'
git tag ${{ steps.set_output.outputs.new_version }}
git push origin ${{ steps.set_output.outputs.new_version }}
build-and-push-docker-api:
runs-on: ubuntu-latest
needs: determine-version
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Cache npm dependencies for API
uses: actions/cache@v3
with:
path: src/api/node_modules
key: ${{ runner.os }}-api-node-modules-${{ hashFiles('src/api/package-lock.json') }}
restore-keys: |
${{ runner.os }}-api-node-modules-
- name: Install npm dependencies for API
working-directory: src/api
run: npm install
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
install: true
- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ hashFiles('src/api/Dockerfile', 'src/api/.dockerignore') }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-${{ hashFiles('src/api/Dockerfile', 'src/api/.dockerignore') }}-
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push Docker image API
run: |
docker buildx build --platform linux/amd64,linux/arm64 --push -t ${{ env.IMAGE_NAME }}:api-${{ needs.determine-version.outputs.new_version }} --cache-from=type=local,src=/tmp/.buildx-cache --cache-to=type=local,dest=/tmp/.buildx-cache,mode=max ./src/api
build-and-push-docker-job:
runs-on: ubuntu-latest
needs: determine-version
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
install: true
- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ hashFiles('src/Dockerfile', 'src/.dockerignore') }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-${{ hashFiles('src/Dockerfile', 'src/.dockerignore') }}-
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push Docker image Job
run: |
docker buildx build --platform linux/amd64,linux/arm64 --push -t ${{ env.IMAGE_NAME }}:job-${{ needs.determine-version.outputs.new_version }} --cache-from=type=local,src=/tmp/.buildx-cache --cache-to=type=local,dest=/tmp/.buildx-cache,mode=max ./src
publish-helm-chart:
runs-on: ubuntu-latest
needs:
- build-and-push-docker-api
- build-and-push-docker-job
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Install Helm
uses: azure/setup-helm@v3
with:
version: v3.11.1
- name: Package Helm char
run: |
version=$(cat ${{ env.CHART_PATH }}/Chart.yaml | version : "${{ needs.determine-version.outputs.new_version }}" | version without quotes : ${{ needs.determine-version.outputs.new_version }}')
helm package opensource --version "${{ needs.determine-version.outputs.new_version }}"
- name: Push Helm chart to Docker Hub
run: |
helm push $(ls *.tgz) oci://registry-1.docker.io/bouyguestelecom