build: sync common files from github_organization_management repository #1956
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: CI | |
on: | |
push: | |
branches: | |
- master | |
- integration | |
- experimental* | |
- release_* | |
- ci* | |
- pci* | |
tags: | |
- v* | |
pull_request: | |
repository_dispatch: | |
types: | |
- metwork-trigger* | |
env: | |
DOCKER_RUN_OPTIONS: "-v ${{ github.workspace }}:/src -e GITHUB_REF -e GITHUB_RUN_NUMBER -e GITHUB_SHA -e GITHUB_REPOSITORY" | |
WORKFLOW_SCRIPTS_DIR: .github/workflows | |
DOCKER_WORKFLOW_SCRIPTS_DIR: /src/.github/workflows | |
PAYLOAD_BRANCH: ${{ github.event.client_payload.branch}} | |
PAYLOAD_OS: ${{ github.event.client_payload.os}} | |
jobs: | |
ci_build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
ref: ${{ github.event.client_payload.branch || github.ref }} | |
- name: set variables | |
id: SetVariables | |
run: | | |
${WORKFLOW_SCRIPTS_DIR}/set_variables.sh | |
- name: debug env | |
run: | | |
env | |
- name: bootstrap | |
if: ${{ steps.SetVariables.outputs.branch != 'null' }} | |
run: | | |
TARGET_DIR=${{ steps.SetVariables.outputs.target_dir }} | |
BRANCH=${{ steps.SetVariables.outputs.branch }} | |
OS_VERSION=${{ steps.SetVariables.outputs.os }} | |
TAG=${{ steps.SetVariables.outputs.tag }} | |
DEP_DIR=${{ steps.SetVariables.outputs.dep_dir }} | |
BUILDIMAGE=${{ steps.SetVariables.outputs.buildimage }} | |
docker pull ${BUILDIMAGE} | |
docker run ${DOCKER_RUN_OPTIONS} -e TARGET_DIR=${TARGET_DIR} -e BRANCH=${BRANCH} -e TAG=${TAG} -e DEP_DIR=${DEP_DIR} -e OS_VERSION=${OS_VERSION} --rm ${BUILDIMAGE} /bin/bash -c "${DOCKER_WORKFLOW_SCRIPTS_DIR}/bootstrap_ci.sh" | |
- name: build | |
if: ${{ steps.SetVariables.outputs.branch != 'null' }} | |
id: BuildStep | |
run: | | |
TARGET_DIR=${{ steps.SetVariables.outputs.target_dir }} | |
BRANCH=${{ steps.SetVariables.outputs.branch }} | |
OS_VERSION=${{ steps.SetVariables.outputs.os }} | |
TAG=${{ steps.SetVariables.outputs.tag }} | |
DEP_BRANCH=${{ steps.SetVariables.outputs.dep_branch }} | |
BUILDIMAGE=${{ steps.SetVariables.outputs.buildimage }} | |
docker pull ${BUILDIMAGE} | |
docker run ${DOCKER_RUN_OPTIONS} -e TARGET_DIR=${TARGET_DIR} -e BRANCH=${BRANCH} -e DEP_BRANCH=${DEP_BRANCH} -e TAG=${TAG} -e OS_VERSION=${OS_VERSION} --rm ${BUILDIMAGE} /bin/bash -c "${DOCKER_WORKFLOW_SCRIPTS_DIR}/build.sh" | |
cat ${{ github.workspace }}/github_output >> ${GITHUB_OUTPUT} | |
- name: publish buildlogs | |
if: ${{ github.event_name != 'pull_request' && steps.SetVariables.outputs.branch != 'null' }} | |
uses: thebaptiste/ssh-scp-ssh-pipelines@metwork | |
env: | |
REMOTE: ${{ steps.SetVariables.outputs.buildlog_dir }} | |
LOCAL: ${{ github.workspace }}/buildlogs | |
with: | |
host: ${{ secrets.METWORKPUB_HOST }} | |
user: ${{ secrets.METWORKPUB_USERNAME }} | |
pass: ${{ secrets.METWORKPUB_PASSWORD }} | |
port: 22 | |
first_ssh: | | |
mkdir -p ${REMOTE} | |
scp: | | |
'${LOCAL}/*' => ${REMOTE} | |
- name: integration tests | |
if: ${{ steps.SetVariables.outputs.branch != 'null' && steps.BuildStep.outputs.bypass == 'false' }} | |
run: | | |
TESTIMAGE=${{ steps.SetVariables.outputs.testimage }} | |
DEP_BRANCH=${{ steps.SetVariables.outputs.dep_branch }} | |
BRANCH=${{ steps.SetVariables.outputs.branch }} | |
OS_VERSION=${{ steps.SetVariables.outputs.os }} | |
docker pull ${TESTIMAGE} | |
docker run ${DOCKER_RUN_OPTIONS} -e DEP_BRANCH=${DEP_BRANCH} -e BRANCH=${BRANCH} -e OS_VERSION=${OS_VERSION} --rm ${TESTIMAGE} /bin/bash -c "${DOCKER_WORKFLOW_SCRIPTS_DIR}/integration_tests.sh" | |
- name: publish rpms | |
if: ${{ github.event_name != 'pull_request' && steps.BuildStep.outputs.bypass == 'false' && steps.SetVariables.outputs.branch != 'null' }} | |
uses: thebaptiste/ssh-scp-ssh-pipelines@metwork | |
env: | |
REMOTE: ${{ steps.SetVariables.outputs.rpm_dir }} | |
LOCAL: ${{ github.workspace }}/rpms | |
with: | |
host: ${{ secrets.METWORKPUB_HOST }} | |
user: ${{ secrets.METWORKPUB_USERNAME }} | |
pass: ${{ secrets.METWORKPUB_PASSWORD }} | |
port: 22 | |
first_ssh: | | |
mkdir -p ${REMOTE} | |
scp: | | |
'${LOCAL}/metwork-*.rpm' => ${REMOTE} | |
- name: createrepo | |
if: ${{ github.event_name != 'pull_request' && steps.BuildStep.outputs.bypass == 'false' && steps.SetVariables.outputs.branch != 'null' }} | |
uses: thebaptiste/ssh-scp-ssh-pipelines@metwork | |
env: | |
REMOTE: ${{ steps.SetVariables.outputs.rpm_dir }} | |
LOCAL: ${{ github.workspace }}/.github/workflows | |
with: | |
host: ${{ secrets.METWORKPUB_HOST }} | |
user: ${{ secrets.METWORKPUB_USERNAME }} | |
pass: ${{ secrets.METWORKPUB_PASSWORD }} | |
port: 22 | |
scp: | | |
'${LOCAL}/createrepo.sh' => ${REMOTE} | |
last_ssh: | | |
cd ${REMOTE} | |
chmod +x createrepo.sh | |
./createrepo.sh . | |
- name: publish doc | |
if: ${{ github.event_name != 'pull_request' && steps.BuildStep.outputs.bypass == 'false' && steps.SetVariables.outputs.branch != 'null' }} | |
uses: thebaptiste/ssh-scp-ssh-pipelines@metwork | |
env: | |
REMOTE: ${{ steps.SetVariables.outputs.doc_dir }} | |
LOCAL: ${{ github.workspace }}/html_doc | |
with: | |
host: ${{ secrets.METWORKPUB_HOST }} | |
user: ${{ secrets.METWORKPUB_USERNAME }} | |
pass: ${{ secrets.METWORKPUB_PASSWORD }} | |
port: 22 | |
first_ssh: | | |
rm -rf ${REMOTE} | |
mkdir -p ${REMOTE} | |
scp: | | |
'${LOCAL}/*' => ${REMOTE} | |