Skip to content

Merge pull request #4159 from hove-io/fix/NAV-2466 #26

Merge pull request #4159 from hove-io/fix/NAV-2466

Merge pull request #4159 from hove-io/fix/NAV-2466 #26

name: Build Navitia Dockers (Release)
on:
push:
tags:
- '*'
env:
jessie_version: debian8
bullseye_version: debian11
SBX_ECR_REGISTRY_FRONT: "051314639660.dkr.ecr.eu-west-1.amazonaws.com"
PRD_ECR_REGISTRY: "162230498103.dkr.ecr.eu-west-1.amazonaws.com"
REGION: "eu-west-1"
jobs:
common_variables:
name: Common variables
runs-on: [self-hosted, corefront, sandbox]
outputs:
NAVITIA_TAG: ${{ steps.choose_navitia_tag.outputs.navitia_tag }}
steps:
- name: force chown to avoid errors
run: sudo chown -R $USER:$USER .
- name: Install dependencies
run: |
sudo apt update && sudo apt install -y --force-yes httpie
- name: Generate github private access token
id: ci-core-app-token
uses: getsentry/[email protected]
with:
app_id: ${{ secrets.CI_CORE_APP_ID }}
private_key: ${{ secrets.CI_CORE_APP_PEM }}
- name: Checkout navitia
id: checkout_navitia
uses: actions/checkout@v3
with:
submodules: recursive
token: ${{ steps.ci-core-app-token.outputs.token }}
# we need entire history for tags
fetch-depth: 0
- name: Choose navitia tag
id: choose_navitia_tag
run: |
version=$(git describe --tags)
echo "navitia_tag=$version" >> $GITHUB_OUTPUT
- name: failure notification
if: failure()
run: |
echo '{"text":":warning: Github Actions: workflow dockers_builder_release Job init common variables failed !"}' | http --json POST ${{secrets.SLACK_NAVITIA_TEAM_URL}}
front_bullseye_builder:
runs-on: [self-hosted, corefront, sandbox]
name: Front Bullseye builder (Release)
needs: common_variables
steps:
- name: force chown to avoid errors
run: sudo chown -R $USER:$USER .
- name: Install dependencies
run: |
sudo apt update && sudo apt install -y httpie
- name: Generate github private access token
id: ci-core-app-token
uses: getsentry/[email protected]
with:
app_id: ${{ secrets.CI_CORE_APP_ID }}
private_key: ${{ secrets.CI_CORE_APP_PEM }}
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
token: ${{ steps.ci-core-app-token.outputs.token }}
# we need entire history for tags
fetch-depth: 0
# - name: Restore ccache
# uses: hendrikmuhs/[email protected]
# with:
# key: build_dockers
# max-size: 2000M
- name: Login to Amazon ECR SBX
uses: aws-actions/amazon-ecr-login@v1
env:
AWS_REGION: eu-west-1
- name: Login to Amazon ECR Shared
uses: aws-actions/amazon-ecr-login@v1
env:
AWS_REGION: eu-west-1
with:
registries: "162230498103"
- name: Create builder docker
run: |
docker build -f docker/${{env.bullseye_version}}/Dockerfile-builder -t navitia/builder .
- name: Build navitia
run: |
docker run -v `pwd`:/navitia/navitia/ navitia/builder
- name: Create navitia images
run: |
echo "********* Building Jormungandr ***************"
docker build -t ${SBX_ECR_REGISTRY_FRONT}/jormungandr:no_config_${{ needs.common_variables.outputs.NAVITIA_TAG }} -f docker/${{env.bullseye_version}}/Dockerfile-jormungandr .
- name: Push images on SBX ECR
run: |
echo "********* Push Jormungandr ***************"
docker push ${SBX_ECR_REGISTRY_FRONT}/jormungandr:no_config_${{ needs.common_variables.outputs.NAVITIA_TAG }}
- name: failure notification
if: failure()
run: |
echo '{"text":":warning: Github Actions: workflow dockers_builder_release Job front_bullseye_builder is failed !"}' | http --json POST ${{secrets.SLACK_NAVITIA_TEAM_URL}}
front_jessie_builder:
runs-on: [self-hosted, corefront, sandbox]
name: Front Jessie builder (Release)
needs: common_variables
steps:
- name: force chown to avoid errors
run: sudo chown -R $USER:$USER .
- name: Install dependencies
run: |
sudo apt update && sudo apt install -y httpie
- name: Generate github private access token
id: ci-core-app-token
uses: getsentry/[email protected]
with:
app_id: ${{ secrets.CI_CORE_APP_ID }}
private_key: ${{ secrets.CI_CORE_APP_PEM }}
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
token: ${{ steps.ci-core-app-token.outputs.token }}
# we need entire history for tags
fetch-depth: 0
# - name: Restore ccache
# uses: hendrikmuhs/[email protected]
# with:
# key: build_dockers
# max-size: 2000M
- name: Login to Amazon ECR Shared
uses: aws-actions/amazon-ecr-login@v1
env:
AWS_REGION: eu-west-1
with:
registries: "162230498103"
- name: Create master docker
run: |
docker build -f docker/${{env.jessie_version}}/Dockerfile-master -t navitia/master .
docker build -f docker/${{env.jessie_version}}/Dockerfile-builder -t navitia/builder .
- name: Build packages in master docker
# Will build navitia-*.deb packages in current folder
run: docker run -v `pwd`:/build/navitia/ navitia/builder
- name: Create navitia images
run: |
# Tyr-web
component_tag=${PRD_ECR_REGISTRY}/navitia-tyr-web-tyr-web:${{ needs.common_variables.outputs.NAVITIA_TAG }}
docker build -t ${component_tag} -f docker/${{env.jessie_version}}/Dockerfile-tyr-web .
- name: Push images on PRD ECR
run: |
# Tyr-web
component_tag=${PRD_ECR_REGISTRY}/navitia-tyr-web-tyr-web:${{ needs.common_variables.outputs.NAVITIA_TAG }}
docker push ${component_tag}
- name: failure notification
if: failure()
run: |
echo '{"text":":warning: Github Actions: workflow dockers_builder_release Job front_jessie_builder is failed !"}' | http --json POST ${{secrets.SLACK_NAVITIA_TEAM_URL}}
backend_jessie_builder:
runs-on: [self-hosted, kraken, sandbox]
name: Backend Jessie builder (Release)
needs: common_variables
steps:
- name: force chown to avoid errors
run: sudo chown -R $USER:$USER .
- name: Install dependencies
run: |
sudo apt update && sudo apt install -y zip httpie curl python3 python3-pip
- name: Generate github private access token
id: ci-core-app-token
uses: getsentry/[email protected]
with:
app_id: ${{ secrets.CI_CORE_APP_ID }}
private_key: ${{ secrets.CI_CORE_APP_PEM }}
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
token: ${{ steps.ci-core-app-token.outputs.token }}
# we need entire history for tags
fetch-depth: 0
- name: Checkout core_team_ci_tools
uses: actions/checkout@v3
with:
repository : 'hove-io/core_team_ci_tools'
path: core_team_ci_tools
token: ${{ steps.ci-core-app-token.outputs.token }}
- name: Setup core_team_ci_tools python environment
run: |
pip install -r core_team_ci_tools/github_artifacts/requirements.txt --user
- name: Download mimirsbrunn package
run: |
mimirsbrunn_package="debian-package-release.zip"
python3 core_team_ci_tools/github_artifacts/github_artifacts.py \
-o hove-io \
-r mimirsbrunn \
-t ${{ steps.ci-core-app-token.outputs.token }} \
-w release7.yml \
-a $mimirsbrunn_package \
--output-dir .
unzip -qo $mimirsbrunn_package
rm -f $mimirsbrunn_package
- name: Download cosmogony2cities package
run: |
cosmogony2cities_package="package-${{env.jessie_version}}.zip"
python3 core_team_ci_tools/github_artifacts/github_artifacts.py \
-o hove-io \
-r cosmogony2cities \
-t ${{ steps.ci-core-app-token.outputs.token }} \
-w build_package.yml \
-a $cosmogony2cities_package \
--output-dir .
unzip -qo $cosmogony2cities_package
rm -f $cosmogony2cities_package
- name: Download mimir-config package
run: |
conf_mimir_package="debian-package-release.zip"
python3 core_team_ci_tools/github_artifacts/github_artifacts.py \
-o hove-io \
-r mimirsbrunn-config \
-t ${{ steps.ci-core-app-token.outputs.token }} \
-w release.yml \
-a $conf_mimir_package \
-b main \
--skip-check-artifacts-size \
--output-dir .
unzip -qo $conf_mimir_package
rm -f $conf_mimir_package
# - name: Restore ccache
# uses: hendrikmuhs/[email protected]
# with:
# key: build_dockers
# max-size: 2000M
- name: Login to Amazon ECR Shared
uses: aws-actions/amazon-ecr-login@v1
env:
AWS_REGION: eu-west-1
with:
registries: "162230498103"
- name: Create master docker
run: |
docker build -f docker/${{env.jessie_version}}/Dockerfile-master -t navitia/master .
docker build -f docker/${{env.jessie_version}}/Dockerfile-builder -t navitia/builder .
- name: Build packages in master docker
# Will build navitia-*.deb packages in current folder
run: docker run -v `pwd`:/build/navitia/ navitia/builder
- name: Create images
run: |
# Kraken
component_tag=${PRD_ECR_REGISTRY}/navitia-kraken-kraken:${{ needs.common_variables.outputs.NAVITIA_TAG }}
docker build -t ${component_tag} -f docker/${{env.jessie_version}}/Dockerfile-kraken .
# Tyr-beat
component_tag=${PRD_ECR_REGISTRY}/navitia-tyr-tyrbeat:${{ needs.common_variables.outputs.NAVITIA_TAG }}
docker build -t ${component_tag} -f docker/${{env.jessie_version}}/Dockerfile-tyr-beat .
# Tyr-worker
component_tag=${PRD_ECR_REGISTRY}/navitia-tyr-tyrworker:${{ needs.common_variables.outputs.NAVITIA_TAG }}
docker build -t ${component_tag} --build-arg GITHUB_TOKEN=${{ steps.ci-core-app-token.outputs.token }} -f docker/${{env.jessie_version}}/Dockerfile-tyr-worker .
- name: Push on PRD ECR
run: |
# Kraken
component_tag=${PRD_ECR_REGISTRY}/navitia-kraken-kraken:${{ needs.common_variables.outputs.NAVITIA_TAG }}
docker push ${component_tag}
# Tyr-beat
component_tag=${PRD_ECR_REGISTRY}/navitia-tyr-tyrbeat:${{ needs.common_variables.outputs.NAVITIA_TAG }}
docker push ${component_tag}
# Tyr-worker
component_tag=${PRD_ECR_REGISTRY}/navitia-tyr-tyrworker:${{ needs.common_variables.outputs.NAVITIA_TAG }}
docker push ${component_tag}
- name: failure notification
if: failure()
run: |
echo '{"text":":warning: Github Actions: workflow dockers_builder_release Job backend_jessie_builder is failed !"}' | http --json POST ${{secrets.SLACK_NAVITIA_TEAM_URL}}
- name: failure notification
if: success()
run: |
echo '{"text":":octopus: Github Actions: workflow build_dockers succeeded. New navitia ${{ needs.common_variables.outputs.NAVITIA_TAG }} images available."}' | http --json POST ${{secrets.SLACK_NAVITIA_TEAM_URL}}
publish_aws:
runs-on: [self-hosted, corefront, sandbox]
name: Aws Dispatch (Release)
needs: [front_jessie_builder, front_bullseye_builder, backend_jessie_builder, common_variables]
steps:
- name: force chown to avoid errors
run: sudo chown -R $USER:$USER .
- name: Install dependencies
run: |
sudo apt update && sudo apt install -y httpie
- name: Generate token for aws images
id: app-token
uses: getsentry/[email protected]
with:
app_id: ${{ secrets.GA_OS_WORKFLOW_TRIGGER_APP_ID }}
private_key: ${{ secrets.GA_OS_WORKFLOW_TRIGGER_APP_PEM }}
- name: Generate github private access token
id: ci-core-app-token
uses: getsentry/[email protected]
with:
app_id: ${{ secrets.CI_CORE_APP_ID }}
private_key: ${{ secrets.CI_CORE_APP_PEM }}
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
token: ${{ steps.ci-core-app-token.outputs.token }}
# we need entire history for tags
fetch-depth: 0
- name: Aws Dispatch Frontend
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ steps.app-token.outputs.token }}
repository: hove-io/corefront-aws-assets
event-type: build-trigger
client-payload: '{"branch": "release", "tag": "${{ needs.common_variables.outputs.NAVITIA_TAG }}"}'
- name: failure notification
if: failure()
run: |
echo '{"text":":warning: Github Actions: dockers_builder_release the job publish_aws is failed !"}' | http --json POST ${{secrets.SLACK_NAVITIA_TEAM_URL}}