Skip to content

Release Candidate

Release Candidate #12

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: Release Candidate
# We build release candidates using GitHub actions when a rc* tag is pushed.
# Once the vote passes for a release candidate we promote that candidate to the
# final release--we do not do a new build for final release tags. When
# triggered via workflow_dispatch the release candidate action disables
# publishing regardless of the publish setting--it should be used for testing only
on:
push:
tags:
- 'v*-rc*'
workflow_dispatch:
jobs:
release-candidate:
name: Release Candidate ${{ github.ref_name }}
runs-on: ubuntu-22.04
env:
AR: llvm-ar-14
CC: clang
LANG: en_US.UTF-8
steps:
- name: Checkout Repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: ASF Release Candidate
id: rc
uses: apache/daffodil-infrastructure/actions/release-candidate@main
with:
tlp_dir: 'daffodil'
project_name: 'Apache Daffodil'
project_id: 'daffodil'
gpg_signing_key: ${{ secrets.DAFFODIL_GPG_SECRET_KEY }}
svn_username: ${{ secrets.DAFFODIL_SVN_DEV_USERNAME }}
svn_password: ${{ secrets.DAFFODIL_SVN_DEV_PASSWORD }}
nexus_username: ${{ secrets.NEXUS_STAGE_DEPLOYER_USER }}
nexus_password: ${{ secrets.NEXUS_STAGE_DEPLOYER_PW }}
publish: true
- name: Install Dependencies
run: |
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install -y libmxml-dev rpm wine32 winetricks
sudo locale-gen $LANG
INNO_SETUP_EXE="innosetup-6.4.1.exe"
EXPECTED_SHA=5dfc9999e2feafa28754baaf80cf73ac96414228b94a1132a919554a822c892810197305d9355885b9ac408c214691cd45279fc2df3a891fbebc4f8eb86bac87
curl -L https://files.jrsoftware.org/is/6/$INNO_SETUP_EXE -o $INNO_SETUP_EXE
echo "$EXPECTED_SHA $INNO_SETUP_EXE" | sha512sum --quiet -c -
winetricks -q win10
xvfb-run wine $INNO_SETUP_EXE /VERYSILENT /SUPPRESSMSGBOXES /TASKS= '/DIR=C:\\Program Files (x86)\\Inno Setup 6'
rm $INNO_SETUP_EXE
- name: Setup Java
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
with:
distribution: temurin
java-version: 17
cache: sbt
# Publish jars to a staging maven repository and write helper binary
# artifacts to the artifact directory
#
# Note that if we are not actually publishing (the publish setting is
# false, this is a snapshot, etc.) then the release candidate action will
# have configured the system so publishSigned just goes to a local maven
# repository so nothing is published externally
- name: Create Binary Artifacts
run: |
sbt \
+compile \
+publishSigned \
daffodil-cli/Rpm/packageBin \
daffodil-cli/Universal/packageBin \
daffodil-cli/Universal/packageZipTarball \
daffodil-cli/packageWindowsBin
ARTIFACT_BIN_DIR=${{ steps.rc.outputs.artifact_dir }}/bin
mkdir -p $ARTIFACT_BIN_DIR
cp daffodil-cli/target/universal/apache-daffodil-*.tgz $ARTIFACT_BIN_DIR/
cp daffodil-cli/target/universal/apache-daffodil-*.zip $ARTIFACT_BIN_DIR/
cp daffodil-cli/target/rpm/RPMS/noarch/apache-daffodil-*.rpm $ARTIFACT_BIN_DIR/
cp daffodil-cli/target/windows/apache-daffodil-*.exe $ARTIFACT_BIN_DIR/
chmod -x $ARTIFACT_BIN_DIR/*.exe