Default #6158
Workflow file for this run
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: Default | |
on: | |
merge_group: | |
push: | |
branches: | |
- main | |
- releases/* | |
pull_request: | |
types: [ assigned, opened, synchronize, reopened, labeled ] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
Dirty: | |
runs-on: "formance-runner" | |
steps: | |
- uses: 'actions/checkout@v4' | |
with: | |
fetch-depth: 0 | |
- name: Setup Env | |
uses: ./.github/actions/env | |
- run: > | |
earthly | |
--allow-privileged --auto-skip | |
--secret SPEAKEASY_API_KEY=$SPEAKEASY_API_KEY | |
${{ contains(github.event.pull_request.labels.*.name, 'no-cache') && '--no-cache' || '' }} | |
+pre-commit | |
env: | |
SPEAKEASY_API_KEY: ${{ secrets.SPEAKEASY_API_KEY }} | |
- name: Get changed files | |
id: changed-files | |
shell: bash | |
run: | | |
hasChanged=$(git status --porcelain) | |
if (( $(echo ${#hasChanged}) != 0 )); then | |
git status | |
echo "There are changes in the repository" | |
exit 1 | |
fi | |
Tests: | |
runs-on: "formance-runner" | |
needs: | |
- Dirty | |
steps: | |
- uses: 'actions/checkout@v4' | |
with: | |
fetch-depth: 0 | |
- name: Setup Env | |
uses: ./.github/actions/env | |
- run: > | |
earthly | |
--no-output --auto-skip | |
--allow-privileged | |
--secret SPEAKEASY_API_KEY=$SPEAKEASY_API_KEY | |
${{ contains(github.event.pull_request.labels.*.name, 'no-cache') && '--no-cache' || '' }} | |
+tests | |
env: | |
SPEAKEASY_API_KEY: ${{ secrets.SPEAKEASY_API_KEY }} | |
TestsIntegration: | |
runs-on: "formance-runner" | |
needs: | |
- Dirty | |
steps: | |
- uses: 'actions/checkout@v4' | |
with: | |
fetch-depth: 0 | |
- name: Setup Env | |
uses: ./.github/actions/env | |
- run: > | |
earthly | |
--no-output --auto-skip | |
--allow-privileged | |
--secret SPEAKEASY_API_KEY=$SPEAKEASY_API_KEY | |
${{ contains(github.event.pull_request.labels.*.name, 'no-cache') && '--no-cache' || '' }} | |
+tests-integration | |
env: | |
SPEAKEASY_API_KEY: ${{ secrets.SPEAKEASY_API_KEY }} | |
Extract: | |
name: Extract | |
runs-on: "ubuntu-latest" | |
outputs: | |
components: ${{ steps.extract.outputs.components }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: Extract service name | |
id: extract | |
run: echo "components=$(node .github/actions/find-directory/index.js)" >> $GITHUB_OUTPUT | |
GoReleaser: | |
runs-on: "ubuntu-latest" | |
if: contains(github.event.pull_request.labels.*.name, 'build-images') || github.ref == 'refs/heads/main' || github.event_name == 'merge_group' | |
needs: | |
- Extract | |
strategy: | |
matrix: | |
components: ${{ fromJson(needs.Extract.outputs.components) }} | |
steps: | |
- uses: earthly/actions-setup@v1 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
version: "latest" | |
- uses: 'actions/checkout@v4' | |
with: | |
fetch-depth: 0 | |
- name: Setup Env | |
uses: ./.github/actions/env | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: "NumaryBot" | |
password: ${{ secrets.NUMARY_GITHUB_TOKEN }} | |
- run: > | |
earthly | |
--no-output | |
--allow-privileged | |
--secret SPEAKEASY_API_KEY=$SPEAKEASY_API_KEY | |
--secret GITHUB_TOKEN=$GITHUB_TOKEN | |
--secret FURY_TOKEN=$FURY_TOKEN | |
--secret GORELEASER_KEY=$GORELEASER_KEY | |
${{ contains(github.event.pull_request.labels.*.name, 'no-cache') && '--no-cache' || '' }} | |
+goreleaser --path=${{ matrix.components }} --mode=ci | |
env: | |
GITHUB_TOKEN: ${{ secrets.NUMARY_GITHUB_TOKEN }} | |
SPEAKEASY_API_KEY: ${{ secrets.SPEAKEASY_API_KEY }} | |
FURY_TOKEN: ${{ secrets.FURY_TOKEN }} | |
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} | |
Deploy: | |
runs-on: "ubuntu-latest" | |
if: github.ref == 'refs/heads/main' | |
needs: | |
- GoReleaser | |
- Tests | |
- TestsIntegration | |
steps: | |
- uses: earthly/actions-setup@v1 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
version: "latest" | |
- uses: 'actions/checkout@v4' | |
with: | |
fetch-depth: 0 | |
- name: Tailscale | |
uses: tailscale/github-action@v2 | |
with: | |
oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }} | |
oauth-secret: ${{ secrets.TS_OAUTH_SECRET }} | |
tags: tag:ci | |
- name: "staging-regions: Sset Operator, Agent, Modules tags" | |
env: | |
# Only Region deployment need the token in order to deploy with argocd | |
ARGOCD_REGION_AUTH_TOKEN: ${{ secrets.ARGOCD_REGION_AUTH_TOKEN }} | |
# Only for module | |
STAGING_CLUSTER_KUBECONTEXT_NAME: ${{ secrets.STAGING_CLUSTER_KUBECONTEXT_NAME }} | |
STAGING_CLUSTER_NAME: ${{ secrets.STAGING_CLUSTER_NAME }} | |
STAGING_CLUSTER_REGION: ${{ secrets.STAGING_CLUSTER_REGION }} | |
TAG: ${{ github.sha }} | |
run: > | |
earthly | |
--no-output | |
--secret AUTH_TOKEN=$ARGOCD_REGION_AUTH_TOKEN | |
+staging-application-set | |
--TAG=$TAG | |
- name: "staging-regions: Sync" | |
env: | |
# Only Region deployment need the token in order to deploy with argocd | |
ARGOCD_REGION_AUTH_TOKEN: ${{ secrets.ARGOCD_REGION_AUTH_TOKEN }} | |
STAGING_CLUSTER_KUBECONTEXT_NAME: ${{ secrets.STAGING_CLUSTER_KUBECONTEXT_NAME }} | |
STAGING_CLUSTER_NAME: ${{ secrets.STAGING_CLUSTER_NAME }} | |
STAGING_CLUSTER_REGION: ${{ secrets.STAGING_CLUSTER_REGION }} | |
TAG: ${{ github.sha }} | |
run: > | |
earthly | |
--no-output | |
--secret AUTH_TOKEN=$ARGOCD_REGION_AUTH_TOKEN | |
+staging-application-sync | |
--TAG=$TAG |