Commit 70d953fa authored by Wohlgemuth, Jason's avatar Wohlgemuth, Jason
Browse files

ci: Transition to musl build

parent 0ed10464
Loading
Loading
Loading
Loading
Loading
+51 −46
Original line number Diff line number Diff line
@@ -3,21 +3,24 @@ default:
    - cpu
  image: rust:bookworm
  before_script:
    - rustup component add rustfmt
    - apt-get update && apt-get install -y libssl-dev pkg-config musl-tools
    - rustup component add clippy
    - rustup target add x86_64-unknown-linux-gnu
    - rustup component add rustfmt
    - rustup target add x86_64-unknown-linux-musl

variables:
  BINARY_NAME: xylem
  CHANGELOG: https://code.ornl.gov/research-enablement/xylem/-/blob/main/CHANGELOG.md
  USER: CI
  EMAIL: wohlgemuthjh@ornl.gov
  EMAIL: $GITLAB_USER_EMAIL
  CI_DEBUG_SERVICES: true

stages:
  - prepare
  - test
  - build
  - docs
  - release
  - docs

prepare-environment:
  stage: prepare
@@ -30,7 +33,6 @@ prepare-environment:
      when: never
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
  script:
    - echo "======== PREPARE JOB ========"
    - echo "PKG_VERSION=$(awk -F ' = ' '$1 ~ /version/ { gsub(/["]/, "", $2); printf("%s",$2) }' Cargo.toml)" >> variables.env
    - echo "PKG_REGISTRY_URL=${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic" >> variables.env
    - echo $PKG_VERSION
@@ -44,7 +46,16 @@ test:
  inherit:
    default: true
    variables: true
  script: make test-ci
  rules:
    - if: $CI_COMMIT_TAG
      when: never
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
      changes:
        - ${BINARY_NAME}-cli/**/*
        - ${BINARY_NAME}-lib/**/*
        - Cargo.toml
  script:
    - make test-ci

build-release:
  stage: build
@@ -56,53 +67,28 @@ build-release:
    - job: test
  script:
    - make build
  artifacts:
    paths:
      - bin/

publish-docs:
  stage: docs
  image: rust
  inherit:
    default: false
    variables: true
  needs:
    - job: test
  rules:
    - if: $CI_COMMIT_TAG
      when: never
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
      changes:
        - xylem-cli/**/*
        - xylem-lib/**/*
        - xylem-py/**/*
  script:
    - make doc
    - git config --global user.name "${USER}"
    - git config --global user.email "${EMAIL}"
    - git clone https://user:${ACCESS_TOKEN}@code-int.ornl.gov/sites/xylem.git site
    - ls
    - ls site
    - rm -rf ./site/html
    - mv target/doc/ ./site/html
    - echo '<meta http-equiv="refresh" content="0; url=xylem_lib/index.html">' > ./site/html/index.html
    - cd site
    - git add html
    - git commit -m "Publish changes"
    - git push
        - Cargo.toml
  artifacts:
    paths:
      - bin/  

publish-release:
publish-release-linux:
  stage: release
  image: registry.gitlab.com/gitlab-org/release-cli:latest
  inherit:
    default: false
    variables: false
    variables: true
  needs:
    - job: prepare-environment
      artifacts: true
    - job: build-release
  script:
    - echo "======== RELEASE JOB ========"
    - echo "Publishing ${BINARY_NAME} v${PKG_VERSION}"
  rules:
    - if: $CI_COMMIT_TAG
      when: never
@@ -110,25 +96,26 @@ publish-release:
      changes:
        - Cargo.toml
  release:
    tag_name: "v$PKG_VERSION" 
    description: "Xylem v$PKG_VERSION"
    tag_name: "v${PKG_VERSION}"
    description: "## ${BINARY_NAME} v${PKG_VERSION}\n> See [CHANGELOG](${CHANGELOG}) for details"
    ref: "$CI_COMMIT_SHA"
    assets:
      links:
        - name: "v$PKG_VERSION"
          url: "${PKG_REGISTRY_URL}/x86_64-unknown-linux-gnu/v${PKG_VERSION}/xylem"
        - name: "${BINARY_NAME} v$PKG_VERSION"
          url: "${PKG_REGISTRY_URL}/x86_64-unknown-linux-musl/v${PKG_VERSION}/${BINARY_NAME}"

upload-binaries:
  stage: release
  image: curlimages/curl:latest
  inherit:
    default: false
    variables: false
    variables: true
  needs:
    - job: prepare-environment
      artifacts: true
    - job: build-release
      artifacts: true
    - job: publish-release-linux
  rules:
    - if: $CI_COMMIT_TAG
      when: never
@@ -136,7 +123,25 @@ upload-binaries:
      changes:
        - Cargo.toml
  script:
    - echo "======== UPLOAD JOB ========"
    - ls -la bin/
    - 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file bin/xylem-v${PKG_VERSION} ${PKG_REGISTRY_URL}/x86_64-unknown-linux-gnu/v${PKG_VERSION}/xylem'
    - 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file bin/${BINARY_NAME}-v${PKG_VERSION} ${PKG_REGISTRY_URL}/x86_64-unknown-linux-musl/v${PKG_VERSION}/${BINARY_NAME}'

publish-docs:
  stage: docs
  image: rust
  inherit:
    default: false
    variables: true
  rules:
    - if: $CI_COMMIT_TAG
      when: never
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
      changes:
        - ${BINARY_NAME}-cli/**/*.rs
        - ${BINARY_NAME}-lib/**/*.rs
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
      when: manual
  script:
    - git config --global user.name "${USER}"
    - git config --global user.email "${EMAIL}"
    - make publish-docs
+1 −1
Original line number Diff line number Diff line
@@ -30,5 +30,5 @@ tracing-subscriber = { version = "0.3.18", features = ["env-filter"]}
uriparse = "0.6.4"

[workspace.metadata.cross.build]
default-target = "x86_64-unknown-linux-gnu"
default-target = "x86_64-unknown-linux-musl"
debug-assertions = true