Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 34 additions & 36 deletions .github/workflows/build-test-pubtodockerhub.yml
Original file line number Diff line number Diff line change
@@ -1,47 +1,45 @@
name: "build-test-pubtodockerhub"
name: 'build-test-pubtodockerhub'

# IMPORTANT : personnalisez cette variable pour que les images
# de votre application soient pousées sur dockerhub
# dans le repository ayant ce nom
# exemple, si vous indiquez : abesesr/periscope-front
# alors l'image sera poussée sur https://hub.docker.com/r/abesesr/periscope-front
env:
DOCKERHUB_IMAGE_PREFIX: abesesr/periscope
DOCKERHUB_IMAGE_PREFIX: abesesr/periscope

on:
push:
paths-ignore:
- '**.md'
- '.github/**'
workflow_dispatch:
push:
paths-ignore:
- '**.md'
- '.github/**'
workflow_dispatch:

jobs:
build-test-pubtodockerhub:
runs-on: ubuntu-latest
steps:


- name: "Build: checkout source code"
uses: actions/checkout@v3
- name: "Build: build docker image"
run: |
docker build . -t localimage:latest
- name: "Push: prepare version from git tags/branchs"
id: docker_tag_meta
uses: docker/metadata-action@v5
with:
images: ${{ env.DOCKERHUB_IMAGE_PREFIX }}
- name: "Push: login to DockerHub"
if: github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/tags/'))
run: |
echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin
- name: "Push: push docker image"
if: github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/tags/'))
run: |
DOCKER_TAGS="${{ steps.docker_tag_meta.outputs.tags }}"
for DOCKER_TAG in $DOCKER_TAGS
do
# publication de l'image pour le front
docker build . --target front-image -t ${DOCKER_TAG}-front
docker push ${DOCKER_TAG}-front
done
build-test-pubtodockerhub:
runs-on: ubuntu-latest
steps:
- name: 'Build: checkout source code'
uses: actions/checkout@v3
- name: 'Build: build docker image'
run: |
docker build . -t localimage:latest
- name: 'Push: prepare version from git tags/branchs'
id: docker_tag_meta
uses: docker/metadata-action@v5
with:
images: ${{ env.DOCKERHUB_IMAGE_PREFIX }}
- name: 'Push: login to DockerHub'
if: github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/tags/'))
run: |
echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin
- name: 'Push: push docker image'
if: github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/tags/'))
run: |
DOCKER_TAGS="${{ steps.docker_tag_meta.outputs.tags }}"
for DOCKER_TAG in $DOCKER_TAGS
do
# publication de l'image pour le front
docker build . --target front-image -t ${DOCKER_TAG}-front
docker push ${DOCKER_TAG}-front
done
169 changes: 84 additions & 85 deletions .github/workflows/create-release.yml
Original file line number Diff line number Diff line change
@@ -1,92 +1,91 @@
name: 'Create release'

on:
workflow_dispatch:
inputs:
releaseVersion:
description: 'Version de la release (semver)'
required: true
default: 'x.x.x'
workflow_dispatch:
inputs:
releaseVersion:
description: 'Version de la release (semver)'
required: true
default: 'x.x.x'

jobs:
create-release:
runs-on: ubuntu-latest
create-release:
runs-on: ubuntu-latest

steps:
- name: "Calculate versions"
id: calculate-version
run: |
releaseVersion=${{ inputs.releaseVersion }}
# Séparer les parties de la version
major=$(echo "${releaseVersion}" | cut -d. -f1)
minor=$(echo "${releaseVersion}" | cut -d. -f2)
patch=$(echo "${releaseVersion}" | cut -d. -f3)
# Incrémenter la partie patch
patch=$((patch + 1))
# Reconstituer la version snapshot
snapshotVersion="${major}.${minor}.${patch}-SNAPSHOT"
echo "${snapshotVersion}"
echo "snapshotVersion=${snapshotVersion}" >> $GITHUB_OUTPUT
echo "content :"
cat "$GITHUB_OUTPUT"
- name: 'Checkout source code'
uses: 'actions/checkout@v3'
with:
fetch-depth: '0' # to get all the tags locally
# https://stackoverflow.com/questions/67550727/push-event-doesnt-trigger-workflow-on-push-paths-github-actions
token: ${{ secrets.TOKEN_GITHUB_FOR_GITHUB_ACTION }}
steps:
- name: 'Calculate versions'
id: calculate-version
run: |
releaseVersion=${{ inputs.releaseVersion }}
# Séparer les parties de la version
major=$(echo "${releaseVersion}" | cut -d. -f1)
minor=$(echo "${releaseVersion}" | cut -d. -f2)
patch=$(echo "${releaseVersion}" | cut -d. -f3)
# Incrémenter la partie patch
patch=$((patch + 1))
# Reconstituer la version snapshot
snapshotVersion="${major}.${minor}.${patch}-SNAPSHOT"
echo "${snapshotVersion}"
echo "snapshotVersion=${snapshotVersion}" >> $GITHUB_OUTPUT
echo "content :"
cat "$GITHUB_OUTPUT"
- name: 'Checkout source code'
uses: 'actions/checkout@v3'
with:
fetch-depth: '0' # to get all the tags locally
# https://stackoverflow.com/questions/67550727/push-event-doesnt-trigger-workflow-on-push-paths-github-actions
token: ${{ secrets.TOKEN_GITHUB_FOR_GITHUB_ACTION }}


- name: 'Verify release is created only on "main" or "master" git branch'
run: |
CURRENT_GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
echo $CURRENT_GIT_BRANCH
[[ "$CURRENT_GIT_BRANCH" == "main" || "$CURRENT_GIT_BRANCH" == "master" ]] && exit 0 || exit 1
- name: 'Verify version is semver formatted (X.X.X)'
env:
NEW_TAG: ${{ github.event.inputs.releaseVersion }}
NEW_SNAPSHOT_TAG: ${{ steps.calculate-version.outputs.snapshotVersion }}
run: |
echo $NEW_TAG | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$'
echo $NEW_SNAPSHOT_TAG | grep -E '^[0-9]+\.[0-9]+\.[0-9]+-SNAPSHOT$'
- name: 'Verify version is not already used as a git tag'
env:
NEW_TAG: ${{ github.event.inputs.releaseVersion }}
run: |
[[ "$(git tag --list | grep $NEW_TAG)" == "" ]] && exit 0 || exit 1
- name: 'Generate the new version (patch few files + git tag)'
env:
NEW_TAG: ${{ github.event.inputs.releaseVersion }}
NEW_SNAPSHOT_TAG: ${{ steps.calculate-version.outputs.snapshotVersion }}
run: |
# préparation de la release qui va :
# - modifier le numéro de version dans le package.json du projet (et éventuellement dans le README.md ou d'autres fichiers, cf le sed)
# - créer un tag git du numéro de version en question
# - pousser le tout sur le dépôt github et faire la fusion avec la branche develop
git config --global user.email "github-action@noreply"
git config --global user.name "Github Action"
npm config set tag-version-prefix ''
npm config set git-tag-version false
npm version $NEW_TAG
sed -i "s#Version: [0-9]+\.[0-9]+\.[0-9]+#Version: $NEW_TAG#g" README.md
git add .
git commit -m "Version $NEW_TAG"
git tag $NEW_TAG
git push origin $NEW_TAG
git commit --amend -m "Version $NEW_TAG [skip ci]"
git push
# merge la préparation de la nouvelle version sur develop
# (version X.X.X-SNAPSHOT)
git switch develop
git merge main -m "Merge main to develop [skip ci]"
npm version $NEW_SNAPSHOT_TAG
sed -i "s#Version: [0-9]+\.[0-9]+\.[0-9]+#Version: $NEW_SNAPSHOT_TAG#g" README.md
git add .
git commit -m "Version $NEW_SNAPSHOT_TAG [skip ci]"
git push
- name: 'Create the github release'
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ github.event.inputs.releaseVersion }}
generate_release_notes: true
token: ${{ secrets.TOKEN_GITHUB_FOR_GITHUB_ACTION }}
- name: 'Verify release is created only on "main" or "master" git branch'
run: |
CURRENT_GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
echo $CURRENT_GIT_BRANCH
[[ "$CURRENT_GIT_BRANCH" == "main" || "$CURRENT_GIT_BRANCH" == "master" ]] && exit 0 || exit 1
- name: 'Verify version is semver formatted (X.X.X)'
env:
NEW_TAG: ${{ github.event.inputs.releaseVersion }}
NEW_SNAPSHOT_TAG: ${{ steps.calculate-version.outputs.snapshotVersion }}
run: |
echo $NEW_TAG | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$'
echo $NEW_SNAPSHOT_TAG | grep -E '^[0-9]+\.[0-9]+\.[0-9]+-SNAPSHOT$'
- name: 'Verify version is not already used as a git tag'
env:
NEW_TAG: ${{ github.event.inputs.releaseVersion }}
run: |
[[ "$(git tag --list | grep $NEW_TAG)" == "" ]] && exit 0 || exit 1
- name: 'Generate the new version (patch few files + git tag)'
env:
NEW_TAG: ${{ github.event.inputs.releaseVersion }}
NEW_SNAPSHOT_TAG: ${{ steps.calculate-version.outputs.snapshotVersion }}
run: |
# préparation de la release qui va :
# - modifier le numéro de version dans le package.json du projet (et éventuellement dans le README.md ou d'autres fichiers, cf le sed)
# - créer un tag git du numéro de version en question
# - pousser le tout sur le dépôt github et faire la fusion avec la branche develop
git config --global user.email "github-action@noreply"
git config --global user.name "Github Action"
npm config set tag-version-prefix ''
npm config set git-tag-version false
npm version $NEW_TAG
sed -i "s#Version: [0-9]+\.[0-9]+\.[0-9]+#Version: $NEW_TAG#g" README.md
git add .
git commit -m "Version $NEW_TAG"
git tag $NEW_TAG
git push origin $NEW_TAG
git commit --amend -m "Version $NEW_TAG [skip ci]"
git push
# merge la préparation de la nouvelle version sur develop
# (version X.X.X-SNAPSHOT)
git switch develop
git merge main -m "Merge main to develop [skip ci]"
npm version $NEW_SNAPSHOT_TAG
sed -i "s#Version: [0-9]+\.[0-9]+\.[0-9]+#Version: $NEW_SNAPSHOT_TAG#g" README.md
git add .
git commit -m "Version $NEW_SNAPSHOT_TAG [skip ci]"
git push
- name: 'Create the github release'
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ github.event.inputs.releaseVersion }}
generate_release_notes: true
token: ${{ secrets.TOKEN_GITHUB_FOR_GITHUB_ACTION }}
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,3 @@ pnpm-debug.log*
*.njsproj
*.sln
*.sw?
/package-lock.json
6 changes: 3 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
###
# Phase de compilation de l'appli vuejs
FROM node:20.15.0 as build-image
FROM node:20.15.0 AS build-image
WORKDIR /build/
# Mise en cache docker pour le téléchargement
# des dépendances npm (répertoire node_modules/)
COPY ./package*.json /build/
# si on a un node_modules/ local on peut décommenter la ligne suivante pour
# éviter que npm retélécharge toutes les dépendances
#COPY ./node_modules/ /build/node_modules/
RUN npm install
RUN npm ci

# Compilation du TS en JS compilé
# en injectant des placeholders dans les variables .env de vuejs
Expand Down Expand Up @@ -40,7 +40,7 @@ RUN npm run build

###
# Serveur web (nginx) pour exec l'appli vuejs
FROM nginx:1.20.2 as front-image
FROM nginx:1.20.2 AS front-image
COPY --from=build-image /build/dist/ /usr/share/nginx/html.orig/
COPY ./docker/nginx-default.conf /etc/nginx/conf.d/default.conf
COPY ./docker/docker-entrypoint.sh /docker-entrypoint.sh
Expand Down
Loading
Loading