Skip to content

move go pattern to other languages #1

move go pattern to other languages

move go pattern to other languages #1

name: Common Build and Deploy to Prod
on:
workflow_call:
inputs:
needs_build:
description: 'Whether to build or not'
required: true
type: boolean
default: false
needs_export:
required: false
type: boolean
default: false
install_command:
description: 'Command to run to install dependencies'
type: string
required: false
cloud_deploy:
required: true
type: boolean
default: false
skip_deploy:
required: false
type: boolean
default: false
env:
required: false
type: string
default: quai-prod
build_command:
description: 'Command to run to build'
type: string
required: false
needs_docker:
required: false
type: boolean
default: false
include_chart:
required: false
type: boolean
default: false
name_override:
required: false
type: string
gcp_project_id:
required: false
type: string
token_secret_name:
required: false
type: string
update_version:
required: false
type: boolean
default: true
secrets:
GH_PAT:
description: 'needed for github login'
required: true
DOCKER:
description: 'needed for registry login'
required: false
KUBE_CONFIG:
description: 'needed for kube setup'
required: false
BUILD_ARGS:
description: 'needed for build args'
required: false
DOCKER_BUILD_ARGS:
description: 'needed for docker build args'
required: false
GPG_PRIVATE_KEY:
description: 'needed for gpg signing'
required: false
GPG_KEY_ID:
description: 'needed for gpg signing'
required: false
GH_GCP_TOKEN:
description: 'needed for gcp login'
required: false
jobs:
detect-language:
runs-on: ubuntu-latest
outputs:
language: ${{ env.detected-language }}
steps:
- uses: actions/checkout@v2
- name: Detect Language
id: set-language
run: |
if [[ -f "package.json" && ! -f "tsconfig.json" ]]; then
echo "detected-language=javascript" >> $GITHUB_ENV
echo "detected-language=javascript"
elif [[ -f "tsconfig.json" ]]; then
echo "detected-language=typescript" >> $GITHUB_ENV
elif [[ -f "go.mod" ]]; then
echo "detected-language=go" >> $GITHUB_ENV
elif [[ -f "mix.exs" ]]; then
echo "detected-language=elixir" >> $GITHUB_ENV
else
echo "detected-language=unknown" >> $GITHUB_ENV
fi
echo "testing"
createProdTagJS:
needs: detect-language
runs-on: ubuntu-latest
if: needs.detect-language.outputs.language == 'javascript'
steps:
- uses: actions/checkout@v3
with:
ssh-key: ${{ secrets.GH_PAT }}
- name: Import GPG Key
if: ${{ inputs.update_version }}
env:
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
run: |
echo "$GPG_PRIVATE_KEY" | gpg --import
git config --global user.signingkey $GPG_KEY_ID
- name: Set Repo Name
run: |
repo_name=$(basename ${{ github.repository }})
if [ -n "${{ inputs.name_override }}" ]; then
repo_name=${{ inputs.name_override }}
fi
echo "REPO_NAME=$repo_name" >> $GITHUB_ENV
- name: Set Repo Name in Camel Case
run: |
repo_name=$(basename ${{ github.repository }})
if [ -n "${{ inputs.name_override }}" ]; then
repo_name=${{ inputs.name_override }}
fi
camel_case_name=$(echo $repo_name | awk -F- '{for(i=2; i<=NF; i++) $i=toupper(substr($i,1,1)) substr($i,2); }1' OFS="")
echo "CAMEL_CASE_REPO_NAME=$camel_case_name" >> $GITHUB_ENV
- name: Install Volta
run: |
curl -sSLf https://get.volta.sh | bash
echo "$HOME/.volta/bin" >> $GITHUB_PATH
- name: Log Node and Npm Versions
run: |
echo node version $(node -v)
echo npm version $(npm -v)
- name: install semver globally
if: ${{ inputs.update_version }}
run: npm install -g semver
- name: Update Version
if: ${{ inputs.update_version }}
run: |
jq --arg new_version "v$(semver -i patch $(jq -r '.version' package.json | sed 's/^v//'))" '.version = $new_version' package.json > temp.json && mv temp.json package.json
NEW_VERSION = $(jq -r '.version' package.json)
echo "VERSION=$NEW_VERSION" >> $GITHUB_ENV
- name: Update Chart.yaml version
run: yq eval -i ".appVersion=\"${{ env.VERSION }}\"" ./helm/Chart.yaml
- name: Update values.yaml version
run: yq eval -i ".${{ env.CAMEL_CASE_REPO_NAME }}.image.version=\"${{ env.VERSION }}\"" ./helm/values.yaml
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: "Prod Release ${{ env.VERSION }}"
branch: ${{ github.ref }}
createProdTagTS:
needs: detect-language
runs-on: ubuntu-latest
if: needs.detect-language.outputs.language == 'typescript'
steps:
- uses: actions/checkout@v3
with:
ssh-key: ${{ secrets.GH_PAT }}
- name: Import GPG Key
if: ${{ inputs.update_version }}
env:
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
run: |
echo "$GPG_PRIVATE_KEY" | gpg --import
git config --global user.signingkey $GPG_KEY_ID
- name: Set Repo Name
run: |
repo_name=$(basename ${{ github.repository }})
if [ -n "${{ inputs.name_override }}" ]; then
repo_name=${{ inputs.name_override }}
fi
echo "REPO_NAME=$repo_name" >> $GITHUB_ENV
- name: Set Repo Name in Camel Case
run: |
repo_name=$(basename ${{ github.repository }})
if [ -n "${{ inputs.name_override }}" ]; then
repo_name=${{ inputs.name_override }}
fi
camel_case_name=$(echo $repo_name | awk -F- '{for(i=2; i<=NF; i++) $i=toupper(substr($i,1,1)) substr($i,2); }1' OFS="")
echo "CAMEL_CASE_REPO_NAME=$camel_case_name" >> $GITHUB_ENV
- name: Install Volta
run: |
curl -sSLf https://get.volta.sh | bash
echo "$HOME/.volta/bin" >> $GITHUB_PATH
- name: Log Node and Npm Versions
run: |
echo node version $(node -v)
echo npm version $(npm -v)
- name: install semver globally
if: ${{ inputs.update_version }}
run: npm install -g semver
- name: Update Version
if: ${{ inputs.update_version }}
run: |
jq --arg new_version "v$(semver -i patch $(jq -r '.version' package.json | sed 's/^v//'))" '.version = $new_version' package.json > temp.json && mv temp.json package.json
NEW_VERSION = $(jq -r '.version' package.json)
echo "VERSION=$NEW_VERSION" >> $GITHUB_ENV
- name: Update Chart.yaml version
run: yq eval -i ".appVersion=\"${{ env.VERSION }}\"" ./helm/Chart.yaml
- name: Update values.yaml version
run: yq eval -i ".${{ env.CAMEL_CASE_REPO_NAME }}.image.version=\"${{ env.VERSION }}\"" ./helm/values.yaml
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: "Prod Release ${{ env.VERSION }}"
branch: ${{ github.ref }}
createProdTagGo:
needs: detect-language
runs-on: ubuntu-latest
if: needs.detect-language.outputs.language == 'go'
steps:
- uses: actions/checkout@v3
with:
ssh-key: ${{ secrets.GH_PAT }}
# - name: Import GPG Key
# env:
# GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
# GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
# run: |
# echo "$GPG_PRIVATE_KEY" | gpg --import
# git config --global user.signingkey $GPG_KEY_ID
# git config --global commit.gpgsign true
- name: Set Repo Name
run: |
repo_name=$(basename ${{ github.repository }})
if [ -n "${{ inputs.name_override }}" ]; then
repo_name=${{ inputs.name_override }}
fi
echo "REPO_NAME=$repo_name" >> $GITHUB_ENV
- name: Set Repo Name in Camel Case
run: |
repo_name=$(basename ${{ github.repository }})
if [ -n "${{ inputs.name_override }}" ]; then
repo_name=${{ inputs.name_override }}
fi
camel_case_name=$(echo $repo_name | awk -F- '{for(i=2; i<=NF; i++) $i=toupper(substr($i,1,1)) substr($i,2); }1' OFS="")
echo "CAMEL_CASE_REPO_NAME=$camel_case_name" >> $GITHUB_ENV
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '20' # This will install the latest stable Node.js version
- name: Log Node and Npm Versions
run: |
echo node version $(node -v)
echo npm version $(npm -v)
- name: install semver globally
run: npm install -g semver
- name: Update Version
run: |
echo "v$(semver -i patch $(sed 's/^v//' VERSION))" > VERSION
echo "VERSION=$(cat VERSION)" >> $GITHUB_ENV
- name: Update Chart.yaml version
if: ${{ inputs.include_chart }}
run: yq eval -i ".appVersion=\"${{ env.VERSION }}\"" ./helm/Chart.yaml
- name: Update values.yaml version
if: ${{ inputs.include_chart }}
run: yq eval -i ".${{ env.CAMEL_CASE_REPO_NAME }}.image.version=\"${{ env.VERSION }}\"" ./helm/values.yaml
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: "Prod Release ${{ env.VERSION }}"
branch: ${{ github.ref }}
buildDeployProdJS:
needs: [createProdTagJS]
uses: ./.github/workflows/build-deploy-js.yml
secrets:
DOCKER: ${{ secrets.DOCKER }}
GH_PAT: ${{ secrets.GH_PAT }}
KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
DOCKER_BUILD_ARGS: ${{ secrets.DOCKER_BUILD_ARGS }}
BUILD_ARGS: ${{ secrets.BUILD_ARGS }}
GH_GCP_TOKEN: ${{ secrets.GH_GCP_TOKEN }}
with:

Check failure on line 318 in .github/workflows/deploy-prod-common.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/deploy-prod-common.yml

Invalid workflow file

You have an error in your yaml syntax on line 318
env: ${{ inputs.env }}
update_version_command: npm version prepatch --preid=rc --no-git-tag-version
rails: '[[ ! "$VERSION" =~ "rc" ]] && [[ ! "$VERSION" =~ "pre" ]]'
update_version: {{ inputs.update_version }}}
cloud_deploy: ${{ inputs.cloud_deploy }}
needs_build: ${{ inputs.needs_build }}
needs_export: ${{ inputs.needs_export }}
install_command: ${{ inputs.install_command }}
skip_deploy: ${{ inputs.skip_deploy }}
name_override: ${{ inputs.name_override }}
gcp_project_id: ${{ inputs.gcp_project_id }}
token_secret_name: ${{ inputs.token_secret_name }}
buildDeployProdTS:
needs: [createProdTagTS]
uses: ./.github/workflows/build-deploy-ts.yml
secrets:
DOCKER: ${{ secrets.DOCKER }}
GH_PAT: ${{ secrets.GH_PAT }}
KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
DOCKER_BUILD_ARGS: ${{ secrets.DOCKER_BUILD_ARGS }}
BUILD_ARGS: ${{ secrets.BUILD_ARGS }}
GH_GCP_TOKEN: ${{ secrets.GH_GCP_TOKEN }}
with:
env: ${{ inputs.env }}
update_version_command: npm version prepatch --preid=rc --no-git-tag-version
rails: '[[ ! "$VERSION" =~ "rc" ]] && [[ ! "$VERSION" =~ "pre" ]]'
update_version: {{ inputs.update_version }}}
cloud_deploy: ${{ inputs.cloud_deploy }}
needs_build: ${{ inputs.needs_build }}
needs_export: ${{ inputs.needs_export }}
install_command: ${{ inputs.install_command }}
skip_deploy: ${{ inputs.skip_deploy }}
name_override: ${{ inputs.name_override }}
gcp_project_id: ${{ inputs.gcp_project_id }}
token_secret_name: ${{ inputs.token_secret_name }}
buildDeployProdGo:
needs: [createProdTagGo]
uses: ./.github/workflows/build-deploy-go.yml
secrets:
DOCKER: ${{ secrets.DOCKER }}
GH_PAT: ${{ secrets.GH_PAT }}
KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
DOCKER_BUILD_ARGS: ${{ secrets.DOCKER_BUILD_ARGS }}
BUILD_ARGS: ${{ secrets.BUILD_ARGS }}
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
GH_GCP_TOKEN: ${{ secrets.GH_GCP_TOKEN }}
with:
env: ${{ inputs.env }}
update_version_command: "echo \"v$(semver -i prepatch $(sed 's/^v//' VERSION) --preid=rc)\" > VERSION"
rails: '[[ ! "$VERSION" =~ "rc" ]] && [[ ! "$VERSION" =~ "pre" ]]'
update_version: true
cloud_deploy: ${{ inputs.cloud_deploy }}
needs_build: ${{ inputs.needs_build }}
install_command: ${{ inputs.install_command }}
skip_deploy: ${{ inputs.skip_deploy }}
build_command: ${{ inputs.build_command }}
needs_docker: ${{ inputs.needs_docker }}
include_chart: ${{ inputs.include_chart }}
name_override: ${{ inputs.name_override }}
gcp_project_id: ${{ inputs.gcp_project_id }}
token_secret_name: ${{ inputs.token_secret_name }}