Separate version check from action

This commit is contained in:
MartinBraquet
2026-02-26 16:52:24 +01:00
parent ddd5cd6823
commit 263e38f23e
2 changed files with 39 additions and 34 deletions

View File

@@ -7,18 +7,17 @@ on:
- '.github/workflows/cd-api.yml'
jobs:
deploy:
name: Deploy
check-version:
name: Check Version
runs-on: ubuntu-latest
outputs:
changed: ${{ steps.check.outputs.changed }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # we need full history for git log
- name: Install jq
run: sudo apt-get install -y jq
fetch-depth: 2
- name: Read current version
id: current
@@ -29,7 +28,6 @@ jobs:
- name: Read previous version
id: previous
run: |
# Get previous commits package.json (if it existed)
if git show HEAD^:backend/api/package.json >/dev/null 2>&1; then
previous=$(git show HEAD^:backend/api/package.json | jq -r '.version')
else
@@ -37,60 +35,61 @@ jobs:
fi
echo "version=$previous" >> $GITHUB_OUTPUT
- name: Check version change
- name: Compare versions
id: check
run: |
echo "current=${{ steps.current.outputs.version }}"
echo "previous=${{ steps.previous.outputs.version }}"
if [ "${{ steps.current.outputs.version }}" = "${{ steps.previous.outputs.version }}" ]; then
echo "Version unchanged. Skipping deploy."
echo "changed=false" >> $GITHUB_OUTPUT
else
echo "changed=true" >> $GITHUB_OUTPUT
fi
deploy:
name: Deploy
runs-on: ubuntu-latest
needs: check-version
if: needs.check-version.outputs.changed == 'true'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
if: steps.check.outputs.changed == 'true'
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Install dependencies
if: steps.check.outputs.changed == 'true'
run: yarn install
- name: Authenticate to GCP
if: steps.check.outputs.changed == 'true'
uses: google-github-actions/auth@v2
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}
- name: Install gcloud CLI
if: steps.check.outputs.changed == 'true'
uses: google-github-actions/setup-gcloud@v2
with:
project_id: compass-130ba
- name: Configure Docker for Artifact Registry
if: steps.check.outputs.changed == 'true'
run: |
gcloud auth configure-docker us-west1-docker.pkg.dev --quiet
run: gcloud auth configure-docker us-west1-docker.pkg.dev --quiet
- name: Install Tofu (Terraform)
if: steps.check.outputs.changed == 'true'
run: |
sudo apt-get update
sudo apt-get install -y wget unzip
LATEST=https://github.com/opentofu/opentofu/releases/download/v1.10.5/tofu_1.10.5_linux_amd64.zip
curl -LO "$LATEST"
unzip -o tofu_*_linux_amd64.zip
sudo mv tofu /usr/local/bin/
rm tofu_*_linux_amd64.zip
echo "OpenTofu version: $(tofu version)"
cd backend/api || exit 1
cd backend/api
tofu init
- name: Run deploy script
if: steps.check.outputs.changed == 'true'
run: |
chmod +x backend/api/deploy-api.sh
backend/api/deploy-api.sh
backend/api/deploy-api.sh