diff --git a/.github/workflows/update_production.yml b/.github/workflows/update_production.yml new file mode 100644 index 00000000..b3c87bff --- /dev/null +++ b/.github/workflows/update_production.yml @@ -0,0 +1,56 @@ +name: Trigger production deployment + +on: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + +defaults: + run: + shell: bash + +jobs: + tag-image: + runs-on: ubuntu-latest + env: + IMAGE_URL: europe-west1-docker.pkg.dev/angle-artifacts/angle-docker-registry/merkl-app + steps: + - uses: 'google-github-actions/auth@v0' + with: + credentials_json: '${{ secrets.GCLOUD_SECRET_ARTIFACTS }}' + - name: Login to Docker + run: gcloud auth configure-docker europe-west1-docker.pkg.dev + - name: Pull and tag image + run: | + export SHORT_SHA=${GITHUB_SHA:0:7} + export VERSION=${GITHUB_REF#refs/tags/} + docker pull $IMAGE_URL:$SHORT_SHA + docker tag $IMAGE_URL:$SHORT_SHA $IMAGE_URL:$VERSION + docker push $IMAGE_URL:$VERSION + trigger-production-deployment: + runs-on: ubuntu-latest + needs: tag-image + steps: + - name: Install dependencies + run: | + sudo snap install yq + - name: Clone deployments repo + uses: actions/checkout@v3 + with: + repository: AngleProtocol/deployments + token: ${{ secrets.ACCESS_TOKEN }} + path: deployments + - name: Modify config.production.yaml and push to deployments + run: | + cd deployments + + export VERSION=${GITHUB_REF#refs/tags/} + yq -i '.merkl-app.version = strenv(VERSION)' ./config.production.yaml + + git config --global user.email "baptiste@angle.money" + git config --global user.name "BaptistG" + + git add ./config.production.yaml + git commit -m "Update config.production.yaml with merkl-app version $VERSION" + + git push \ No newline at end of file diff --git a/.github/workflows/update_staging.yml b/.github/workflows/update_staging.yml new file mode 100644 index 00000000..0d47d5d8 --- /dev/null +++ b/.github/workflows/update_staging.yml @@ -0,0 +1,68 @@ +name: Build image and trigger staging deployment + +on: + workflow_dispatch: + push: + branches: + - main + +defaults: + run: + shell: bash + +jobs: + build-image: + runs-on: ubuntu-latest + env: + IMAGE_URL: europe-west1-docker.pkg.dev/angle-artifacts/angle-docker-registry/merkl-app + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + token: '${{ secrets.ACCESS_TOKEN }}' + - uses: actions/setup-node@v3 + with: + node-version: 18 + - uses: 'google-github-actions/auth@v0' + with: + credentials_json: '${{ secrets.GCLOUD_SECRET_ARTIFACTS }}' + - name: Login to Docker + run: gcloud auth configure-docker europe-west1-docker.pkg.dev + - name: Build image + run: | + export SHORT_SHA=${GITHUB_SHA:0:7} + docker pull $IMAGE_URL:latest || true + docker build --cache-from $IMAGE_URL:latest --tag $IMAGE_URL:$SHORT_SHA --tag $IMAGE_URL:latest . + - name: Push image + run: | + export SHORT_SHA=${GITHUB_SHA:0:7} + docker push $IMAGE_URL:$SHORT_SHA + + trigger-staging-deployment: + runs-on: ubuntu-latest + needs: build-image + steps: + - name: Install dependencies + run: | + sudo snap install yq + - name: Clone deployments repo + uses: actions/checkout@v3 + with: + repository: AngleProtocol/deployments + token: ${{ secrets.ACCESS_TOKEN }} + path: deployments + - name: Modify config.staging.yaml and push to deployments + run: | + cd deployments + + export SHORT_SHA=${GITHUB_SHA:0:7} + + yq -i '.merkl-app.version = strenv(SHORT_SHA)' ./config.staging.yaml + + git config --global user.email "baptiste@angle.money" + git config --global user.name "BaptistG" + + git add ./config.staging.yaml + git commit -m "Update config.staging.yaml with merkl-app version $SHORT_SHA" + + git push \ No newline at end of file