name: Build on: push: branches: - main - master workflow_dispatch: jobs: build: runs-on: ubuntu-latest env: REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }} steps: - name: Checkout uses: actions/checkout@v4 # Replace this runtime setup block with the stack this project uses. # Examples: # - Node: actions/setup-node@v4 # - Python: actions/setup-python@v5 # - Go: actions/setup-go@v5 # - Rust: dtolnay/rust-toolchain@stable - name: Setup runtime run: echo "Configure PROJECT_STACK runtime here" - name: Install dependencies run: INSTALL_COMMAND - name: Audit dependencies run: AUDIT_COMMAND - name: Lint run: LINT_COMMAND - name: Test run: TEST_COMMAND - name: Build run: BUILD_COMMAND - name: Upload artifacts uses: actions/upload-artifact@v3 with: name: PROJECT_NAME-artifacts path: | ARTIFACT_OUTPUT_DIRECTORY/** - name: Publish latest package if: ${{ env.REGISTRY_TOKEN != '' }} shell: bash run: | app_version="PROJECT_VERSION" package_version="${app_version}-${GITHUB_SHA::7}" package_name="PACKAGE_NAME" repository_owner="${GITHUB_REPOSITORY_OWNER:-${GITHUB_REPOSITORY%%/*}}" if [ -z "${repository_owner}" ] || [ "${repository_owner}" = "${GITHUB_REPOSITORY}" ]; then repository_owner="REPOSITORY_OWNER" fi gitea_server="${GITHUB_SERVER_URL:-https://git.wilkensxl.de}" gitea_server="${gitea_server%/}" package_dir="package-registry" latest_url="${gitea_server}/api/packages/${repository_owner}/generic/${package_name}/latest" mapfile -d '' artifacts < <(find ARTIFACT_OUTPUT_DIRECTORY -maxdepth 1 -type f -print0) if [ "${#artifacts[@]}" -eq 0 ]; then echo "No package artifacts found in ARTIFACT_OUTPUT_DIRECTORY" exit 1 fi rm -rf "${package_dir}" mkdir -p "${package_dir}/versioned" "${package_dir}/latest" for artifact in "${artifacts[@]}"; do extension="" base_name="$(basename "$artifact")" stem="$base_name" if [[ "$base_name" == *.* ]]; then extension=".${base_name##*.}" stem="${base_name%.*}" fi safe_stem="$(echo "$stem" | tr -cs 'A-Za-z0-9._-' '-' | sed 's/^-//; s/-$//')" safe_name="${safe_stem}-${package_version}${extension}" cp "$artifact" "${package_dir}/versioned/${safe_name}" curl --fail-with-body \ --user "${repository_owner}:${REGISTRY_TOKEN}" \ --upload-file "${package_dir}/versioned/${safe_name}" \ "${gitea_server}/api/packages/${repository_owner}/generic/${package_name}/${package_version}/${safe_name}" done curl --silent --show-error --user "${repository_owner}:${REGISTRY_TOKEN}" --request DELETE "${latest_url}" || true for artifact in "${artifacts[@]}"; do extension="" base_name="$(basename "$artifact")" stem="$base_name" if [[ "$base_name" == *.* ]]; then extension=".${base_name##*.}" stem="${base_name%.*}" fi safe_stem="$(echo "$stem" | tr -cs 'A-Za-z0-9._-' '-' | sed 's/^-//; s/-$//')" safe_name="${safe_stem}-latest${extension}" cp "$artifact" "${package_dir}/latest/${safe_name}" curl --fail-with-body \ --user "${repository_owner}:${REGISTRY_TOKEN}" \ --upload-file "${package_dir}/latest/${safe_name}" \ "${latest_url}/${safe_name}" done