Skip to content

Commit

Permalink
fix release creation in CI CD
Browse files Browse the repository at this point in the history
  • Loading branch information
JeromeBu committed Mar 20, 2024
1 parent cf26274 commit 003ae1f
Showing 1 changed file with 127 additions and 126 deletions.
253 changes: 127 additions & 126 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,138 +8,138 @@ on:
- main

jobs:
validations:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
- uses: bahmutov/npm-install@v1
- name: Build back
run: cd api && yarn build
- name: Fullcheck
run: yarn fullcheck
# validations:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-node@v4
# with:
# node-version: "20"
# - uses: bahmutov/npm-install@v1
# - name: Build back
# run: cd api && yarn build
# - name: Fullcheck
# run: yarn fullcheck
##
# check_if_version_upgraded:
# name: Check if version upgrade
# if: github.event_name == 'push'
# runs-on: ubuntu-latest
# needs: validations
# outputs:
# from_version: ${{ steps.step1.outputs.from_version }}
# to_version: ${{ steps.step1.outputs.to_version }}
# is_upgraded_version: ${{ steps.step1.outputs.is_upgraded_version }}
# steps:
# - uses: garronej/ts-ci@v2.1.0
# id: step1
# with:
# action_name: is_package_json_version_upgraded
#
check_if_version_upgraded:
name: Check if version upgrade
if: github.event_name == 'push'
runs-on: ubuntu-latest
needs: validations
outputs:
from_version: ${{ steps.step1.outputs.from_version }}
to_version: ${{ steps.step1.outputs.to_version }}
is_upgraded_version: ${{ steps.step1.outputs.is_upgraded_version }}
steps:
- uses: garronej/ts-ci@v2.1.0
id: step1
with:
action_name: is_package_json_version_upgraded

create_tag:
name: Create version tag
runs-on: ubuntu-latest
needs:
- check_if_version_upgraded
if: needs.check_if_version_upgraded.outputs.is_upgraded_version == 'true'
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Create tag
run: |
git config --local user.email "actions@github.com"
git config --local user.name "GitHub Actions"
git tag -a v${{ needs.check_if_version_upgraded.outputs.to_version }} -m "Deployment tag for v${{ needs.check_if_version_upgraded.outputs.to_version }}"
git push --tags
docker:
runs-on: ubuntu-latest
needs:
- check_if_version_upgraded
steps:
- uses: actions/checkout@v4
- uses: docker/setup-qemu-action@v3
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Computing Docker image tags
id: step1
env:
TO_VERSION: test-${{ needs.check_if_version_upgraded.outputs.to_version }}
run: |
OUT_API=codegouvfr/sill-api:$TO_VERSION
OUT_API=$(echo "$OUT_API" | awk '{print tolower($0)}')
echo ::set-output name=docker_api_tags::$OUT_API
OUT_WEB=codegouvfr/sill-web:$TO_VERSION
OUT_WEB=$(echo "$OUT_WEB" | awk '{print tolower($0)}')
echo ::set-output name=docker_web_tags::$OUT_WEB
- uses: docker/build-push-action@v5
with:
push: true
context: .
target: api
tags: ${{ steps.step1.outputs.docker_api_tags }}
- uses: docker/build-push-action@v5
with:
push: true
context: .
target: web
tags: ${{ steps.step1.outputs.docker_web_tags }}

poke_gitops:
name: "Poke gitops"
runs-on: ubuntu-latest
needs:
- docker
steps:
- uses: peter-evans/repository-dispatch@v3
with:
token: ${{ secrets.PAT_PRIVATE_REPO_DISPATCH }}
event-type: update_sill_api
repository: codegouvfr/paris-sspcloud
- uses: peter-evans/repository-dispatch@v3
with:
token: ${{ secrets.PAT_PRIVATE_REPO_DISPATCH }}
event-type: update_sill_web
repository: codegouvfr/paris-sspcloud

trigger_production_deploy:
name: "Trigger production deploy"
runs-on: ubuntu-latest
environment: production
concurrency:
group: deploy-to-production
cancel-in-progress: true
needs:
- docker
- poke_gitops
steps:
- run: echo "Triggering production deploy (TODO)"
# create_tag:
# name: Create version tag
# runs-on: ubuntu-latest
# needs:
# - check_if_version_upgraded
# if: needs.check_if_version_upgraded.outputs.is_upgraded_version == 'true'
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# - name: Create tag
# run: |
# git config --local user.email "actions@github.com"
# git config --local user.name "GitHub Actions"
# git tag -a v${{ needs.check_if_version_upgraded.outputs.to_version }} -m "Deployment tag for v${{ needs.check_if_version_upgraded.outputs.to_version }}"
# git push --tags
#
# docker:
# runs-on: ubuntu-latest
# needs:
# - check_if_version_upgraded
# steps:
# - uses: actions/checkout@v4
# - uses: docker/setup-qemu-action@v3
# - uses: docker/setup-buildx-action@v3
# - uses: docker/login-action@v3
# with:
# username: ${{ secrets.DOCKERHUB_USERNAME }}
# password: ${{ secrets.DOCKERHUB_TOKEN }}
# - name: Computing Docker image tags
# id: step1
# env:
# TO_VERSION: test-${{ needs.check_if_version_upgraded.outputs.to_version }}
# run: |
# OUT_API=codegouvfr/sill-api:$TO_VERSION
# OUT_API=$(echo "$OUT_API" | awk '{print tolower($0)}')
# echo ::set-output name=docker_api_tags::$OUT_API
#
# OUT_WEB=codegouvfr/sill-web:$TO_VERSION
# OUT_WEB=$(echo "$OUT_WEB" | awk '{print tolower($0)}')
# echo ::set-output name=docker_web_tags::$OUT_WEB
#
# - uses: docker/build-push-action@v5
# with:
# push: true
# context: .
# target: api
# tags: ${{ steps.step1.outputs.docker_api_tags }}
# - uses: docker/build-push-action@v5
# with:
# push: true
# context: .
# target: web
# tags: ${{ steps.step1.outputs.docker_web_tags }}
#
# poke_gitops:
# name: "Poke gitops"
# runs-on: ubuntu-latest
# needs:
# - docker
# steps:
# - uses: peter-evans/repository-dispatch@v3
# with:
# token: ${{ secrets.PAT_PRIVATE_REPO_DISPATCH }}
# event-type: update_sill_api
# repository: codegouvfr/paris-sspcloud
# - uses: peter-evans/repository-dispatch@v3
# with:
# token: ${{ secrets.PAT_PRIVATE_REPO_DISPATCH }}
# event-type: update_sill_web
# repository: codegouvfr/paris-sspcloud
#
# trigger_production_deploy:
# name: "Trigger production deploy"
# runs-on: ubuntu-latest
# environment: production
# concurrency:
# group: deploy-to-production
# cancel-in-progress: true
# needs:
# - docker
# - poke_gitops
# steps:
# - run: echo "Triggering production deploy (TODO)"


create_github_release:
name: "Create release notes"
runs-on: ubuntu-latest
needs:
- trigger_production_deploy
- check_if_version_upgraded
- create_tag
# needs:
# - trigger_production_deploy
# - check_if_version_upgraded
# - create_tag
# We create a release only when all of the above are validated:
# - we are on default branch
# - version has been upgraded
# - we push to production
if: |
needs.check_if_version_upgraded.outputs.is_upgraded_version == 'true' &&
(
github.event_name == 'push' ||
needs.check_if_version_upgraded.outputs.is_release_beta == 'true'
)
# if: |
# needs.check_if_version_upgraded.outputs.is_upgraded_version == 'true' &&
# (
# github.event_name == 'push' ||
# needs.check_if_version_upgraded.outputs.is_release_beta == 'true'
# )
env:
TO_VERSION: ${{ needs.check_if_version_upgraded.outputs.to_version }}
TO_VERSION: 1.42.1
steps:
- name: Get tag of latest release
id: get-latest-release-tag
Expand All @@ -159,18 +159,19 @@ jobs:
const releaseNotes = await github.request(`POST /repos/${{ github.repository }}/releases/generate-notes`, {
tag_name: `v${{ env.TO_VERSION }}`,
previous_tag_name: `${{steps.get-latest-release-tag.outputs.result}}` })
return releaseNotes.data
core.setOutput("name", releaseNotes.data.name);
core.setOutput("body", releaseNotes.data.body);
- name: Create release notes on github
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const tag = `v${{ env.TO_VERSION }}`;
console.log('name : ', `${{fromJson(needs.generate-release-notes.outputs.release-notes).name}}`)
console.log('body : ', `${{fromJson(needs.generate-release-notes.outputs.release-notes).body}}`)
console.log('name : ', `${{ steps.generate-release-notes.outputs.name }}`)
console.log('body : ', `${{ steps.generate-release-notes.outputs.body }}`)
console.log('tag : ', tag )
await github.request(`POST /repos/${{ github.repository }}/releases`, {
tag_name: `v${{ env.TO_VERSION }}`,
name: `${{fromJson(needs.generate-release-notes.outputs.release-notes).name}}`,
body: `${{fromJson(needs.generate-release-notes.outputs.release-notes).body}}`})
name: `${{ steps.generate-release-notes.outputs.name }}`,
body: `${{ steps.generate-release-notes.outputs.body }}`})

0 comments on commit 003ae1f

Please sign in to comment.